pyht est un SDK Python pour l'API de synthèse vocale AI de PlayHT. PlayHT crée des modèles d'IA vocale conversationnelle pour des cas d'utilisation en temps réel. Avec pyht , vous pouvez facilement convertir du texte en flux audio de haute qualité avec des voix humaines.
Actuellement, la bibliothèque ne prend en charge que la synthèse vocale en streaming. Pour l'ensemble des fonctionnalités fournies par l'API PlayHT telles que le clonage vocal, consultez la documentation PlayHT.
aiohttp
filelock
grpc
requests
websockets
Vous pouvez installer le SDK pyht en utilisant pip :
pip install pyht
Vous pouvez utiliser le SDK pyht en créant une instance Client
et en appelant sa méthode tts
. Voici un exemple simple :
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 ))
Il est également possible de diffuser du texte au lieu de le soumettre sous forme de chaîne en une seule fois :
for chunk in client . stream_tts_input ( some_iterable_text_stream , options ):
# do something with the audio chunk
print ( type ( chunk ))
Une version asyncio du client est également disponible :
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 ))
La méthode tts
prend les arguments suivants :
text
: Le texte à convertir en parole.options
: Les options à utiliser pour la requête TTS.TTSOptions
(voir ci-dessous).voice_engine
: Le moteur vocal à utiliser pour la requête TTS.Play3.0-mini-http
(par défaut) : notre dernier modèle multilingue, streaming audio via HTTP. (REMARQUE qu'il s'agit Play
et non PlayHT
comme les moteurs vocaux précédents)Play3.0-mini-ws
: Notre dernier modèle multilingue, streaming audio via WebSockets. (REMARQUE qu'il s'agit Play
et non PlayHT
comme les moteurs vocaux précédents)Play3.0-mini-grpc
: Notre dernier modèle multilingue, streaming audio sur gRPC. Utilisez ce moteur vocal si vous utilisez Play On-Prem. (REMARQUE qu'il s'agit Play
et non PlayHT
comme les moteurs vocaux précédents)PlayHT2.0-turbo
: notre ancien modèle en anglais uniquement, diffusant de l'audio sur gRPC. La classe TTSOptions
est utilisée pour spécifier les options de la requête TTS. Il comprend les membres suivants, avec ces valeurs prises en charge :
voice
: La voix à utiliser pour la requête TTS ; une chaîne.format
: Le format de l'audio à renvoyer ; une valeur d'énumération Format
.FORMAT_MP3
(par défaut)FORMAT_WAV
FORMAT_MULAW
FORMAT_FLAC
FORMAT_OGG
FORMAT_RAW
sample_rate
: La fréquence d'échantillonnage de l'audio à renvoyer ; un entier.quality
: obsolète (utilisez la fréquence d'échantillonnage pour ajuster la qualité audio)speed
: La vitesse de l’audio à renvoyer, un float (par défaut 1.0).seed
: Seed aléatoire à utiliser pour la génération audio, un entier (aucun par défaut, sera généré aléatoirement).temperature
: La température du modèle, un flotteur.top_p
: Le top_p du modèle, un float.text_guidance
: Le text_guidance du modèle, un float.voice_guidance
Le voice_guidance du modèle, un flotteur.style_guidance
(Play3.0-mini-http et Play3.0-mini-ws uniquement) : Le style_guidance du modèle, un float.repetition_penalty
: La repetition_penalty du modèle, un float.disable_stabilization
(PlayHT2.0-turbo uniquement) : désactivez le processus de stabilisation audio, un booléen (Faux par défaut).language
(Play3.0-mini-http et Play3.0-mini-ws uniquement) : la langue du texte à prononcer, une valeur d'énumération Language
ou Aucune (anglais par défaut).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
Vous pouvez exécuter la démo fournie à partir de la ligne de commande.
Remarque : Cette démo dépend des packages suivants :
pip install numpy soundfile
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! "
Pour exécuter avec le client asyncio, utilisez l'indicateur --async
:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --async
Pour exécuter avec l'API HTTP, qui utilise notre dernier modèle Play3.0-mini, utilisez l'indicateur --http
:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --http
Pour exécuter avec l'API WebSockets, qui utilise également notre dernier modèle Play3.0-mini, utilisez l'indicateur --ws
:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --ws
Les API HTTP et WebSockets peuvent également être utilisées avec le client asynchrone :
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
Alternativement, vous pouvez exécuter la démo en mode interactif :
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --interactive
En mode interactif, vous pouvez saisir des lignes de texte pour générer et lire de l'audio à la volée. Une ligne vide quittera la session interactive.
Pour démarrer avec le SDK pyht , vous aurez besoin de votre clé secrète API et de votre identifiant utilisateur. Suivez ces étapes pour les obtenir :
Accéder à la page API : accédez à la page Accès API.
Générez votre clé secrète API :
Localisez votre identifiant utilisateur : recherchez et copiez votre identifiant utilisateur, qui se trouve sur la même page dans la section "ID utilisateur".
Gardez votre clé secrète API confidentielle . Il est crucial de ne pas le partager avec qui que ce soit ni de l'inclure dans des référentiels de code accessibles au public.