Un cliente simple de texto a voz para Azure TTS API. ?
A partir de la versión 6.0.0, aspeak de forma predeterminada usa la API RESTFUL de Azure TTS. Si desea utilizar la API de WebSocket, puede especificar --mode websocket al invocar aspeak o establecer mode = "websocket" en la sección auth de su perfil.
A partir de la versión 4.0.0, aspeak se reescribe en Rust. La antigua versión de Python está disponible en la sucursal python .
Puede registrarse para obtener una cuenta de Azure y luego elegir un plan de pago según sea necesario (o mantenerse en nivel gratuito). El nivel gratuito incluye una cuota de 0.5 millones de caracteres por mes, sin cargo.
Consulte la sección de autenticación para aprender cómo configurar la autenticación para ASPEAK.
Descargue el último lanzamiento de aquí.
Después de descargar, extraiga el archivo y obtendrá un archivo ejecutable binario.
Puede ponerlo en un directorio que esté en su variable de entorno PATH para que pueda ejecutarlo desde cualquier lugar.
Desde V4.1.0, puede instalar aspeak-bin desde AUR.
La instalación desde PYPI también instalará la unión de Python de aspeak para usted. Consulte el uso de la biblioteca#Python para obtener más información sobre el uso de la vinculación de Python.
pip install -U aspeak==6.0.0Ahora las ruedas prebuilt solo están disponibles para la arquitectura x86_64. Debido a algunos problemas técnicos, aún no he subido la distribución de origen a PYPI. Entonces, para construir la rueda desde la fuente, debe seguir las instrucciones en la instalación desde la fuente.
Debido a muchos problemas de compatibilidad de Linux, las ruedas para Linux no están disponibles en PYPI. (Pero aún puedes construirlos desde la fuente).
La forma más fácil de instalar aspeak desde la fuente es usar carga:
cargo install aspeak -F binary Alternativamente, también puede instalar aspeak desde AUR.
Para construir la rueda Python, primero debe instalar maturin :
pip install maturin Después de clonar el repositorio y cd en el directorio, puede construir la rueda ejecutando:
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 todo va bien, obtendrá un archivo de rueda en el directorio dist .
Ejecute aspeak help para ver el mensaje de ayuda.
Ejecute aspeak help <subcommand> para ver el mensaje de ayuda de un subcomando.
Las opciones de autenticación deben colocarse ante cualquier subcomando.
Por ejemplo, para utilizar su clave de suscripción y un punto final oficial designado por una región, ejecute el siguiente comando:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " Si está utilizando un punto final personalizado, puede usar la opción --endpoint en lugar de --region .
Para evitar la repetición, puede almacenar sus detalles de autenticación en su perfil de Aspeak. Lea la siguiente sección para obtener más detalles.
Desde v5.2.0, también puede establecer los secretos de autenticación a través de las siguientes variables de entorno:
ASPEAK_AUTH_KEY para autenticación utilizando la tecla de suscripciónASPEAK_AUTH_TOKEN para la autenticación utilizando el token de autorizaciónDesde v4.3.0, puede dejar que Aspeak use un servidor proxy para conectarse al punto final. Por ahora, solo son compatibles con los proxies HTTP y Socks5 (todavía no hay soporte HTTPS). Por ejemplo:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " Aspeak también respeta la variable de entorno HTTP_PROXY (o http_proxy ).
Aspeak V4 presenta el concepto de perfiles. Un perfil es un archivo de configuración donde puede especificar los valores predeterminados para las opciones de línea de comando.
Ejecute el siguiente comando para crear su perfil predeterminado:
$ aspeak config initPara editar el perfil, ejecute:
$ aspeak config editSi tiene problemas para ejecutar el comando anterior, puede editar el perfil manualmente:
Puño consigue el camino del perfil ejecutando:
$ aspeak config whereLuego edite el archivo con su editor de texto favorito.
El perfil es un archivo Toml. El perfil predeterminado se ve así:
Consulte los comentarios en el archivo de configuración para obtener más información sobre las opciones 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 desea usar un perfil que no sea su perfil predeterminado, puede usar el argumento --profile :
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " Si desea deshabilitar temporalmente el perfil, puede usar el argumento --no-profile :
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : la tasa de oratoria de la voz.0.5 ), el valor se multiplicará por 100% y se convertirá en 50.00% .x-slow , slow , medium , fast , x-fast , default .+10% .f Postfix), 1.2f :1f no da a ningún cambio en la tasa. Un valor de 0.5f da como resultado una mitad de la tasa. Un valor de 3f da como resultado una triplicación de la tasa.pitch : el lanzamiento de la voz.-0.5 ), el valor se multiplicará por 100% y se convertirá en -50.00% .x-low , low , medium , high , x-high , default .+10% .-2st o +80Hz ):600HzNota : Los valores altos/bajos irrazonables serán recortados a valores razonables por servicios cognitivos Azure.
Los siguientes ejemplos suponen que ya ha configurado la autenticación en su perfil.
$ 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 prefiere MP3 / OGG / Webm, puede usar la opción de 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 texto
$ aspeak text -f input.txtcon codificación personalizada:
$ aspeak text -f input.txt -e gbk$ aspeak textQuizás prefieras:
$ 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 lyricalNota : Algunos formatos de audio no son compatibles cuando se emiten al altavoz.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav La nueva versión de aspeak está escrita en Rust, y PYO3 proporciona la unión de Python.
Aquí hay un ejemplo simple:
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) Primero debe crear una instancia SpeechService .
Al crear una instancia SpeechService , puede especificar los siguientes parámetros:
audio_format (argumento posicional): el formato de audio del audio de salida. El valor predeterminado es AudioFormat.Riff24KHz16BitMonoPcm .AudioFormat("mp3", 2) .endpoint : el punto final del servicio del habla.region : alternativamente, puede especificar la región del servicio del habla en lugar de escribir la URL de punto final aburrido.key : la clave de suscripción del servicio del habla.token : el token de autenticación para el servicio del habla. Si proporciona un token, la clave de suscripción será ignorada.headers : encabezados HTTP adicionales para el servicio del habla.mode : elija el sintetizador para usar. O rest o websocket .SpeechService . Después de eso, puede llamar speak_text() para hablar el texto o speak_ssml() para hablar el SSML. O puede llamar synthesize_text() o synthesize_ssml() para obtener los datos de audio.
Para synthesize_text() y synthesize_ssml() , si proporciona una output , los datos de audio se escribirán en ese archivo y la función no devolverá None . De lo contrario, la función devolverá los datos de audio.
Estas son las opciones comunes para speak_text() y synthesize_text() ::
locale : El local de la voz. El valor predeterminado es en-US .voice : El nombre de la voz. El valor predeterminado es en-US-JennyNeural .rate : la tasa de oratoria de la voz. Debe ser una cadena que se ajuste a los requisitos documentados en esta sección: tono y tasapitch : el lanzamiento de la voz. Debe ser una cadena que se ajuste a los requisitos documentados en esta sección: tono y tasastyle : el estilo de la voz.aspeak -L -v <VOICE_ID>general .style_degree : el grado del estilo.role : El papel de la voz.role especifica el juego de roles de habla. La voz actúa como una edad y género diferentes, pero el nombre de la voz no cambia.zh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural y zh-CN-YunyeNeural . Agregue aspeak a su Cargo.toml :
$ cargo add aspeak Luego siga la documentación de aspeak Crate.
Hay 4 ejemplos para referencia rápida: