pyht é um SDK Python para a API AI Text-to-Speech do PlayHT. PlayHT cria modelos de IA de voz conversacional para casos de uso em tempo real. Com pyht , você pode converter facilmente texto em fluxos de áudio de alta qualidade com vozes humanas.
Atualmente, a biblioteca suporta apenas streaming de texto para fala. Para o conjunto completo de funcionalidades fornecidas pela API PlayHT, como Clonagem de Voz, consulte a documentação do PlayHT
aiohttp
filelock
grpc
requests
websockets
Você pode instalar o SDK pyht usando pip:
pip install pyht
Você pode usar o SDK pyht criando uma instância Client
e chamando seu método tts
. Aqui está um exemplo simples:
from pyht import Client
from dotenv import load_dotenv
from pyht . client import TTSOptions
import os
load_dotenv ()
client = Client (
user_id = os . getenv ( "PLAY_HT_USER_ID" ),
api_key = os . getenv ( "PLAY_HT_API_KEY" ),
)
options = TTSOptions ( voice = "s3://voice-cloning-zero-shot/775ae416-49bb-4fb6-bd45-740f205d20a1/jennifersaad/manifest.json" )
for chunk in client . tts ( "Hi, I'm Jennifer from Play. How can I help you today?" , options ):
# do something with the audio chunk
print ( type ( chunk ))
Também é possível transmitir texto em vez de enviá-lo como uma string de uma só vez:
for chunk in client . stream_tts_input ( some_iterable_text_stream , options ):
# do something with the audio chunk
print ( type ( chunk ))
Uma versão assíncrona do cliente também está disponível:
from pyht import AsyncClient
client = AsyncClient (
user_id = os . getenv ( "PLAY_HT_USER_ID" ),
api_key = os . getenv ( "PLAY_HT_API_KEY" ),
)
options = TTSOptions ( voice = "s3://voice-cloning-zero-shot/775ae416-49bb-4fb6-bd45-740f205d20a1/jennifersaad/manifest.json" )
async for chunk in client . tts ( "Hi, I'm Jennifer from Play. How can I help you today?" , options ):
# do something with the audio chunk
print ( type ( chunk ))
O método tts
aceita os seguintes argumentos:
text
: O texto a ser convertido em fala.options
: as opções a serem usadas para a solicitação TTS.TTSOptions
(veja abaixo).voice_engine
: o mecanismo de voz a ser usado para a solicitação TTS.Play3.0-mini-http
(padrão): Nosso mais recente modelo multilíngue, streaming de áudio por HTTP. (OBSERVE que é Play
e não PlayHT
como os mecanismos de voz anteriores)Play3.0-mini-ws
: Nosso mais recente modelo multilíngue, streaming de áudio por WebSockets. (OBSERVE que é Play
e não PlayHT
como os mecanismos de voz anteriores)Play3.0-mini-grpc
: Nosso modelo multilíngue mais recente, transmitindo áudio por gRPC. Use este mecanismo de voz se estiver usando o Play On-Prem. (OBSERVE que é Play
e não PlayHT
como os mecanismos de voz anteriores)PlayHT2.0-turbo
: Nosso modelo legado somente em inglês, transmitindo áudio por gRPC. A classe TTSOptions
é usada para especificar as opções para a solicitação TTS. Ele possui os seguintes membros, com estes valores suportados:
voice
: A voz a ser usada para a solicitação TTS; uma corda.format
: O formato do áudio a ser retornado; um valor de enum Format
.FORMAT_MP3
(padrão)FORMAT_WAV
FORMAT_MULAW
FORMAT_FLAC
FORMAT_OGG
FORMAT_RAW
sample_rate
: A taxa de amostragem do áudio a ser retornado; um número inteiro.quality
: DEPRECATED (use a taxa de amostragem para ajustar a qualidade do áudio)speed
: A velocidade do áudio a ser retornado, um float (padrão 1.0).seed
: Semente aleatória a ser usada para geração de áudio, um número inteiro (padrão Nenhum, será gerado aleatoriamente).temperature
: A temperatura do modelo, um flutuador.top_p
: O top_p do modelo, um float.text_guidance
: O text_guidance do modelo, um float.voice_guidance
O voice_guidance do modelo, um float.style_guidance
(somente Play3.0-mini-http e Play3.0-mini-ws): O style_guidance do modelo, um float.repetition_penalty
: A repetição_penalty do modelo, um float.disable_stabilization
(somente PlayHT2.0-turbo): Desativa o processo de estabilização de áudio, um booleano (padrão False).language
(apenas Play3.0-mini-http e Play3.0-mini-ws): O idioma do texto a ser falado, um valor enum Language
ou Nenhum (inglês padrão).AFRIKAANS
ALBANIAN
AMHARIC
ARABIC
BENGALI
BULGARIAN
CATALAN
CROATIAN
CZECH
DANISH
DUTCH
ENGLISH
FRENCH
GALICIAN
GERMAN
GREEK
HEBREW
HINDI
HUNGARIAN
INDONESIAN
ITALIAN
JAPANESE
KOREAN
MALAY
MANDARIN
POLISH
PORTUGUESE
RUSSIAN
SERBIAN
SPANISH
SWEDISH
TAGALOG
THAI
TURKISH
UKRAINIAN
URDU
XHOSA
Você pode executar a demonstração fornecida na linha de comando.
Nota: Esta demonstração depende dos seguintes pacotes:
pip install numpy soundfile
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! "
Para executar com o cliente asyncio, use o sinalizador --async
:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --async
Para executar com a API HTTP, que usa nosso modelo Play3.0-mini mais recente, use o sinalizador --http
:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --http
Para executar com a API WebSockets, que também usa nosso modelo Play3.0-mini mais recente, use o sinalizador --ws
:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --ws
As APIs HTTP e WebSockets também podem ser usadas com o cliente assíncrono:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --http --async
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --ws --async
Alternativamente, você pode executar a demonstração em modo interativo:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --interactive
No modo interativo, você pode inserir linhas de texto para gerar e reproduzir áudio dinamicamente. Uma linha vazia sairá da sessão interativa.
Para começar a usar o SDK pyht , você precisará da chave secreta da API e do ID do usuário. Siga estas etapas para obtê-los:
Acesse a página da API : navegue até a página de acesso à API.
Gere sua chave secreta de API :
Localize seu ID de usuário : Encontre e copie seu ID de usuário, que pode ser encontrado na mesma página, na seção "ID de usuário".
Mantenha sua chave secreta de API confidencial . É crucial não compartilhá-lo com ninguém nem incluí-lo em repositórios de código acessíveis ao público.