Pitchtron

- Kit de herramientas de transferencia de prosody con el que puede generar discursos elegantes a pesar de que su DB de entrenamiento es voces neutrales de la gente común.
- Podemos transferir dialectos coreanos (Kyongsang, Cheolla) y prosodies emotivas, así como diálogos neutrales.
- Hard Pitchtron es para transferir estrictamente la prosodia, por lo tanto, la estructura de la oración del audio de referencia y la oración objetivo mejor coincida.
- Softtron persigue la transferencia de prosodia de sonido natural, incluso el audio de referencia y la oración objetivo son totalmente diferentes en contenido.
- El DB que estamos lanzando con este proyecto está disponible en emoción_tts
- Las muestras de audio están disponibles en http://jsh-tts.tistory.com/entry/pitchtron
- Pitchtron Paper: https://arxiv.org/abs/2005.10456
Diferencias de tres ramas
- Las tres ramas proporcionadas aquí son para transferencia de prosodia.
- Puede generar el discurso del estilo, la oración y la voz deseados.
- El orador de audio de referencia puede ser cualquier persona y esa persona no es necesaria para ser incluida en los datos de capacitación.
- El altavoz objetivo (la voz del audio sintetizado) debe incluirse en los datos de capacitación.
- Usando Pittle Dorn dura y suave, puede sintetizar en el dialecto 'Kyongsang', el dialecto 'Cheolla' y el estilo emocional, incluso si el modelo solo está entrenado con un habla simple y neutral.
- Por otro lado, para el token de estilo global, necesita el DB del estilo deseado durante el tiempo de entrenamiento.
- Propuse este Pitchtron para hablar en el dialecto coreano de Kyongsang Anc Cheolla.
- El DB de estos dialectos es muy limitado y el 'contorno de tono' es clave para hacer referencia a ellos naturalmente. Esto también es cierto para muchos otros idiomas acentuados (japonés), langauge tonal (chino) y estilo de habla emocional.
| Resolución temporal | Control lineal | Ajuste del rango vocal | Referencia no paralela | Soporte de estilo invisible | Requisito de análisis de dimensión |
|---|
| GST | incógnita | incógnita | incógnita | O | incógnita | O |
| Pitchtron suave | O | * | O | O | O | incógnita |
| Pitchtron duro | O | O | O | ** | O | incógnita |
- *: Softtron le permitirá controlar el tono siempre que pueda sonar natural. Si está fuera del rango vocal del altavoz objetivo, se recortará para hacer un sonido natural.
- **: Hard Pitchtron permite una referencia limitada no paralela.
- No paralelo limitado: el texto puede diferir, pero la estructura de la oración debe coincidir.
| Oración |
|---|
| Referencia | "아니요 지는 그짝허고 이야기허고 싶지 않아요" |
| Objetivo | "그래요 갸는 친구허고 나들이가고 싶은것 같아요" |
- Significado de cada columna
- Resolución temporal: ¿Podemos controlar el estilo de manera diferente por tiempo de tiempo?
- Control lineal: ¿Puedo controlar exactamente qué cantidad se va a escalar el tono (nota)? ¿No tengo que explorar en el espacio de incrustación para descubrir el cambio de escala en la dimensión de incrustación a medida que cambia la entrada?
- Ajuste del rango vocal: si el rango vocal de altavoz de referencia y altavoz objetivo son drásticamente diferentes, ¿puedo hacer referencia naturalmente en el rango vocal del altavoz objetivo?
- Referencia no paralela: si la oración de referencia y la oración objetivo son diferentes, ¿puedo sintetizarla naturalmente?
- Soporte de estilo invisible: si el audio de referencia deseado es del estilo que nunca se ha visto durante el entrenamiento, ¿se puede transferir naturalmente?
- Requisito de análisis de dimensiones: ¿Tengo que analizar qué token/dimensión controlan qué atributo tener control sobre este modelo?
1. Softtron
- Esta rama proporciona transferencia de prosodia no supervisada de oraciones paralelas, no paralelas y no paralelas.
- Paralelo: oración de audio de referencia y coincidencias de oración de síntesis de destino.
- Limitado no paralelo: mencionado anteriormente.
- No paralelo: la oración de audio de referencia y la oración de síntesis de destino no necesita coincidir.
- Similar al token de estilo global, pero hay varias ventajas.
- Es mucho más robusto para los estilos que no se ven durante el entrenamiento.
- Es mucho más fácil de controlar.
- No tiene que analizar tokens o dimensiones para ver qué hace cada token.
- Puede escalar el rango de tono de audio de referencia para que se ajuste al altavoz objetivo para que la transferencia entre género sea más natural.
- También puede controlar el tono para cada entrada de fonema
- El rango de audio de referencia de tono se escala para que se ajuste al del altavoz objetivo para que la transferencia entre género sea más natural.
- Su control sobre el tono no es tan estricto que solo escalará a la cantidad que suena natural.
2. Hard Pitchtron
- Esta rama proporciona transferencia de prosodia no supervisada paralela y 'limitada no paralela'.
- En cambio, el ritmo y el tono son exactamente los mismos que el audio de referencia.
- El rango de audio de referencia de tono se escala para que se ajuste al del altavoz objetivo para que la transferencia entre género sea más natural.
- Tiene un control estricto sobre el rango de tono, a la cantidad en la que se escalará incluso si resulta en un sonido antinatural.
3. Token de estilo global
- Implementación de token de estilo global. Token de estilo global
- A diferencia de Pitchtron, el token de estilo global tiende a funcionar bien solo para los estilos que se ven durante la fase de entrenamiento.
- El rango de tono no se puede escalar, lo que resulta en un sonido ruidoso si el audio de referencia está fuera del rango vocal del altavoz objetivo.
- Dado que no es robusto para el nuevo estilo invisible durante el entrenamiento, a veces genera un habla con energía demasiado fuerte o una pausa demasiado larga.
Pasos de preprocesamiento para ejecutar para TTS coreanos múltiples
python preprocess.py --dataset={following keywords}
Ejecutarlos en el orden siguiente. Puede optar por hacer algunas partes dependiendo de sus necesidades.
- selvas_multisperker_pron
- public_korean_pron
- integrate_dataset
- check_file_integrity
- generar_mel_f0
1. Selvas_multisperker_pron
- PCM sin procesar a WAV_22050 debajo de cada altavoz
- src: '{data_root}/{altavoz}/raw/*. pcm'
- dst: '{data_root}/{altavoz}/wav_22050/*. wav'
- Recorte con 25 DB superior
- división de datos: por cada 400 audio, hazlo evaluación y lo mismo para la prueba
- Tren: 33194 Wavs
- Eval: 83 Wavs
- Prueba: 84 Wavs
- Genere el archivo meta con el script que está en Phoneme *filelists/single_language_selvas/trenes_file_list_pron.txt
2. Public_korean_pron
- Dónde descargar: 서울말 낭독체 발화 말뭉치 말뭉치 말뭉치 말뭉치
- Regularizar la velocidad de muestreo a 22050 Hz (este DB tiene SR irregular)
- Recorte con los 25 db top
- fuente:
- wav_16000/{altavoz}/*. wav
- pron/{altavoz}/t **. txt
- Excluido del guión:
- El script para desabrochar y mover los Wavs a WAV_16000 no está incluido. Necesitas hacerlo de esta forma tú mismo
- El archivo de texto para todos los altavoces es igual en este DB, por lo que dividí este script compartido por literatura manualmente (incluye faltar errores de Newline, así que tuve que hacerlo manualmente)
- Además, el script para G2P tampoco está incluido
- Los errores adicionales en este DB son
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- DST: WAV_22050/{altavoz}/*. WAV
3. Integrate_dataset
- Intego por encima de dos DBS coreanos.
- Esto se puede generalizar a TTS multilingües donde hay múltiples DB de diferentes idiomas.
- Por lo tanto, la correos del código de idioma a cada DB se adjunta al archivo de meta texto integrado creado en este paso.
- Como
- Modifique las listas de archivos de origen ('Train_file_Lists', 'Eval_file_lists', 'test_file_lists') y listas de archivos de destino (target_train_file_list, target_eval_file_list, target_test_file_list) de preprocess.process.integate_dataset (args)
- Es posible que desee modificar el método _integrate () para designar el código de idioma para cada DB. Lo siento, es dura por ahora.
- Ejecutar preprocess.py
python preprocess.py --dataset=integrate_dataset
4. Check_file_integrity
- Este paso genera meta archivo con rutas WAV que no han podido leer.
- Es posible que pueda eliminarlos de sus filelistas finales o realizar alguna investigación. Está en ti. Este paso no elimina estos archivos detectados de los filelistas.
- Out: problematic_merge_korean_pron _ {}. txt
5. Generar_MEL_F0 (opcional)
- Este paso es opcional. Este paso extrae características para capacitación y guardar como archivos.
- SRC: WAV_22050/*. WAV
- DST: Mel/*. PT y F0/*. PT
6. Inicialice las primeras épocas con un solo altavoz DB
- Prepare un tren separado, filelistas válidos para un solo altavoz
- Los archivos para la capacitación y la validación de los altavoces también se incluyen en los filelistas de multiespeaker.
- Experimenté el entrenamiento de 30 épocas iniciales con DB de un solo altavoz y ayudó mucho a la alineación del codificador del codificador de aprendizaje.
¿Cómo entrenar?
1. Comandos
python train.py {program arguments}
2. Argumentos del programa
| Opción | Obligatorio | Objetivo |
|---|
| -O | O | Ruta de directorio para guardar puntos de control. |
| -do | incógnita | Ruta del punto de control previamente por parte de la carga. |
| -La | O | Directorio de registro para soltar registros para TensorBoard. |
3. Modelos de petróleo
*Los modelos previos a la aparición están entrenados en fonema. Esperan fonema como entrada cuando le das textos para sintetizar.
| Modelo | Punto de control previamente | Hiperparámetros a juego |
|---|
| Pitchtron suave | Pitchtron suave | configuraciones |
| Pitchtron duro | Pitchtron duro | configuraciones |
| Token de estilo global | GST | configuraciones |
| Vocoder de globo de onda | Resplandor de onda | - |
¿Cómo sintetizar?
1. Softtron
python inferent_soft_pitchtron.py
2. Hard Pitchtron
python inference_hard_pitchtron.py
3. GST
python inference_gst_tts.py
¡Consejos!
- Para evitar el sonido de agrietamiento, el rango vocal de audio de referencia debe escalarse al rango vocal del altavoz objetivo.
- Esa parte se implementa en nuestro código, pero el rango vocal del altavoz objetivo se calcula de manera gruesa muestreando solo 10 audios y tomando el MAX-min como varianza.
- Obtendrá un sonido mucho mejor si usa estadísticas más precisas para el rango vocal del altavoz objetivo.
Expresiones de gratitud
- Este material se basa en el trabajo respaldado por el Ministerio de Comercio, Industria y Energía (Motie, Corea) bajo el Programa de Innovación de Tecnología Industrial (No. 10080667, Desarrollo de tecnología de síntesis del habla conversacional para expresar la emoción y la personalidad de los robots a través de la diversificación de fuentes de sonido).
- Obtuve ayuda sobre la cubierta de Grapheme to Phoneme de este increíble chico => jeongpil_lee
- Este repositorio es la implementación del autor de Paper siguiente => (Pitchtron) https://arxiv.org/abs/2005.10456
- Repositorios referenciados
| Contribución | Url |
|---|
| Tacotrón2 | https://github.com/nvidia/tacotron2 |
| Mellotrón | https://github.com/nvidia/mellotron |
| Resplandor de onda | https://github.com/nvidia/waveglow |
| Procesamiento de texto coreano | https://github.com/Keithito/tacotron |