Muyan-TTS: síntesis y entrenamiento del habla en podcasts personalizados

Introducción general

Muyan-TTS es un modelo de texto a voz (TTS) de código abierto diseñado para podcasts. Está preentrenado con más de 100.000 horas de datos de audio de podcasts y admite la síntesis de voz sin muestras para generar voz natural de alta calidad. El modelo se basa en Llama-3.2-3B y combina las tecnologías SoVITS Muyan-TTS también admite la personalización del habla a partir de decenas de minutos de datos del habla de una sola persona, adaptados a las necesidades de timbres específicos. El proyecto se publica bajo licencia Apache 2.0, con el código de entrenamiento completo, el flujo de procesamiento de datos y los pesos del modelo alojados en GitHub, Hugging Face y ModelScope, y se anima a los desarrolladores a que desarrollen y contribuyan a la comunidad.

Muyan-TTS:个性化播客语音训练与合成

 

Lista de funciones

  • Síntesis de voz de muestra ceroGeneración de voz de alta calidad con estilo podcast sin formación adicional, adaptándose a una amplia gama de entradas tonales.
  • Personalización de la voz: Genera la voz de un orador específico afinando unos minutos de datos de voz de una persona.
  • Velocidad de razonamiento eficiente: Aproximadamente 0,33 segundos de generación de audio por segundo en una sola GPU NVIDIA A100, superando a múltiples modelos TTS de código abierto.
  • Código de formación de código abierto: Proporciona un proceso de formación completo, desde el modelo base hasta el modelo de ajuste fino, con soporte para la personalización por parte de los desarrolladores.
  • Proceso de datosIntegración con Whisper, FunASR y NISQA para limpiar y transcribir datos de audio de podcasts.
  • Asistencia para la implantación de API: Proporciona herramientas API para facilitar la integración en podcasts u otras aplicaciones de voz.
  • Pesos del modelo abierto: Los pesos de los modelos Muyan-TTS y Muyan-TTS-SFT pueden descargarse de Hugging Face y ModelScope.

 

Utilizar la ayuda

Proceso de instalación

La instalación de Muyan-TTS debe realizarse bajo entorno Linux, se recomienda Ubuntu. A continuación se detallan los pasos:

  1. almacén de clones
    Abra un terminal y ejecute el siguiente comando para clonar el repositorio Muyan-TTS:

    git clone https://github.com/MYZY-AI/Muyan-TTS.git
    cd Muyan-TTS
  1. Creación de un entorno virtual
    Creación de un entorno virtual para Python 3.10 con Conda:

    conda create -n muyan-tts python=3.10 -y
    conda activate muyan-tts
    
  2. Instalación de dependencias
    Ejecute el siguiente comando para instalar las dependencias del proyecto:

    make build
    

    Nota: FFmpeg necesita ser instalado. funciona en Ubuntu:

    sudo apt update
    sudo apt install ffmpeg
    
  3. Descargar modelo preentrenado
    Descargue los pesos del modelo en el siguiente enlace:

    pretrained_models
    ├── chinese-hubert-base
    ├── Muyan-TTS
    └── Muyan-TTS-SFT
    
  4. Verificar la instalación
    Después de asegurarse de que todas las dependencias y archivos del modelo están correctamente instalados, se puede realizar la inferencia o el entrenamiento.

Utilización del modelo de base (síntesis de voz de muestra cero)

El modelo base de Muyan-TTS admite la síntesis de voz de muestra cero, que es adecuada para generar rápidamente voz de tipo podcast. Los pasos son los siguientes:

  1. Preparar el texto de entrada y el audio de referencia
    Prepare un texto (text) y el discurso de referencia (ref_wav_path). Ejemplo:

    ref_wav_path="assets/Claire.wav"
    prompt_text="Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige."
    text="Welcome to the captivating world of podcasts, let's embark on this exciting journey together."
    
  2. Ejecute el comando de razonamiento
    Utilice el siguiente comando para generar voz, especificando model_type debido a base::

    python tts.py
    

    O simplemente ejecuta el código de inferencia del núcleo:

    async def main(model_type, model_path):
    tts = Inference(model_type, model_path, enable_vllm_acc=False)
    wavs = await tts.generate(
    ref_wav_path="assets/Claire.wav",
    prompt_text="Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige.",
    text="Welcome to the captivating world of podcasts, let's embark on this exciting journey together."
    )
    output_path = "logs/tts.wav"
    with open(output_path, "wb") as f:
    f.write(next(wavs))
    print(f"Speech generated in {output_path}")
    

    El discurso generado se guarda en la carpeta logs/tts.wav.

  3. Sustitución del audio de referencia
    En el modo de muestra cero, elref_wav_path Puede sustituirse por la voz de cualquier locutor, y el modelo imitará su timbre para generar una nueva voz.

Utilización del modelo SFT (personalización de la voz)

