Una implementación de Pytorch de CS-Tacotron, una síntesis del habla que cambia de código, el modelo TTS generativo de extremo a extremo basado en Tacotron. Para una versión regular de Tacotron, consulte este repositorio.
Con el amplio éxito de los modelos recientes de texto a voz de aprendizaje automático (TTS), los resultados prometedores sobre la sintetización del habla realista han demostrado la capacidad de la máquina de sintetizar voces similares a los humanos. Sin embargo, se han realizado pocos progresos en el dominio de la síntesis de texto a voz de código inglés-inglés, donde la máquina debe aprender a manejar la entrada y la salida de manera multilingüe. El cambio de código ocurre cuando un hablante alterna entre dos o más idiomas, hoy en día las personas se comunican en los idiomas de cambio de código en la vida cotidiana, por lo tanto, las tecnologías de lenguaje habladas como TTS deben desarrollarse para manejar la entrada y salida multilingües.
En este trabajo, presentamos Tacotron de cambio de código, que se construye en función del modelo generativo de texto a discurso de última generación (Wang et al., 2017). CS-Tacotron es capaz de sintetizar el habla de cambio de código condicionado en el texto CS sin procesar. Dados el texto de CS y los pares de audio, nuestro modelo puede ser entrenado de extremo a extremo con el preprocesamiento de datos adecuado. Además, capacitamos a nuestro modelo en el conjunto de datos de conferencias, un conjunto de datos basado en conferencias de código inglés-inglés, que se origina en el procesamiento de señales digitales (DSP) del curso que se ofrece en la Universidad Nacional de Taiwán (NTU). Presentamos varias técnicas de implementación clave para que el modelo Tacotron funcione bien en esta desafiante tarea multilingüe de generación de voz. CS-Tacotron posee la capacidad de generar discurso CS a partir del texto CS, y habla vívidamente con el estilo del altavoz de LecturedSP.
Consulte Report.pdf para obtener más detalles de este trabajo.
¡Las solicitudes de extracción son bienvenidas!
Muestras de audio de CS-Tacotron. Todas las frases a continuación no se ven durante el entrenamiento.
Instale Python 3.
Instale la última versión de Pytorch de acuerdo con su plataforma. Para un mejor rendimiento, instale con soporte de GPU (CUDA) si es viable. Este código funciona con Pytorch 1.0 y posterior.
(Opcional) Instale la última versión de TensorFlow de acuerdo con su plataforma. Esto puede ser opcional, pero por ahora requerido para el procesamiento del habla.
Requisitos de instalación:
pip3 install -r requirements.txt
ADVERTENCIA: Debe instalar Torch y TensorFlow / TensorFlow-GPU dependiendo de su plataforma. Aquí enumeramos la versión Pytorch y TensorFlow que usamos cuando construimos este proyecto.
python3 test.py --interactive --plot --long_input --model 470000
python3 test.py --plot --model 480000 --test_file_path ../data/text/test_sample.txt
* '--long_input' is optional to add
Nota: Entrenamos nuestro modelo en nuestro propio conjunto de datos: Lecturedsp. Actualmente, este conjunto de datos no está disponible para el lanzamiento público y sigue siendo una colección privada en el laboratorio. Consulte 'Report.pdf' para obtener más información sobre este conjunto de datos.
Descargue un conjunto de datos de cambio de código de su elección.
Desempaqué el conjunto de datos en ~/data/text y ~/data/audio .
Después de desempacar, su árbol de datos debe verse así para que funcionen las rutas predeterminadas:
./CS-Tacotron
|- data
|- text
|- train_sample.txt
|- test_sample.txt
|- audio
|- sample
|- audio_sample_*.wav
|- ...
Nota: Para la siguiente sección, establezca las rutas de acuerdo con los nombres de archivo de su conjunto de datos, esto es solo una demostración de algunos datos de muestra. El formato de su conjunto de datos debe coincidir con los datos de muestra proporcionados para que este código funcione.
Preprocese los datos de texto utilizando src/preprocess.py:
python3 preprocess.py --mode text --text_input_raw_path ../data/text/train_sample.txt --text_pinyin_path '../data/text/train_sample_pinyin.txt'
Preprocese los datos de audio utilizando src/preprocess.py:
python3 preprocess.py --mode audio --audio_input_dir ../data/audio/sample/ --audio_output_dir ../data/audio/sample_processed/ --visualization_dir ../data/audio/sample_visualization/
Visualización de las diferencias de preprocesamiento de audio:
Realice los meta archivos listos para el modelo de texto y audio usando src/preprocess.py:
python3 preprocess.py --mode meta --text_pinyin_path ../data/text/train_sample_pinyin.txt --audio_output_dir ../data/audio/sample_processed/
Entrena un modelo con SRC/Train.py
python3 train.py
Los hiperparámetros sintonizables se encuentran en src/config.py. Puede ajustar estos parámetros y configuración editando el archivo. Se recomiendan los hiperparámetros predeterminados para conferencias y otros datos de conmutación de código chino-inglés.
Monitorear con TensorBoardX (opcional)
tensorboard --logdir 'path to log dir'
El entrenador arroja audio y alineaciones cada 2000 pasos por defecto. Puede encontrarlos en CS-tacotron/ckpt .
Nos gustaría dar crédito al trabajo de Ryuichi Yamamoto, una maravillosa implementación de Pytorch de Tacotron, en la que principalmente basamos nuestro trabajo.
Mostramos el gráfico de alineación de la fase de prueba de nuestro modelo, donde el primero muestra la alineación de la entrada china monolingüe, la segunda es la entrada de cambio de código chino-inglés, y el tercero es la entrada de inglés monolingüe, respectivamente.