o webui ChatTTS
iniciar webui.py
python webui.py
python webui.py --server_port=8080
conda create -n chattts python=3.9
conda activate chattts
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install omegaconf vocos transformers vector-quantize-pytorch
Inglês |中文简体
ChatTTS é um modelo de conversão de texto em fala projetado especificamente para cenários de diálogo, como o assistente LLM. Suporta os idiomas inglês e chinês. Nosso modelo é treinado com mais de 100.000 horas compostas por chinês e inglês. A versão de código aberto no HuggingFace é um modelo pré-treinado de 40.000 horas sem SFT.
Para consultas formais sobre modelo e roteiro, entre em contato conosco em [email protected]. Você pode se juntar ao nosso grupo QQ: 808364215 para discussão. Adicionar problemas no GitHub é sempre bem-vindo.
Para a descrição detalhada do modelo, você pode consultar o vídeo no Bilibili
Este repositório é apenas para fins acadêmicos. Destina-se ao uso educacional e de pesquisa e não deve ser usado para quaisquer fins comerciais ou legais. 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.
import ChatTTS
from IPython . display import Audio
chat = ChatTTS . Chat ()
chat . load_models ()
texts = [ "" ,]
wavs = chat . infer ( texts , use_decoder = True )
Audio ( wavs [ 0 ], rate = 24_000 , autoplay = True )
###################################
# Sample a speaker from Gaussian.
import torch
std , mean = torch . load ( 'ChatTTS/asset/spk_stat.pt' ). chunk ( 2 )
rand_spk = torch . randn ( 768 ) * std + mean
params_infer_code = {
'spk_emb' : rand_spk , # add sampled speaker
'temperature' : .3 , # using custom temperature
'top_P' : 0.7 , # top P decode
'top_K' : 20 , # top K decode
}
###################################
# For sentence level manual control.
# use oral_(0-9), laugh_(0-2), break_(0-7)
# to generate special token in text to synthesize.
params_refine_text = {
'prompt' : '[oral_2][laugh_0][break_6]'
}
wav = chat . infer ( "" , params_refine_text = params_refine_text , params_infer_code = params_infer_code )
###################################
# For word level manual control.
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wav = chat . infer ( text , skip_refine_text = True , params_infer_code = params_infer_code )
inputs_en = """
chat T T S is a text to speech model designed for dialogue applications.
[uv_break]it supports mixed language input [uv_break]and offers multi speaker
capabilities with precise control over prosodic elements [laugh]like like
[uv_break]laughter[laugh], [uv_break]pauses, [uv_break]and intonation.
[uv_break]it delivers natural and expressive speech,[uv_break]so please
[uv_break] use the project responsibly at your own risk.[uv_break]
""" . replace ( ' n ' , '' ) # English is still experimental.
params_refine_text = {
'prompt' : '[oral_2][laugh_0][break_4]'
}
audio_array_cn = chat . infer ( inputs_cn , params_refine_text = params_refine_text )
audio_array_en = chat . infer ( inputs_en , params_refine_text = params_refine_text )
Para um clipe de áudio de 30 segundos, são necessários pelo menos 4 GB de memória GPU. Para a GPU 4090D, ela pode gerar áudio correspondente a aproximadamente 7 tokens semânticos por segundo. O fator em tempo real (RTF) está em torno de 0,65.
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.