Tortoise est un programme de texte vocale construit avec les priorités suivantes:
Ce dépôt contient tout le code nécessaire pour exécuter TTSE TTS en mode d'inférence.
Colab est le moyen le plus simple de l'essayer. J'ai mis en place un cahier que vous pouvez utiliser ici: https://colab.research.google.com/drive/1wvvqupqwidbuvewwounglpghu3hg_cbr?usp=sharing
Si vous souhaitez l'utiliser sur votre propre ordinateur, vous devez avoir un GPU NVIDIA.
Tout d'abord, installez Pytorch en utilisant ces instructions: https://pytorch.org/get-started/locally/. Sur Windows, je recommande fortement d'utiliser le chemin d'installation de conda. On m'a dit que si vous ne faites pas cela, vous passerez beaucoup de temps à poursuivre des problèmes de dépendance.
Ensuite, installez une tortue et ses dépendances:
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install Si vous êtes sous Windows, vous devrez également installer Pysoundfile: conda install -c conda-forge pysoundfile
Ce script vous permet de parler une seule phrase avec une ou plusieurs voix.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fastCe script fournit des outils pour lire de grandes quantités de texte.
python tortoise/read.py --textfile < your text to be read > --voice randomCela divisera le fichier de texte en phrases, puis les convertira en discours un à la fois. Il sortira une série de clips parlés au fur et à mesure qu'ils sont générés. Une fois tous les clips générés, il les combinera en un seul fichier et sortira également.
Parfois, la tortue baise une sortie. Vous pouvez générer des mauvais clips en relancez read.py avec l'argument - regretter.
La tortue peut être utilisée par programme, comme ainsi:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )La tortue a été spécifiquement formée pour être un modèle multi-haut-parleurs. Il accomplit cela en consultant des clips de référence.
Ces clips de référence sont des enregistrements d'un haut-parleur que vous fournissez pour guider la génération de discours. Ces clips sont utilisés pour déterminer de nombreuses propriétés de la sortie, telles que la hauteur et le ton de la voix, la vitesse de parole et même des défauts de parole comme un lisp ou un bégaiement. Le clip de référence est également utilisé pour déterminer les aspects non liés à la voix de la sortie audio comme le volume, le bruit d'arrière-plan, la qualité d'enregistrement et la réverbération.
J'ai inclus une fonctionnalité qui génère aléatoirement une voix. Ces voix n'existent pas réellement et seront aléatoires chaque fois que vous l'exécutez. Les résultats sont assez fascinants et je vous recommande de jouer avec!
Vous pouvez utiliser la voix aléatoire en passant «aléatoire» comme nom de voix. La tortue s'occupera du reste.
Pour les ceux de l'espace ML: ceci est créé en projetant un vecteur aléatoire sur l'espace latent conditionnement de la voix.
Ce repo est livré avec plusieurs voix préemballées. Des voix adjoises à "Train_" venaient de l'ensemble de formation et fonctionnent bien mieux que les autres. Si votre objectif est un discours de haute qualité, je vous recommande d'en choisir un. Si vous voulez voir ce que Tortoise peut faire pour l'immeuble zéro, jetez un œil aux autres.
Pour ajouter de nouvelles voix à Tortoise, vous devrez faire ce qui suit:
Comme mentionné ci-dessus, vos clips de référence ont un impact profond sur la sortie de la tortue. Voici quelques conseils pour choisir de bons clips:
La tortue est principalement un modèle de décodeur autorégressif combiné à un modèle de diffusion. Les deux ont beaucoup de boutons qui peuvent être tournés que j'ai abstraits pour des raisons de facilité d'utilisation. Je l'ai fait en générant des milliers de clips en utilisant diverses permutations des paramètres et en utilisant une métrique pour le réalisme vocal et l'intelligibilité pour mesurer leurs effets. J'ai défini les valeurs par défaut sur les meilleurs paramètres globaux que j'ai pu trouver. Pour des cas d'utilisation spécifiques, il pourrait être efficace de jouer avec ces paramètres (et il est très probable que j'ai raté quelque chose!)
Ces paramètres ne sont pas disponibles dans les scripts normaux emballés avec une tortue. Ils sont cependant disponibles dans l'API. Voir api.tts pour une liste complète.
Certaines personnes ont découvert qu'il est possible de faire une ingénierie rapide avec une tortue! Par exemple, vous pouvez évoquer l'émotion en incluant des choses comme "Je suis vraiment triste", avant votre texte. J'ai construit un système de rédaction automatisé que vous pouvez utiliser pour en profiter. Il fonctionne en tentant de refuser tout texte dans l'invite entourée de supports. Par exemple, l'invite "[Je suis vraiment triste,] s'il vous plaît me nourrir." ne prononcera que les mots "s'il vous plaît me nourrir" (avec une triste tonalité).
La tortue ingette les clips de référence en les nourrissant individuellement à travers un petit sous-modèle qui produit un latent ponctuel, puis en prenant la moyenne de tous les latents produits. L'expérimentation que j'ai faite a indiqué que ces lanciers ponctuels sont assez expressifs, affectant tout, du ton au rythme de parole en passant par les anomalies de la parole.
Cela se prête à quelques astuces intéressantes. Par exemple, vous pouvez combiner Feed deux voix différentes à Tortoise et il sortira ce qu'il pense que la "moyenne" de ces deux voix ressemble.
Utilisez le script get_conditioning_latents.py pour extraire les sétents de conditionnement pour une voix que vous avez installée. Ce script videra les latentes dans un fichier de cornichons .pth. Le fichier contiendra un seul tuple, (autorégressif_latent, diffusion_latent).
Alternativement, utilisez l'API.TextTospeech.get_conditioning_latents () pour récupérer les lameurs.
Après avoir joué avec eux, vous pouvez les utiliser pour générer une parole en créant un sous-répertoire dans Voices / avec un seul fichier ".pth" contenant les séquences de conditionnement mariné comme tuple (autoregressive_latent, diffusion_latent).
Par préoccupation que ce modèle pourrait être utilisé à mauvais escient, j'ai construit un classificateur qui indique la probabilité qu'un clip audio provienne de Tortoise.
Ce classificateur peut être exécuté sur n'importe quel ordinateur, l'utilisation est la suivante:
python tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>
Ce modèle a une précision de 100% sur le contenu des résultats / et des voix / dossiers dans ce référentiel. Pourtant, traitez ce classificateur comme un "signal fort". Les classificateurs peuvent être dupés et il n'est également pas impossible pour ce classificateur de montrer de faux positifs.
Tortoise TTS s'inspire de Dalle d'Openai, appliquée aux données de la parole et utilisant un meilleur décodeur. Il est composé de 5 modèles distincts qui fonctionnent ensemble: https://nonint.com/2022/04/25/tortoise-architectural-design-doc/