Un modèle de discours génératif pour le dialogue quotidien.
Anglais |简体中文|日本語| Russe | espagnol | Français | 한국어
Note
Ce dépôt contient l'infrastructure de l'algorithme et quelques exemples simples.
Conseil
Pour les produits d'utilisateur final étendus, veuillez vous référer au référentiel d'index Awesome-ChatTTS maintenu par la communauté.
ChatTTS est un modèle de synthèse vocale conçu spécifiquement pour les scénarios de dialogue tels que l'assistant LLM.
Anglais
Chinois
À venir...
Vous pouvez vous référer à cette vidéo sur Bilibili pour la description détaillée.
TTS conversationnelle : ChatTTS est optimisé pour les tâches basées sur le dialogue, permettant une synthèse vocale naturelle et expressive. Il prend en charge plusieurs haut-parleurs, facilitant les conversations interactives.
Contrôle à granularité fine : le modèle pourrait prédire et contrôler les caractéristiques prosodiques à granularité fine, notamment le rire, les pauses et les interjections.
Meilleure prosodie : ChatTTS surpasse la plupart des modèles TTS open source en termes de prosodie. Nous fournissons des modèles pré-entraînés pour soutenir la recherche et le développement ultérieurs.
Important
Le modèle publié est uniquement destiné à des fins académiques.
Le modèle principal est formé avec des données audio en chinois et en anglais de plus de 100 000 heures.
La version open source sur HuggingFace est un modèle pré-entraîné de 40 000 heures sans SFT.
Open source du modèle de base de 40 000 heures et du fichier spk_stats.
Génération audio en streaming.
Encodeur DVAE open source et code d'inférence zéro tir.
Contrôle multi-émotions.
ChatTTS.cpp (un nouveau dépôt dans l'organisation 2noise
est le bienvenu)
Le code est publié sous licence AGPLv3+
.
Le modèle est publié sous licence CC BY-NC 4.0
. Il est destiné à un usage éducatif et de recherche et ne doit pas être utilisé à des fins commerciales ou illégales. Les auteurs ne garantissent pas l'exactitude, l'exhaustivité ou la fiabilité des informations. Les informations et données utilisées dans ce référentiel sont uniquement destinées à des fins académiques et de recherche. Les données sont obtenues à partir de sources accessibles au public et les auteurs ne revendiquent aucun droit de propriété ou de droit d'auteur sur les données.
ChatTTS est un puissant système de synthèse vocale. Cependant, il est très important d’utiliser cette technologie de manière responsable et éthique. Pour limiter l'utilisation de ChatTTS, nous avons ajouté une petite quantité de bruit haute fréquence lors de la formation du modèle de 40 000 heures et compressé autant que possible la qualité audio en utilisant le format MP3, afin d'empêcher les acteurs malveillants de l'utiliser potentiellement à des fins criminelles. fins. Dans le même temps, nous avons formé en interne un modèle de détection et prévoyons de le rendre open source à l'avenir.
Les problèmes/RP GitHub sont toujours les bienvenus.
Pour toute demande formelle sur le modèle et la feuille de route, veuillez nous contacter à [email protected] .
Groupe 1 , 808364215
Groupe 2 , 230696694
Groupe 3 , 933639842
Groupe 4 , 608667975
Rejoignez-nous en cliquant ici.
clone git https://github.com/2noise/ChatTTScd ChatTTS
pip install --upgrade -r exigences.txt
conda create -n chattts python=3.11 conda active les chats pip install -r exigences.txt
pip installer safetensors vllm==0.2.7 torchaudio
Avertissement
NE PAS INSTALLER ! L'adaptation de TransformerEngine est actuellement en cours de développement et NE PEUT PAS fonctionner correctement pour le moment. Installez-le uniquement à des fins de développement. Voir plus de détails au #672 #676
Note
Le processus d'installation est très lent.
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable
Avertissement
NE PAS INSTALLER ! Actuellement, FlashAttention-2 ralentira la vitesse de génération en fonction de ce problème. Installez-le uniquement à des fins de développement.
Note
Voir les appareils pris en charge sur le Hugging Face Doc.
pip install flash-attn --no-build-isolation
Assurez-vous que vous vous trouvez dans le répertoire racine du projet lorsque vous exécutez ces commandes ci-dessous.
exemples python/web/webui.py
Il enregistrera l'audio dans
./output_audio_n.mp3
python examples/cmd/run.py "Votre texte 1." "Votre texte 2."
Installez la version stable depuis PyPI
pip installer ChatTTS
Installez la dernière version depuis GitHub
pip install git+https://github.com/2noise/ChatTTS
Installer à partir du répertoire local en mode développement
pip install -e .
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # Définir sur True pour de meilleures performancestexts = ["METTEZ VOTRE 1er TEXTE ICI", "METTEZ VOTRE 2ème TEXTE ICI"]wavs = chat.infer(textes )for i in range(len(wavs)):""" Dans certaines versions de torchaudio, la première ligne fonctionne mais dans d'autres versions, la deuxième ligne aussi. """essayez :torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)sauf :torchaudio.save(f"basic_output{i}.wav ", torch.from_numpy(wavs[i]), 24000)
##################################### Échantillonnez un locuteur de Gaussian.rand_spk = chat.sample_random_speaker()print (rand_spk) # enregistrez-le pour une récupération de timbre ultérieureparams_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # ajoutez la température du haut-parleur échantillonnée = 0,3, # en utilisant une température personnaliséetop_P = 0,7, # top P decodetop_K = 20, # top K décodage)########################### ######### Pour le contrôle manuel au niveau de la phrase.# utilisez oral_(0-9), rire_(0-2), break_(0-7) # pour générer un jeton spécial dans le texte pour synthétiser.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]', )wavs = chat.infer(textes,params_refine_text=params_refine_text,params_infer_code=params_infer_code, )#################################### Pour le contrôle manuel au niveau des mots.text = 'Qu'est-ce que [uv_break ]votre plat anglais préféré ?[laugh][lbreak]'wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)"""Dans certaines versions de torchaudio, la première ligne fonctionne mais dans d'autres versions, la deuxième ligne aussi."""try:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0 ]).unsqueeze(0), 24000)sauf:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]), 24000)
inputs_en = """chat T T S est un modèle de synthèse vocale conçu pour les applications de dialogue. [uv_break]il prend en charge la saisie en langues mixtes [uv_break] et offre des capacités multi-locuteurs avec un contrôle précis sur les éléments prosodiques comme [uv_break]rire[uv_break][rire ], [uv_break]pauses, [uv_break]et intonation [uv_break]il délivre un discours naturel et expressif,[uv_break]alors s'il vous plaît[uv_break] utilisez le projet de manière responsable. à vos propres risques.[uv_break]""".replace('n', '') # L'anglais est encore expérimental.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_4]', )audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)torchaudio.save("self_introduction_output.wav", torch.from_numpy(audio_array_en[0]), 24000)
locuteur masculin | enceinte féminine |
intro_fr_m.webm | intro_fr_f.webm |
Pour un clip audio de 30 secondes, au moins 4 Go de mémoire GPU sont requis. Pour le GPU 4090, il peut générer de l'audio correspondant à environ 7 jetons sémantiques par seconde. Le facteur temps réel (RTF) est d'environ 0,3.
Il s'agit d'un problème qui se produit généralement avec les modèles autorégressifs (pour l'écorce et la valle). C'est généralement difficile à éviter. On peut essayer plusieurs échantillons pour trouver un résultat approprié.
Dans le modèle actuellement publié, les seules unités de contrôle au niveau du jeton sont [laugh]
, [uv_break]
et [lbreak]
. Dans les versions futures, nous pourrons ouvrir des modèles open source avec des capacités supplémentaires de contrôle émotionnel.
bark, XTTSv2 et valle démontrent un résultat TTS remarquable grâce à un système de style autorégressif.
fish-speech révèle la capacité de GVQ en tant que tokenizer audio pour la modélisation LLM.
vocos qui est utilisé comme vocodeur pré-entraîné.
Laboratoire wlu-audio pour les premières expériences d'algorithmes.