El modelo SFT se afina con datos de habla de una sola persona adecuados para generar timbres específicos. El procedimiento es el siguiente:

  1. Preparar los datos de entrenamiento
    Recoge al menos unos minutos de datos del habla de una sola persona y guárdalos en formato WAV. Utilice como ejemplo el conjunto de datos dev-clean de LibriSpeech, disponible para su descarga:

    wget --no-check-certificate https://www.openslr.org/resources/12/dev-clean.tar.gz
    

    Después de descomprimir el prepare_sft_dataset.py especificado en librispeech_dir es la ruta de descompresión.

  2. Generar datos de entrenamiento
    Ejecute el siguiente comando para procesar los datos y generar data/tts_sft_data.json::

    ./train.sh
    

    El formato de los datos es el siguiente:

    {
    "file_name": "path/to/audio.wav",
    "text": "对应的文本内容"
    }
    
  3. Ajuste de la configuración de entrenamiento
    compilador training/sft.yaml, establecer parámetros como la tasa de aprendizaje, el tamaño del lote, etc.
  4. Iniciar la formación
    train.sh El siguiente comando se ejecuta automáticamente para iniciar el entrenamiento:

    llamafactory-cli train training/sft.yaml
    

    Una vez finalizado el entrenamiento, los pesos del modelo se guardan en el archivo pretrained_models/Muyan-TTS-new-SFT.

  5. Copiar los pesos SoVITS
    Poniendo el modelo base sovits.pth Copiar en el directorio del nuevo modelo:

    cp pretrained_models/Muyan-TTS/sovits.pth pretrained_models/Muyan-TTS-new-SFT
    
  6. razonamiento en funcionamiento
    Para generar discurso utilizando el modelo SFT, es necesario mantener ref_wav_path Coherente con el altavoz utilizado en la formación:

    python tts.py --model_type sft
    

Despliegue mediante API

Muyan-TTS soporta el despliegue de APIs para una fácil integración en las aplicaciones. Los pasos son los siguientes:

  1. Iniciar el servicio API
    Ejecute el siguiente comando para iniciar el servicio. el puerto por defecto es 8020:

    python api.py --model_type base
    

    Los registros de servicio se guardan en el logs/llm.log.

  2. Enviar solicitud
    Utilice el siguiente código Python para enviar la solicitud:

    import requests
    payload = {
    "ref_wav_path": "assets/Claire.wav",
    "prompt_text": "Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige.",
    "text": "Welcome to the captivating world of podcasts, let's embark on this exciting journey together.",
    "temperature": 0.6,
    "speed": 1.0,
    }
    url = "http://localhost:8020/get_tts"
    response = requests.post(url, json=payload)
    with open("logs/tts.wav", "wb") as f:
    f.write(response.content)
    

advertencia

  • requisitos de hardwarePara la inferencia se recomienda la GPU NVIDIA A100 (40 GB) o equivalente.
  • restricción lingüística: Dado que los datos de formación están principalmente en inglés, actualmente sólo se admite la entrada en inglés.
  • Calidad de los datosLa calidad del habla del modelo SFT depende de la claridad y coherencia de los datos de entrenamiento.
  • Costes de formaciónEl coste total del preentrenamiento fue de aproximadamente 50.000 dólares, incluyendo el procesamiento de datos (30.000 dólares), el preentrenamiento LLM (19.200 dólares) y el entrenamiento del descodificador (0,134 millones de dólares).

 

escenario de aplicación

  1. Creación de contenidos para podcasts
    Muyan-TTS convierte rápidamente los guiones de podcast en habla natural para que los creadores independientes generen audio de alta calidad. Los usuarios pueden generar habla al estilo podcast con solo introducir el texto y el habla de referencia, lo que reduce los costes de grabación.
  2. Producción de audiolibros
    Con el modelo SFT, los creadores pueden personalizar la voz de determinados personajes para generar capítulos de audiolibros. El modelo admite la generación de audios largos, lo que resulta idóneo para contenidos extensos.
  3. Desarrollo de asistentes de voz
    Los desarrolladores pueden integrar Muyan-TTS en los asistentes de voz a través de API para ofrecer una experiencia de interacción por voz natural y personalizada.
  4. Generación de contenidos educativos
    Las escuelas u organizaciones de formación pueden convertir el material didáctico a voz para generar audio para ejercicios de comprensión oral o explicaciones de cursos, adecuados para el aprendizaje de idiomas o para discapacitados visuales.

 

CONTROL DE CALIDAD

  1. ¿Qué idiomas admite Muyan-TTS?
    En la actualidad sólo se admite el inglés, ya que los datos de entrenamiento están dominados por podcasts en inglés. En el futuro se podrán utilizar otros idiomas ampliando el conjunto de datos.
  2. ¿Cómo mejorar la calidad del habla de los modelos SFT?
    Utilice datos de habla unipersonal claros y de alta calidad para evitar el ruido de fondo. Asegúrese de que los datos de entrenamiento coinciden con el estilo de habla de la escena de destino.
  3. ¿Y el razonamiento lento?
    Garantizar el uso de ayudas vLLM Entornos GPU acelerados. En nvidia-smi Comprueba el uso de memoria para asegurarte de que el modelo se carga correctamente en la GPU.
  4. ¿Admite el uso comercial?
    Muyan-TTS se publica bajo la licencia Apache 2.0 y se admite su uso comercial, sujeto a los términos de la licencia.
  5. ¿Cómo puedo obtener asistencia técnica?
    Las incidencias pueden enviarse a través de GitHub (Cuestiones) o únete a la comunidad Discord (Discordia) Consigue apoyo.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...