Um cliente simples de texto em fala para API do Azure TTS. ?
A partir da versão 6.0.0, aspeak por padrão usa a API RESTful do Azure TTS. Se você deseja usar a API do WebSocket, pode especificar --mode websocket ao invocar aspeak ou set mode = "websocket" na seção auth do seu perfil.
A partir da versão 4.0.0, aspeak é reescrito em ferrugem. A versão antiga do Python está disponível na filial python .
Você pode se inscrever em uma conta do Azure e escolher um plano de pagamento conforme necessário (ou manter a camada gratuita). A camada gratuita inclui uma cota de 0,5 milhão de caracteres por mês, gratuitamente.
Consulte a seção de autenticação para saber como configurar a autenticação para aspeak.
Baixe o lançamento mais recente daqui.
Após o download, extraia o arquivo e você receberá um arquivo executável binário.
Você pode colocá -lo em um diretório que está na sua variável de ambiente PATH , para que você possa executá -lo de qualquer lugar.
Na v4.1.0, você pode instalar aspeak-bin a partir de AUR.
A instalação do Pypi também instalará a ligação do Python do aspeak para você. Verifique o uso da biblioteca#Python para obter mais informações sobre o uso da ligação do Python.
pip install -U aspeak==6.0.0Agora, as rodas pré -construídas estão disponíveis apenas para a arquitetura x86_64. Devido a alguns problemas técnicos, ainda não enviei a distribuição de origem para o Pypi. Então, para construir a roda a partir da fonte, você precisa seguir as instruções na instalação da fonte.
Devido aos problemas de compatibilidade de ManyLinux, as rodas do Linux não estão disponíveis no Pypi. (Mas você ainda pode construí -los a partir da fonte.)
A maneira mais fácil de instalar aspeak da fonte é usar carga:
cargo install aspeak -F binary Como alternativa, você também pode instalar aspeak da AUR.
Para construir a roda Python, você precisa instalar maturin primeiro:
pip install maturin Depois de clonar o repositório e cd no diretório, você pode construir a roda executando:
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 Se tudo correr bem, você receberá um arquivo de roda no diretório dist .
Execute aspeak help para ver a mensagem de ajuda.
Execute aspeak help <subcommand> para ver a mensagem de ajuda de um subcomando.
As opções de autenticação devem ser colocadas antes de qualquer subcomando.
Por exemplo, para utilizar sua chave de assinatura e um terminal oficial designado por uma região, execute o seguinte comando:
$ aspeak --region < YOUR_REGION > --key < YOUR_SUBSCRIPTION_KEY > text " Hello World " Se você estiver usando um terminal personalizado, poderá usar a opção --endpoint em vez de --region .
Para evitar a repetição, você pode armazenar seus detalhes de autenticação em seu perfil aspeak. Leia a seção a seguir para obter mais detalhes.
Na v5.2.0, você também pode definir os segredos de autenticação através das seguintes variáveis de ambiente:
ASPEAK_AUTH_KEY para autenticação usando a chave de assinaturaASPEAK_AUTH_TOKEN para autenticação usando o token de autorizaçãoNa v4.3.0, você pode deixar o Aspeak usar um servidor proxy para se conectar ao terminal. Por enquanto, apenas os proxies HTTP e SOCKS5 são suportados (sem suporte HTTPS ainda). Por exemplo:
$ aspeak --proxy http://your_proxy_server:port text " Hello World "
$ aspeak --proxy socks5://your_proxy_server:port text " Hello World " Aspeak também respeita a variável de ambiente HTTP_PROXY (ou http_proxy ).
Aspeak V4 apresenta o conceito de perfis. Um perfil é um arquivo de configuração, onde você pode especificar valores padrão para as opções da linha de comando.
Execute o seguinte comando para criar seu perfil padrão:
$ aspeak config initPara editar o perfil, execute:
$ aspeak config editSe você tiver problemas para executar o comando acima, pode editar o perfil manualmente:
Punho Obtenha o caminho do perfil executando:
$ aspeak config whereEm seguida, edite o arquivo com seu editor de texto favorito.
O perfil é um arquivo Toml. O perfil padrão se parece com o seguinte:
Verifique os comentários no arquivo de configuração para obter mais informações sobre as opções disponíveis.
# 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" Se você deseja usar um perfil que não seja o seu perfil padrão, você pode usar o argumento --profile :
aspeak --profile < PATH_TO_A_PROFILE > text " Hello " Se você deseja desativar temporariamente o perfil, pode usar o argumento --no-profile :
aspeak --no-profile --region eastus --key < YOUR_KEY > text " Hello "rate : a taxa de fala da voz.0.5 ), o valor será multiplicado por 100% e se tornará 50.00% .x-slow , slow , medium , fast , x-fast , default .+10% .f Postfix), 1.2f :1f resulta em nenhuma alteração na taxa. Um valor de 0.5f resulta na metade da taxa. Um valor de 3f resulta em um triplo da taxa.pitch : O tom da voz.-0.5 ), o valor será multiplicado por 100% e se tornará -50.00% .x-low , low , medium , high , x-high , default .+10% .-2st ou +80Hz ):600HzNOTA : Valores altos/baixos irracionais serão presos a valores razoáveis pelos serviços cognitivos do Azure.
Os exemplos a seguir assumem que você já configurou a autenticação em seu 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 Se você preferir mp3 / ogg / webm, pode usar -c mp3 / -c ogg / -c webm opção.
$ 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.txtcom codificação personalizada:
$ aspeak text -f input.txt -e gbk$ aspeak textTalvez você prefira:
$ 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 : Alguns formatos de áudio não são suportados ao produzir para o alto -falante.
$ aspeak text " Hello World " -F riff-48khz-16bit-mono-pcm -o high-quality.wav A nova versão do aspeak é escrita em ferrugem e a ligação do Python é fornecida pelo PYO3.
Aqui está um exemplo simples:
from aspeak import SpeechService
service = SpeechService ( region = "eastus" , key = "YOUR_AZURE_SUBSCRIPTION_KEY" )
service . speak_text ( "Hello, world" ) Primeiro, você precisa criar uma instância SpeechService .
Ao criar uma instância SpeechService , você pode especificar os seguintes parâmetros:
audio_format (argumento posicional): o formato de áudio do áudio de saída. O padrão é AudioFormat.Riff24KHz16BitMonoPcm .AudioFormat("mp3", 2) .endpoint : o terminal do serviço de fala.region : Alternativamente, você pode especificar a região do serviço de fala em vez de digitar o URL do ponto de extremidade chato.key : a chave de assinatura do serviço de fala.token : o token de autenticação para o serviço de fala. Se você fornecer um token, a chave de assinatura será ignorada.headers : cabeçalhos HTTP adicionais para o serviço de fala.mode : escolha o sintetizador para usar. rest ou websocket .SpeechService for criada. Depois disso, você pode ligar para speak_text() para falar o texto ou speak_ssml() para falar o SSML. Ou você pode chamar synthesize_text() ou synthesize_ssml() para obter os dados de áudio.
Para synthesize_text() e synthesize_ssml() , se você fornecer uma output , os dados de áudio serão gravados nesse arquivo e a função retornará None . Caso contrário, a função retornará os dados de áudio.
Aqui estão as opções comuns para speak_text() e synthesize_text() :
locale : O local da voz. O padrão é en-US .voice : o nome da voz. O padrão é en-US-JennyNeural .rate : a taxa de fala da voz. Deve ser uma string que atenda aos requisitos, conforme documentado nesta seção: Pitch and Tavepitch : O tom da voz. Deve ser uma string que atenda aos requisitos, conforme documentado nesta seção: Pitch and Tavestyle : o estilo da voz.aspeak -L -v <VOICE_ID>general .style_degree : o grau do estilo.role : o papel da voz.role especifica a dramatização de falar. A voz atua como uma idade e gênero diferente, mas o nome da voz não é alterado.zh-CN-XiaomoNeural , zh-CN-XiaoxuanNeural , zh-CN-YunxiNeural e zh-CN-YunyeNeural . Adicione aspeak à sua Cargo.toml :
$ cargo add aspeak Em seguida, siga a documentação do aspeak Crate.
Existem 4 exemplos para referência rápida: