Un modelo de discurso generativo para el diálogo diario.
Inglés |简体中文|日本語| ruso | Español | Francés | 한국어
Nota
Este repositorio contiene la infraestructura del algoritmo y algunos ejemplos simples.
Consejo
Para los productos extendidos para el usuario final, consulte el repositorio de índice Awesome-ChatTTS mantenido por la comunidad.
ChatTTS es un modelo de texto a voz diseñado específicamente para escenarios de diálogo como el asistente LLM.
Inglés
Chino
Muy pronto...
Puede consultar este vídeo en Bilibili para obtener una descripción detallada.
TTS conversacional : ChatTTS está optimizado para tareas basadas en diálogos, lo que permite una síntesis de voz natural y expresiva. Admite múltiples hablantes, lo que facilita conversaciones interactivas.
Control detallado : el modelo podría predecir y controlar características prosódicas detalladas, incluidas la risa, las pausas y las interjecciones.
Mejor prosodia : ChatTTS supera a la mayoría de los modelos TTS de código abierto en términos de prosodia. Proporcionamos modelos previamente entrenados para respaldar futuras investigaciones y desarrollos.
Importante
El modelo publicado es sólo para fines académicos.
El modelo principal está entrenado con datos de audio en chino e inglés de más de 100.000 horas.
La versión de código abierto de HuggingFace es un modelo preentrenado de 40.000 horas sin SFT.
Abra el modelo de base de 40 000 horas y el archivo spk_stats.
Generación de audio en streaming.
Codificador DVAE de código abierto y código de inferencia de disparo cero.
Control de múltiples emociones.
ChatTTS.cpp (se agradece el nuevo repositorio en 2noise
org)
El código está publicado bajo licencia AGPLv3+
.
El modelo está publicado bajo licencia CC BY-NC 4.0
. Está destinado a uso educativo y de investigación, y no debe utilizarse con fines comerciales o ilegales. Los autores no garantizan la exactitud, integridad o confiabilidad de la información. La información y los datos utilizados en este repositorio son únicamente para fines académicos y de investigación. Los datos se obtienen de fuentes disponibles públicamente y los autores no reclaman ninguna propiedad ni derechos de autor sobre los datos.
ChatTTS es un potente sistema de conversión de texto a voz. Sin embargo, es muy importante utilizar esta tecnología de forma responsable y ética. Para limitar el uso de ChatTTS, agregamos una pequeña cantidad de ruido de alta frecuencia durante el entrenamiento del modelo de 40,000 horas y comprimimos la calidad del audio tanto como sea posible usando el formato MP3, para evitar que actores malintencionados lo utilicen potencialmente con fines delictivos. propósitos. Al mismo tiempo, hemos entrenado internamente un modelo de detección y planeamos abrirlo en el futuro.
Los problemas/PR de GitHub siempre son bienvenidos.
Para consultas formales sobre el modelo y la hoja de ruta, contáctenos en [email protected] .
Grupo 1 , 808364215
Grupo 2 , 230696694
Grupo 3 , 933639842
Grupo 4 , 608667975
Únase haciendo clic aquí.
clon de git https://github.com/2noise/ChatTTScd ChatTTS
instalación de pip --actualización -r requisitos.txt
conda crear -n chattts python=3.11 conda activar chats instalación de pip -r requisitos.txt
pip instala tensores de seguridad vllm==0.2.7 torchaudio
Advertencia
¡NO INSTALE! La adaptación de TransformerEngine está actualmente en desarrollo y NO PUEDE ejecutarse correctamente ahora. Instálelo únicamente con fines de desarrollo. Ver más detalles en #672 #676
Nota
El proceso de instalación es muy lento.
pip instalar git+https://github.com/NVIDIA/TransformerEngine.git@stable
Advertencia
¡NO INSTALE! Actualmente, FlashAttention-2 reducirá la velocidad de generación según este problema. Instálelo únicamente con fines de desarrollo.
Nota
Consulte los dispositivos compatibles en Hugging Face Doc.
pip install flash-attn --no-build-isolation
Asegúrese de estar en el directorio raíz del proyecto cuando ejecute estos comandos a continuación.
ejemplos de Python/web/webui.py
Guardará el audio en
./output_audio_n.mp3
python ejemplos/cmd/run.py "Tu texto 1." "Tu texto 2."
Instale la versión estable desde PyPI
instalación de pip ChatTTS
Instale la última versión desde GitHub
pip instalar git+https://github.com/2noise/ChatTTS
Instalar desde el directorio local en modo dev
instalación de pip -e.
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # Establecer en True para un mejor rendimientotexts = ["PON TU 1er TEXTO AQUÍ", "PON TU 2º TEXTO AQUÍ"]wavs = chat.infer(texts )for i in range(len(wavs)):""" En algunas versiones de torchaudio, la primera línea funciona, pero en otras versiones, también lo hace la segunda línea """try:torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)excepto:torchaudio.save(f"basic_output{i} .wav", antorcha.from_numpy(wavs[i]), 24000)
#################################### Muestra un altavoz de Gaussian.rand_spk = chat.sample_random_speaker()print (rand_spk) # guardarlo para una recuperación posterior del timbreparams_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # agregar muestra temperatura del altavoz = .3, # usando temperatura personalizadatop_P = 0.7, # decodificación P superiortop_K = 20, # decodificación K superior)########################## ########### Para control manual a nivel de oración.# use oral_(0-9), risa_(0-2), descanso_(0-7) # para generar un token especial en el texto para synthesize.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 control manual a nivel de palabra.text = '¿Qué es [uv_break? ]¿tu comida inglesa favorita?[risas][lbreak]'wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)"""En algunas versiones de torchaudio, la primera línea funciona, pero en otras versiones, también lo hace la segunda línea."""try:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0 ]).unsqueeze(0), 24000)excepto:torchaudio.save("word_level_output.wav", antorcha.from_numpy(wavs[0]), 24000)
inputs_en = """chat T T S es un modelo de texto a voz diseñado para aplicaciones de diálogo. [uv_break]admite entrada de lenguaje mixto [uv_break]y ofrece capacidades de múltiples hablantes con control preciso sobre elementos prosódicos como [uv_break]risa[uv_break][risa ], [uv_break]pausas, [uv_break]y entonación. [uv_break]ofrece un habla natural y expresiva,[uv_break]así que[uv_break] utiliza el proyecte responsablemente bajo su propio riesgo.[uv_break]""".replace('n', '') # El inglés aún es 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)
altavoz masculino | altavoz femenino |
intro_en_m.webm | intro_es_f.webm |
Para un clip de audio de 30 segundos, se requieren al menos 4 GB de memoria GPU. Para la GPU 4090, puede generar audio correspondiente a aproximadamente 7 tokens semánticos por segundo. El factor de tiempo real (RTF) es de alrededor de 0,3.
Este es un problema que suele ocurrir con los modelos autorregresivos (para corteza y valle). Generalmente es difícil de evitar. Se pueden probar varias muestras para encontrar un resultado adecuado.
En el modelo lanzado actualmente, las únicas unidades de control a nivel de token son [laugh]
, [uv_break]
y [lbreak]
. En versiones futuras, es posible que abramos modelos de código abierto con capacidades adicionales de control emocional.
bark, XTTSv2 y valle demuestran un resultado TTS notable mediante un sistema de estilo autorregresivo.
fish-speech revela la capacidad de GVQ como tokenizador de audio para el modelado LLM.
vocos que se utiliza como codificador de voz previamente entrenado.
Laboratorio wlu-audio para experimentos de algoritmos iniciales.