Un client simple text-to-dispeops pour Azure TTS API. ?
À partir de la version 6.0.0, aspeak par défaut utilise l'API RESTful d'Azure TTS. Si vous souhaitez utiliser l'API WebSocket, vous pouvez spécifier --mode websocket lorsque vous invoquez aspeak ou Set mode = "websocket" dans la section auth de votre profil.
À partir de la version 4.0.0, aspeak est réécrit en rouille. L'ancienne version Python est disponible à la branche python .
Vous pouvez vous inscrire à un compte Azure, puis choisir un plan de paiement selon les besoins (ou respecter le niveau gratuit). Le niveau gratuit comprend un quota de 0,5 million de caractères par mois, gratuitement.
Veuillez vous référer à la section d'authentification pour savoir comment configurer l'authentification pour Aspeak.
Téléchargez la dernière version d'ici.
Après téléchargement, extraire l'archive et vous obtiendrez un fichier exécutable binaire.
Vous pouvez le mettre dans un répertoire dans votre variable d'environnement PATH afin que vous puissiez l'exécuter de n'importe où.
De la V4.1.0, vous pouvez installer aspeak-bin à partir d'AUR.
L'installation à partir de PYPI installera également la liaison Python d' aspeak pour vous. Vérifiez l'utilisation de la bibliothèque # Python pour plus d'informations sur l'utilisation de la liaison Python.
pip install -U aspeak==6.0.0Maintenant, les roues prédéfinies ne sont disponibles que pour l'architecture x86_64. En raison de certains problèmes techniques, je n'ai pas encore téléchargé la distribution des sources sur PYPI. Donc, pour construire la roue à partir de la source, vous devez suivre les instructions dans l'installation à partir de la source.
En raison de nombreux problèmes de compatibilité, les roues pour Linux ne sont pas disponibles sur PYPI. (Mais vous pouvez toujours les construire à partir de la source.)
La façon la plus simple d'installer aspeak de Source est d'utiliser le fret:
cargo install aspeak -F binary Alternativement, vous pouvez également installer aspeak à partir d'AUR.
Pour construire la roue Python, vous devez d'abord installer maturin :
pip install maturin Après le clonage du référentiel et cd dans le répertoire, vous pouvez construire la roue en fonctionnant:
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 Si tout se passe bien, vous obtiendrez un fichier de roue dans le répertoire dist .
Exécutez aspeak help pour voir le message d'aide.
Exécutez aspeak help <subcommand> pour voir le message d'aide d'une sous-commande.
Les options d'authentification doivent être placées avant tout sous-commande.
Par exemple, pour utiliser votre clé d'abonnement et un point de terminaison officiel désigné par une région, exécutez la commande suivante:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " Si vous utilisez un point de terminaison personnalisé, vous pouvez utiliser l'option --endpoint au lieu de --region .
Pour éviter la répétition, vous pouvez stocker vos détails d'authentification dans votre profil Aspeak. Lisez la section suivante pour plus de détails.
De la v5.2.0, vous pouvez également définir les secrets d'authentification via les variables d'environnement suivantes:
ASPEAK_AUTH_KEY pour l'authentification à l'aide de la clé d'abonnementASPEAK_AUTH_TOKEN pour l'authentification en utilisant un jeton d'autorisationDepuis V4.3.0, vous pouvez laisser Aspeak utiliser un serveur proxy pour se connecter au point de terminaison. Pour l'instant, seules les proxys HTTP et SOCKS5 sont pris en charge (pas encore de support HTTPS). Par exemple:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " Aspeak respecte également la variable d'environnement HTTP_PROXY (ou http_proxy ).
Aspeak V4 présente le concept de profils. Un profil est un fichier de configuration où vous pouvez spécifier des valeurs par défaut pour les options de ligne de commande.
Exécutez la commande suivante pour créer votre profil par défaut:
$ aspeak config initPour modifier le profil, exécutez:
$ aspeak config editSi vous avez du mal à exécuter la commande ci-dessus, vous pouvez modifier le profil manuellement:
Fist obtenez le chemin du profil en fonctionnant:
$ aspeak config whereModifiez ensuite le fichier avec votre éditeur de texte préféré.
Le profil est un fichier Toml. Le profil par défaut ressemble à ceci:
Vérifiez les commentaires dans le fichier de configuration pour plus d'informations sur les options disponibles.
# 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" Si vous souhaitez utiliser un profil autre que votre profil par défaut, vous pouvez utiliser l'argument --profile :
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " Si vous souhaitez désactiver temporairement le profil, vous pouvez utiliser l'argument --no-profile :
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : le taux de parole de la voix.0.5 ), la valeur sera multipliée par 100% et deviendra 50.00% .x-slow , slow , medium , fast , x-fast , default .+10% .f Postfix), 1.2f :1f ne donne aucun changement dans le taux. Une valeur de 0.5f entraîne une réduction de moitié du taux. Une valeur de 3f se traduit par un triple du taux.pitch : Le terrain de la voix.-0.5 ), la valeur sera multipliée par 100% et deviendra -50.00% .x-low , low , medium , high , x-high , default .+10% .-2st ou +80Hz ):600HzRemarque : Des valeurs élevées / faibles déraisonnables seront coupées à des valeurs raisonnables par les services cognitifs Azure.
Les exemples suivants supposent que vous avez déjà configuré l'authentification dans votre profil.
$ 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 Si vous préférez mp3 / ogg / webm, vous pouvez utiliser l'option -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 textou
$ aspeak text -f input.txtavec encodage personnalisé:
$ aspeak text -f input.txt -e gbk$ aspeak textPeut-être que vous préférez:
$ 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 lyricalRemarque : Certains formats audio ne sont pas pris en charge lors de la sortie vers le haut-parleur.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav La nouvelle version d' aspeak est écrite en rouille, et la reliure Python est fournie par Pyo3.
Voici un exemple simple:
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) Vous devez d'abord créer une instance SpeechService .
Lors de la création d'une instance SpeechService , vous pouvez spécifier les paramètres suivants:
audio_format (argument de position): le format audio de l'audio de sortie. La valeur par défaut est AudioFormat.Riff24KHz16BitMonoPcm .AudioFormat("mp3", 2) .endpoint : le point de terminaison du service de la parole.region : Alternativement, vous pouvez spécifier la région du service de la parole au lieu de taper l'URL de point de terminaison ennuyeuse.key : la clé d'abonnement du service de la parole.token : Le jeton AUTH pour le service de la parole. Si vous fournissez un jeton, la clé d'abonnement sera ignorée.headers : en-têtes HTTP supplémentaires pour le service de la parole.mode : Choisissez le synthétiseur à utiliser. rest ou websocket .SpeechService sera créée. Après cela, vous pouvez appeler speak_text() pour parler le texte ou speak_ssml() pour parler le SSML. Ou vous pouvez appeler synthesize_text() ou synthesize_ssml() pour obtenir les données audio.
Pour synthesize_text() et synthesize_ssml() , si vous fournissez une output , les données audio seront écrites dans ce fichier et la fonction ne le rendra None . Sinon, la fonction renvoie les données audio.
Voici les options communes pour speak_text() et synthesize_text() :
locale : le lieu de la voix. La valeur par défaut est en-US .voice : le nom de la voix. La valeur par défaut est en-US-JennyNeural .rate : le taux de parole de la voix. Ce doit être une chaîne qui correspond aux exigences telles que documentées dans cette section: pitch et tauxpitch : Le terrain de la voix. Ce doit être une chaîne qui correspond aux exigences telles que documentées dans cette section: pitch et tauxstyle : le style de la voix.aspeak -L -v <VOICE_ID>general .style_degree : le degré du style.role : le rôle de la voix.role spécifie le jeu de rôle parlant. La voix agit comme un âge et un sexe différents, mais le nom de la voix n'est pas modifié.zh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural et zh-CN-YunyeNeural . Ajoutez aspeak à votre Cargo.toml :
$ cargo add aspeak Suivez ensuite la documentation d' aspeak Crate.
Il existe 4 exemples pour référence rapide: