Azure TTS API的簡單文本對語音客戶端。 ?
從6.0.0版本開始, aspeak默認使用Azure TTS的RESTFUL API。如果要使用WebSocket API,則可以在個人資料的身份auth部分中調用aspeak或set mode = "websocket"時指定--mode websocket 。
從4.0.0版本開始, aspeak在Rust中重寫。舊的Python版本可在python分支上找到。
您可以註冊一個Azure帳戶,然後根據需要選擇付款計劃(或堅持免費級別)。免費級別的配額為每月50萬個字符,免費。
請參閱“身份驗證”部分,以了解如何為Aspeak設置身份驗證。
從這裡下載最新版本。
下載後,提取存檔,您將獲得一個二進制可執行文件。
您可以將其放入PATH環境變量中的目錄中,以便可以從任何地方運行它。
從v4.1.0中,您可以從AUR安裝aspeak-bin 。
從PYPI安裝還將為您安裝aspeak的Python綁定。查看庫用法#python,以獲取有關使用Python綁定的更多信息。
pip install -U aspeak==6.0.0現在,預製車輪僅適用於X86_64架構。由於一些技術問題,我尚未將源分佈上傳到PYPI。因此,要從源構建輪子,您需要按照源的安裝中的說明進行操作。
由於Manylinux兼容性問題,Linux的車輪在PYPI上不可用。 (但是您仍然可以從源頭構建它們。)
從源安裝aspeak的最簡單方法是使用貨物:
cargo install aspeak -F binary另外,您也可以從AUR安裝aspeak 。
要構建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認知服務將其縮短為合理的值。
以下示例假設您已經在個人資料中設置了身份驗證。
$ 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用Rust編寫,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板條箱的文檔。
有4個示例供快速參考: