Простой клиент текста в речь для Azure TTS API. ?
Начиная с версии 6.0.0, aspeak по умолчанию использует Retfful API Azure TTS. Если вы хотите использовать API WebSocket, вы можете указать --mode websocket при вызове aspeak или SET mode = "websocket" в разделе auth вашего профиля.
Начиная с версии 4.0.0, aspeak переписывается в Rust. Старая версия Python доступна в филиале python .
Вы можете подписаться на учетную запись Azure, а затем выбрать план оплаты по мере необходимости (или придерживаться бесплатного уровня). Бесплатный уровень включает квоту составляет 0,5 миллиона символов в месяц, бесплатно.
Пожалуйста, обратитесь к разделу аутентификации, чтобы узнать, как настроить аутентификацию для Aspeak.
Загрузите последний релиз отсюда.
После загрузки извлеките архив, и вы получите двоичный исполняемый файл.
Вы можете поместить его в каталог, который находится в переменной среды вашего PATH , чтобы вы могли запускать его из любого места.
Из V4.1.0 вы можете установить aspeak-bin из AUR.
Установка из PYPI также установит привязку Python aspeak для вас. Проверьте использование библиотеки#Python для получения дополнительной информации об использовании привязки Python.
pip install -U aspeak==6.0.0Теперь предварительно построенные колеса доступны только для архитектуры x86_64. Из -за некоторых технических проблем я еще не загрузил распределение источника в PYPI. Таким образом, чтобы построить колесо из источника, вам необходимо следовать инструкциям в установке из источника.
Из -за многих проблем совместимости, колеса для Linux недоступны на PYPI. (Но вы все равно можете построить их из источника.)
Самый простой способ установить aspeak из источника - использовать груз:
cargo install aspeak -F binary В качестве альтернативы, вы также можете установить aspeak из AUR.
Чтобы построить колесо Python, вам нужно сначала установить maturin :
pip install maturin После клонирования репозитория и cd в каталог вы можете построить колесо, работая:
maturin build --release --strip -F python --bindings pyo3 --interpreter python --manifest-path Cargo.toml --out dist-pyo3
maturin build --release --strip --bindings bin -F binary --interpreter python --manifest-path Cargo.toml --out dist-bin
bash merge-wheel.bash Если все пойдет хорошо, вы получите колесный файл в dist каталоге.
Запустите aspeak help , чтобы увидеть помощь справочником.
Запустите aspeak help <subcommand> чтобы увидеть справочное сообщение подкоманда.
Параметры аутентификации должны быть размещены перед любым подкомандом.
Например, чтобы использовать ключ подписки и официальную конечную точку, обозначенную регионом, запустите следующую команду:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " Если вы используете пользовательскую конечную точку, вы можете использовать опцию --endpoint вместо --region .
Чтобы избежать повторения, вы можете хранить детали аутентификации в своем профиле Aspeak. Прочитайте следующий раздел для более подробной информации.
Из V5.2.0 вы также можете установить секреты аутентификации через следующие переменные среды:
ASPEAK_AUTH_KEY для аутентификации с использованием ключа подпискиASPEAK_AUTH_TOKEN для аутентификации с использованием токена авторизацииИз V4.3.0 вы можете позволить Aspeak использовать прокси -сервер для подключения к конечной точке. На данный момент поддерживаются только прокси HTTP и Socks5 (пока не поддерживает HTTPS). Например:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " Aspeak также уважает переменную среды HTTP_PROXY (или http_proxy ).
Aspeak V4 представляет концепцию профилей. Профиль - это файл конфигурации, в котором вы можете указать значения по умолчанию для параметров командной строки.
Запустите следующую команду, чтобы создать свой профиль по умолчанию:
$ aspeak config initЧтобы редактировать профиль, запустите:
$ aspeak config editЕсли у вас проблемы с запуском вышеуказанной команды, вы можете редактировать профиль вручную:
Кулак Получите путь профиля, работая:
$ aspeak config whereЗатем отредактируйте файл с вашим любимым текстовым редактором.
Профиль - это файл TOML. Профиль по умолчанию выглядит так:
Проверьте комментарии в файле конфигурации для получения дополнительной информации о доступных параметрах.
# Profile for aspeak
# GitHub: https://github.com/kxxt/aspeak
# Output verbosity
# 0 - Default
# 1 - Verbose
# The following output verbosity levels are only supported on debug build
# 2 - Debug
# >=3 - Trace
verbosity = 0
#
# Authentication configuration
#
[ auth ]
# Endpoint for TTS
# endpoint = "wss://eastus.tts.speech.microsoft.com/cognitiveservices/websocket/v1"
# Alternatively, you can specify the region if you are using official endpoints
# region = "eastus"
# Synthesizer Mode, "rest" or "websocket"
# mode = "rest"
# Azure Subscription Key
# key = "YOUR_KEY"
# Authentication Token
# token = "Your Authentication Token"
# Extra http headers (for experts)
# headers = [["X-My-Header", "My-Value"], ["X-My-Header2", "My-Value2"]]
# Proxy
# proxy = "socks5://127.0.0.1:7890"
# Voice list API url
# voice_list_api = "Custom voice list API url"
#
# Configuration for text subcommand
#
[ text ]
# Voice to use. Note that it takes precedence over the locale
# voice = "en-US-JennyNeural"
# Locale to use
locale = " en-US "
# Rate
# rate = 0
# Pitch
# pitch = 0
# Role
# role = "Boy"
# Style, "general" by default
# style = "general"
# Style degree, a floating-point number between 0.1 and 2.0
# style_degree = 1.0
#
# Output Configuration
#
[ output ]
# Container Format, Only wav/mp3/ogg/webm is supported.
container = " wav "
# Audio Quality. Run `aspeak list-qualities` to see available qualities.
#
# If you choose a container format that does not support the quality level you specified here,
# we will automatically select the closest level for you.
quality = 0
# Audio Format(for experts). Run `aspeak list-formats` to see available formats.
# Note that it takes precedence over container and quality!
# format = "audio-16khz-128kbitrate-mono-mp3" Если вы хотите использовать профиль, отличный от вашего профиля по умолчанию, вы можете использовать аргумент --profile :
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " Если вы хотите временно отключить профиль, вы можете использовать аргумент --no-profile :
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : скорость разговора голоса.0.5 ), значение будет умножено на 100% и составит 50.00% .x-slow , slow , medium , fast , x-fast , default .+10% .f postfix), 1.2f :1f не приводит к изменению скорости. Значение 0.5f приводит к снижению скорости. Значение 3f приводит к утроиванию ставки.pitch : шаг голоса.-0.5 ), значение будет умножено на 100% и составит -50.00% .x-low , low , medium , high , x-high , default .+10% .-2st или +80Hz ):600HzПримечание : необоснованные высокие/низкие значения будут подключены к разумным значениям Azure Cognitive Services.
Следующие примеры предполагают, что вы уже настроили аутентификацию в своем профиле.
$ aspeak text " Hello, world " $ aspeak ssml << EOF
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Hello, world!</voice></speak>
EOF $ aspeak list-voices$ aspeak list-voices -l zh-CN$ aspeak list-voices -v en-US-SaraNeural Microsoft Server Speech Text to Speech Voice (en-US, SaraNeural)
Display name: Sara
Local name: Sara @ en-US
Locale: English (United States)
Gender: Female
ID: en-US-SaraNeural
Voice type: Neural
Status: GA
Sample rate: 48000Hz
Words per minute: 157
Styles: ["angry", "cheerful", "excited", "friendly", "hopeful", "sad", "shouting", "terrified", "unfriendly", "whispering"]
$ aspeak text " Hello, world " -o output.wav Если вы предпочитаете mp3 / ogg / webm, вы можете использовать опцию -c mp3 / -c ogg / -c webm .
$ aspeak text " Hello, world " -o output.mp3 -c mp3
$ aspeak text " Hello, world " -o output.ogg -c ogg
$ aspeak text " Hello, world " -o output.webm -c webm$ aspeak list-qualities Qualities for MP3:
3: audio-48khz-192kbitrate-mono-mp3
2: audio-48khz-96kbitrate-mono-mp3
-3: audio-16khz-64kbitrate-mono-mp3
1: audio-24khz-160kbitrate-mono-mp3
-2: audio-16khz-128kbitrate-mono-mp3
-4: audio-16khz-32kbitrate-mono-mp3
-1: audio-24khz-48kbitrate-mono-mp3
0: audio-24khz-96kbitrate-mono-mp3
Qualities for WAV:
-2: riff-8khz-16bit-mono-pcm
1: riff-24khz-16bit-mono-pcm
0: riff-24khz-16bit-mono-pcm
-1: riff-16khz-16bit-mono-pcm
Qualities for OGG:
0: ogg-24khz-16bit-mono-opus
-1: ogg-16khz-16bit-mono-opus
1: ogg-48khz-16bit-mono-opus
Qualities for WEBM:
0: webm-24khz-16bit-mono-opus
-1: webm-16khz-16bit-mono-opus
1: webm-24khz-16bit-24kbps-mono-opus
$ aspeak list-formats amr-wb-16000hz
audio-16khz-128kbitrate-mono-mp3
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
raw-8khz-16bit-mono-pcm
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
riff-16khz-16bit-mono-pcm
riff-22050hz-16bit-mono-pcm
riff-24khz-16bit-mono-pcm
riff-44100hz-16bit-mono-pcm
riff-48khz-16bit-mono-pcm
riff-8khz-16bit-mono-pcm
riff-8khz-8bit-mono-alaw
riff-8khz-8bit-mono-mulaw
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus
# Less than default quality.
$ aspeak text " Hello, world " -o output.mp3 -c mp3 -q=-1
# Best quality for mp3
$ aspeak text " Hello, world " -o output.mp3 -c mp3 -q=3$ cat input.txt | aspeak textили
$ aspeak text -f input.txtС пользовательским кодировкой:
$ aspeak text -f input.txt -e gbk$ aspeak textМожет, вы предпочитаете:
$ aspeak text -l zh-CN << EOF
我能吞下玻璃而不伤身体。
EOF $ aspeak text "你好,世界! " -l zh-CN$ aspeak text "你好,世界! " -v zh-CN-YunjianNeural$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p 1.5 -r 0.5 -S sad
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=-10% -r=+5% -S cheerful
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=+40Hz -r=1.2f -S fearful
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=high -r=x-slow -S calm
$ aspeak text "你好,世界! " -v zh-CN-XiaoxiaoNeural -p=+1st -r=-7% -S lyricalПримечание . Некоторые аудиоформаты не поддерживаются при выходе на динамик.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav Новая версия aspeak написана в ржавчине, а привязка Python обеспечивается PYO3.
Вот простой пример:
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) Сначала вам нужно создать экземпляр SpeechService .
При создании экземпляра SpeechService вы можете указать следующие параметры:
audio_format (позиционный аргумент): аудио -формат выходного аудио. По умолчанию AudioFormat.Riff24KHz16BitMonoPcm .AudioFormat("mp3", 2) .endpoint : конечная точка речевой службы.region : В качестве альтернативы, вы можете указать область речевой службы вместо того, чтобы вводить скучный URL -адрес конечной точки.key : ключ подписки речевой службы.token : токен аудитория для речевой службы. Если вы предоставите токен, ключ подписки будет проигнорирован.headers : дополнительные заголовки HTTP для речевой службы.mode : выберите синтезатор для использования. Либо rest , либо websocket .SpeechService . После этого вы можете позвонить speak_text() , чтобы говорить по тексту или speak_ssml() , чтобы говорить о SSML. Или вы можете вызвать synthesize_text() или synthesize_ssml() чтобы получить аудиоданные.
Для synthesize_text() и synthesize_ssml() , если вы предоставите output , аудиоданные будут записаны в этот файл, а функция не вернет None . В противном случае функция вернет аудиоданные.
Вот общие параметры для speak_text() и synthesize_text() :
locale : локаль голоса. По умолчанию en-US .voice : имя голоса. По умолчанию en-US-JennyNeural .rate : скорость разговора голоса. Это должна быть строка, которая соответствует требованиям, как задокументировано в этом разделе: шаг и скоростьpitch : шаг голоса. Это должна быть строка, которая соответствует требованиям, как задокументировано в этом разделе: шаг и скоростьstyle : стиль голоса.aspeak -L -v <VOICE_ID>general .style_degree : степень стиля.role : роль голоса.role указывает ролевую игру. Голос действует как другой возраст и пол, но голосовое имя не изменилось.zh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural и zh-CN-YunyeNeural . Добавьте aspeak в свой Cargo.toml :
$ cargo add aspeak Затем следуйте документации aspeak Crate.
Есть 4 примера для быстрой справки: