Um modelo de discurso generativo para o diálogo diário.
Inglês |简体中文|日本語| Russo | Espanhol | Français | 한국어
Observação
Este repositório contém a infraestrutura do algoritmo e alguns exemplos simples.
Dica
Para produtos estendidos para usuário final, consulte o repositório de índice Awesome-ChatTTS mantido pela comunidade.
ChatTTS é um modelo de conversão de texto em fala projetado especificamente para cenários de diálogo, como assistente LLM.
Inglês
chinês
Em breve...
Você pode consultar este vídeo no Bilibili para uma descrição detalhada.
TTS conversacional : ChatTTS é otimizado para tarefas baseadas em diálogo, permitindo síntese de fala natural e expressiva. Suporta vários alto-falantes, facilitando conversas interativas.
Controle refinado : o modelo pode prever e controlar características prosódicas refinadas, incluindo risos, pausas e interjeições.
Melhor prosódia : ChatTTS supera a maioria dos modelos TTS de código aberto em termos de prosódia. Fornecemos modelos pré-treinados para apoiar pesquisas e desenvolvimento adicionais.
Importante
O modelo divulgado é apenas para fins acadêmicos.
O modelo principal é treinado com dados de áudio em chinês e inglês de mais de 100.000 horas.
A versão de código aberto no HuggingFace é um modelo pré-treinado de 40.000 horas sem SFT.
Abra o código-fonte do modelo base de 40 mil horas e do arquivo spk_stats.
Geração de streaming de áudio.
Codificador DVAE de código aberto e código de inferência zero shot.
Controle multiemocional.
ChatTTS.cpp (novo repositório em 2noise
org é bem-vindo)
O código é publicado sob licença AGPLv3+
.
O modelo é publicado sob licença CC BY-NC 4.0
. Destina-se ao uso educacional e de pesquisa e não deve ser usado para fins comerciais ou ilegais. Os autores não garantem a exatidão, integridade ou confiabilidade das informações. As informações e dados utilizados neste repositório são apenas para fins acadêmicos e de pesquisa. Os dados são obtidos de fontes publicamente disponíveis e os autores não reivindicam qualquer propriedade ou direito autoral sobre os dados.
ChatTTS é um poderoso sistema de conversão de texto em fala. No entanto, é muito importante utilizar esta tecnologia de forma responsável e ética. Para limitar o uso do ChatTTS, adicionamos uma pequena quantidade de ruído de alta frequência durante o treinamento do modelo de 40.000 horas e comprimimos a qualidade do áudio tanto quanto possível usando o formato MP3, para evitar que agentes mal-intencionados possam usá-lo para fins criminosos. propósitos. Ao mesmo tempo, treinamos internamente um modelo de detecção e planejamos abri-lo no futuro.
Problemas/PRs do GitHub são sempre bem-vindos.
Para consultas formais sobre o modelo e roteiro, entre em contato conosco em [email protected] .
Grupo 1 , 808364215
Grupo 2 , 230696694
Grupo 3 , 933639842
Grupo 4 , 608667975
Participe clicando aqui.
clone do git https://github.com/2noise/ChatTTScd ChatTTS
pip instalar --upgrade -r requisitos.txt
conda criar -n chattts python=3.11 conda ativar chattts pip instalar -r requisitos.txt
pip instalar tensores de segurança vllm==0.2.7 torchaudio
Aviso
NÃO INSTALE! A adaptação do TransformerEngine está atualmente em desenvolvimento e NÃO PODE funcionar corretamente agora. Instale-o apenas para fins de desenvolvimento. Veja mais detalhes em #672 #676
Observação
O processo de instalação é muito lento.
pip instalar git + https://github.com/NVIDIA/TransformerEngine.git@stable
Aviso
NÃO INSTALE! Atualmente o FlashAttention-2 irá diminuir a velocidade de geração de acordo com este problema. Instale-o apenas para fins de desenvolvimento.
Observação
Veja os dispositivos suportados no Hugging Face Doc.
pip instalar flash-attn --no-build-isolation
Certifique-se de estar no diretório raiz do projeto ao executar os comandos abaixo.
exemplos de python/web/webui.py
Isso salvará o áudio em
./output_audio_n.mp3
python exemplos/cmd/run.py "Seu texto 1." "Seu texto 2."
Instale a versão estável do PyPI
pip instalar ChatTTS
Instale a versão mais recente do GitHub
pip instalar git + https://github.com/2noise/ChatTTS
Instalar a partir do diretório local no modo dev
pip instalar -e.
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # Defina como True para melhor desempenhotexts = ["COLOQUE SEU 1º TEXTO AQUI", "COLOQUE SEU 2º TEXTO AQUI"]wavs = chat.infer(textos )for i in range(len(wavs)):""" Em algumas versões do torchaudio, a primeira linha funciona, mas em outras versões, a segunda linha também. """tente:torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)exceto:torchaudio.save(f"basic_output{i}.wav ", tocha.from_numpy(wavs[i]), 24000)
################################## Amostra de um alto-falante de Gaussian.rand_spk = chat.sample_random_speaker()print (rand_spk) # salve para recuperação de timbre posteriorparams_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # add temperatura amostrada do alto-falante = 0,3, # usando temperatura personalizadatop_P = 0,7, # top P decodetop_K = 20, # top K decode)######################## ############ Para controle manual em nível de frase.# use oral_(0-9), risada_(0-2), break_(0-7) # para gerar um token especial no texto para sintetizar.params_refine_text=ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]', )wavs = chat.infer(textos,params_refine_text=params_refine_text,params_infer_code=params_infer_code, )#################################### Para controle manual de nível de palavra.text = 'O que é [uv_break ]sua comida inglesa favorita?[risos][lbreak]'wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)"""Em algumas versões do torchaudio, a primeira linha funciona, mas em outras versões, a segunda linha também."""try:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0 ]).unsqueeze(0), 24000)exceto:torchaudio.save("word_level_output.wav", tocha.from_numpy(wavs[0]), 24000)
inputs_en = """chat T T S é um modelo de texto para fala projetado para aplicações de diálogo. [uv_break]ele suporta entrada de linguagem mista [uv_break]e oferece recursos de vários alto-falantes com controle preciso sobre elementos prosódicos como [uv_break]risos[uv_break][laugh ], [uv_break]pausas, [uv_break]e entonação [uv_break]proporciona uma fala natural e expressiva,[uv_break]então por favor[uv_break] use o projeto com responsabilidade por sua própria conta e risco.[uv_break]""".replace('n', '') # Inglês ainda é experimental.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)
palestrante masculino | palestrante feminina |
intro_en_m.webm | intro_en_f.webm |
Para um clipe de áudio de 30 segundos, são necessários pelo menos 4 GB de memória GPU. Para a GPU 4090, ela pode gerar áudio correspondente a aproximadamente 7 tokens semânticos por segundo. O Fator de Tempo Real (RTF) está em torno de 0,3.
Este é um problema que normalmente ocorre com modelos autorregressivos (para casca e vale). Geralmente é difícil evitar. Pode-se tentar várias amostras para encontrar um resultado adequado.
No modelo lançado atualmente, as únicas unidades de controle em nível de token são [laugh]
, [uv_break]
e [lbreak]
. Em versões futuras, poderemos abrir modelos de código aberto com recursos adicionais de controle emocional.
peel, XTTSv2 e valle demonstram um resultado notável de TTS por um sistema de estilo autorregressivo.
fish-speech revela capacidade do GVQ como tokenizador de áudio para modelagem LLM.
vocos que é usado como um vocoder pré-treinado.
laboratório wlu-audio para experimentos iniciais de algoritmos.