Ein einfacher Text-zu-Sprach-Client für Azure TTS-API. ?
Ab Version 6.0.0 verwendet aspeak standardmäßig die erholsame API von Azure TTS. Wenn Sie die WebSocket -API verwenden möchten, können Sie im auth -Abschnitt Ihres Profils --mode websocket angeben, wenn Sie aspeak oder SET mode = "websocket" aufrufen.
Ab Version 4.0.0 wird aspeak in Rost umgeschrieben. Die alte Python -Version ist in der python Branch erhältlich.
Sie können sich für ein Azure -Konto anmelden und dann nach Bedarf einen Zahlungsplan auswählen (oder an der kostenlosen Stufe festhalten). Die kostenlose Stufe enthält kostenlos eine Quote von 0,5 Millionen Zeichen pro Monat.
Weitere Informationen finden Sie im Abschnitt Authentifizierung, um die Authentifizierung für ASPeak einzurichten.
Laden Sie die neueste Version von hier herunter.
Extrahieren Sie nach dem Herunterladen das Archiv und Sie erhalten eine binäre ausführbare Datei.
Sie können es in ein Verzeichnis, das in Ihrer PATH befindet, so ausführen, dass Sie es von überall ausführen können.
Ab V4.1.0 können Sie aspeak-bin von AUR installieren.
Die Installation von PYPI installiert auch die Python -Bindung von aspeak für Sie. Weitere Informationen zur Verwendung der Python -Bindung finden Sie unter Bibliotheksnutzung#Python.
pip install -U aspeak==6.0.0Jetzt sind die vorgebauten Räder nur für die x86_64 -Architektur erhältlich. Aufgrund einiger technischer Probleme habe ich die Quellverteilung noch nicht auf PYPI hochgeladen. Um Rad aus der Quelle zu erstellen, müssen Sie die Anweisungen in der Installation von der Quelle befolgen.
Aufgrund vieler Linux -Kompatibilitätsprobleme sind die Räder für Linux auf PYPI nicht verfügbar. (Aber Sie können sie trotzdem aus der Quelle bauen.)
Der einfachste Weg, aspeak von Source aus der Quelle zu installieren, besteht darin, Fracht zu verwenden:
cargo install aspeak -F binary Alternativ können Sie aspeak auch von AUR installieren.
Um das Python -Rad zu bauen, müssen Sie zuerst maturin installieren:
pip install maturin Nachdem Sie das Repository und cd in das Verzeichnis geklonen haben, können Sie das Rad erstellen, indem Sie ausführen:
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 Wenn alles gut läuft, erhalten Sie eine Raddatei im dist -Verzeichnis.
Führen Sie aspeak help aus, um die Hilfe zu sehen.
Führen Sie aspeak help <subcommand> um die Hilfebotschaft eines Unterbefehls zu sehen.
Die Authentifizierungsoptionen sollten vor einem Unterbefehl platziert werden.
Um Ihren Abonnementschlüssel und einen offiziellen Endpunkt zu verwenden, der von einer Region bezeichnet wird, führen Sie den folgenden Befehl aus:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " Wenn Sie einen benutzerdefinierten Endpunkt verwenden, können Sie die Option --endpoint anstelle von --region verwenden.
Um eine Wiederholung zu vermeiden, können Sie Ihre Authentifizierungsdetails in Ihrem Aspeak -Profil speichern. Weitere Informationen finden Sie im folgenden Abschnitt.
Ab V5.2.0 können Sie auch die Authentifizierungsgeheimnisse über die folgenden Umgebungsvariablen festlegen:
ASPEAK_AUTH_KEY für die Authentifizierung mithilfe des AbonnementschlüsselsASPEAK_AUTH_TOKEN für die Authentifizierung mit dem Autorisierungs -TokenAb V4.3.0 können Sie Aspeak einen Proxy -Server verwenden lassen, um eine Verbindung zum Endpunkt herzustellen. Im Moment werden nur HTTP- und SOCKS5 -Proxys unterstützt (noch keine HTTPS -Unterstützung). Zum Beispiel:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " ASPEAK respektiert auch die Umgebungsvariable HTTP_PROXY (oder http_proxy ).
Aspeak V4 führt das Konzept der Profile vor. Ein Profil ist eine Konfigurationsdatei, in der Sie Standardwerte für die Befehlszeilenoptionen angeben können.
Führen Sie den folgenden Befehl aus, um Ihr Standardprofil zu erstellen:
$ aspeak config initUm das Profil zu bearbeiten, führen Sie aus:
$ aspeak config editWenn Sie Probleme haben, den obigen Befehl auszuführen, können Sie das Profil manuell bearbeiten:
Faust erhalten Sie den Weg des Profils durch Ausführen:
$ aspeak config whereBearbeiten Sie dann die Datei mit Ihrem bevorzugten Texteditor.
Das Profil ist eine TOML -Datei. Das Standardprofil sieht folgt aus:
Überprüfen Sie die Kommentare in der Konfigurationsdatei für weitere Informationen zu den verfügbaren Optionen.
# 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" Wenn Sie ein anderes Profil als Ihr Standardprofil verwenden möchten, können Sie das Argument --profile verwenden:
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " Wenn Sie das Profil vorübergehend deaktivieren möchten, können Sie das Argument --no-profile -Argument verwenden:
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : Die Sprechrate der Stimme.0.5 ) verwenden, wird der Wert mit 100% multipliziert und 50.00% .x-slow , slow , medium , fast , x-fast , default .+10% .f postfix), 1.2f : verwenden:1f zu einer Änderung der Rate. Ein Wert von 0.5f führt zu einer Halbierung der Rate. Ein Wert von 3f führt zu einer Verdreifachung der Rate.pitch : Die Tonhöhe der Stimme.-0.5 ) verwenden, wird der Wert mit 100% multipliziert und -50.00% .x-low , low , medium , high , x-high , default .+10% .-2st oder +80Hz ):600HzHINWEIS : Unangemessene hohe/niedrige Werte werden von azure kognitiven Diensten an vernünftige Werte abgeschnitten.
In den folgenden Beispielen geht davon aus, dass Sie die Authentifizierung bereits in Ihrem Profil eingerichtet haben.
$ 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 Wenn Sie MP3 / OGG / WebM bevorzugen, können Sie -c mp3 / -c ogg / -c webm -Option verwenden.
$ 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 textoder
$ aspeak text -f input.txtmit benutzerdefinierter Codierung:
$ aspeak text -f input.txt -e gbk$ aspeak textVielleicht bevorzugen Sie:
$ 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 lyricalHinweis : Einige Audioformate werden bei der Ausgabe an den Sprecher nicht unterstützt.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav Die neue Version von aspeak ist in Rost geschrieben und die Python -Bindung wird von Pyo3 bereitgestellt.
Hier ist ein einfaches Beispiel:
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) Zuerst müssen Sie eine SpeechService -Instanz erstellen.
Beim Erstellen einer SpeechService -Instanz können Sie die folgenden Parameter angeben:
audio_format (Positionsargument): Das Audio -Format des Ausgabe -Audio. Standard ist AudioFormat.Riff24KHz16BitMonoPcm .AudioFormat("mp3", 2) .endpoint : Der Endpunkt des Sprachdienstes.region : Alternativ können Sie die Region des Sprachdienstes angeben, anstatt die Bohrende Endpunkt -URL zu tippen.key : Der Abonnementschlüssel des Sprachdienstes.token : Das Auth -Token für den Sprachdienst. Wenn Sie ein Token zur Verfügung stellen, wird der Abonnementschlüssel ignoriert.headers : Zusätzliche HTTP -Header für den Sprachdienst.mode : Wählen Sie den zu verwendenden Synthesizer. Entweder rest oder websocket .SpeechService -Instanz erstellt wird. Danach können Sie speak_text() aufrufen, um den Text zu sprechen, oder speak_ssml() um die SSML zu sprechen. Oder Sie können synthesize_text() oder synthesize_ssml() aufrufen, um die Audiodaten zu erhalten.
Für synthesize_text() und synthesize_ssml() werden die output in diese Datei geschrieben und die Funktion gibt None zurück. Andernfalls gibt die Funktion die Audiodaten zurück.
Hier sind die gängigen Optionen für speak_text() und synthesize_text() :
locale : Das Gebietsschema der Stimme. Standard ist en-US .voice : Der Sprachname. Standard ist en-US-JennyNeural .rate : Die Sprechrate der Stimme. Es muss eine Zeichenfolge sein, die den in diesem Abschnitt dokumentierten Anforderungen entspricht: Tonhöhe und Ratepitch : Die Tonhöhe der Stimme. Es muss eine Zeichenfolge sein, die den in diesem Abschnitt dokumentierten Anforderungen entspricht: Tonhöhe und Ratestyle : Der Stil der Stimme.aspeak -L -v <VOICE_ID> ausführengeneral .style_degree : Der Grad des Stils.role : Die Rolle der Stimme.role das sprechende Rollenspiel an. Die Stimme fungiert als anderes Alter und Geschlecht, aber der Sprachname wird nicht geändert.zh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural und zh-CN-YunyeNeural . Fügen Sie Ihrer Cargo.toml aspeak hinzu.
$ cargo add aspeak Folgen Sie dann der Dokumentation der aspeak -Kiste.
Es gibt 4 Beispiele für die schnelle Referenz: