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アカウントにサインアップしてから、必要に応じて支払い計画を選択できます(または無料層に固執します)。無料の層には、無料で1か月あたり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 "カスタムエンドポイントを使用している場合は、 --regionの代わりに--endpointオプションを使用できます。
繰り返しを避けるために、認証の詳細をAspeakプロファイルに保存できます。詳細については、次のセクションをご覧ください。
v5.2.0から、次の環境変数を介して認証秘密を設定することもできます。
ASPEAK_AUTH_KEYASPEAK_AUTH_TOKEN AUTHOUTINCITION TOKENを使用v4.3.0から、Aspekにプロキシサーバーを使用してエンドポイントに接続できます。今のところ、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の値は、レートを3倍にします。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の新しいバージョンは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 CN-Xiaoxuanneural、 zh-CN-YunxiNeural 、およびzh-CN-YunyeNeural 。貨物にaspeak追加しますCargo.toml :
$ cargo add aspeak次に、 aspeak Crateの文書に従ってください。
迅速な参照のための4つの例があります。