Implementación oficial de TSELM: extracción de hablantes objetivo mediante tokens discretos y modelos de lenguaje.
Para hacer referencia a la clase de modelo, consulte exp/tselm/model.py directamente. Tenga en cuenta que el audio mezclado se recorta a una longitud de 48080 (3,05 sx 16 khz) y la voz de referencia se recorta a 64080 (4,05 sx 16 khz) para entrenamiento, respectivamente.
Proponemos TSELM, una novedosa red de extracción de hablantes objetivo que aprovecha tokens discretos y modelos de lenguaje. TSELM utiliza múltiples capas discretizadas de WavLM como tokens de entrada e incorpora mecanismos de atención cruzada para integrar la información del hablante objetivo. Se emplean modelos de lenguaje para capturar las dependencias de secuencia, mientras que se utiliza un HiFi-GAN escalable para reconstruir el audio a partir de los tokens. Al aplicar una pérdida de entropía cruzada, TSELM modela la distribución de probabilidad de los tokens de salida, convirtiendo así el complejo problema de regresión de la generación de audio en una tarea de clasificación. Los resultados experimentales muestran que TSELM logra resultados excelentes en calidad del habla y resultados comparables en inteligibilidad del habla.
requirements.txt
Antes de realizar experimentos, debemos descargar los siguientes modelos congelados previamente entrenados.
Nombre | Enlace | Resultado |
---|---|---|
WavLM grande | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-grande |
K significa | Descargar Kmeans Checkpoint | kmeans_ckpt |
HiFiGAN escalable | Descargar punto de control HiFiGAN | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
Tenga en cuenta que para la salida de WavLM Large, se recomienda clonar todo el repositorio o descargar todo el directorio. Para Kmeans y Scalable HiFiGAN, debemos extraerlos después de la descarga.
La configuración de entrenamiento se especifica mediante el paquete hyperpyyaml
, que es básicamente un reflejo.
La configuración para entrenar TSELM-L
se puede encontrar en config/tselm_l.yaml. Antes del entrenamiento, debe especificar la configuración de los modelos preentrenados congelados y otros detalles del entrenamiento. Los detalles se pueden encontrar en config/tselm_l.yaml y config/README.md.
Después de la configuración, puede ejecutar
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
especifica la ruta al archivo de configuración.--log
especifica el directorio de salida del registro. Todos los registros se colocarán aquí.--ckpt_path
especifica el directorio del punto de control. El entrenamiento se puede reanudar utilizando la misma ruta del punto de control. Después del entrenamiento, el mejor modelo estará en
.
Para inferir nuestro modelo en el conjunto de pruebas libri2mix, por ejemplo, puede ejecutar
# # Generate output audio on libri2mix testset
python inference.py -scp < path_to_libri2mix_test_scp_folder >
-config ./config/tselm_l.yaml
-ckpt < path_to_ckpt >
--output < path_to_output_folder >
-gpus cuda:0 cuda:1 cuda:2 cuda:3
-proc 8
-scp
especifica la ruta a la carpeta del conjunto de pruebas libri2mix que contiene aux_s1.scp
, s1.scp
y mix_clean.scp
.-config
especifica la configuración. Esta configuración debe tener el campo model
.-ckpt
especifica el punto de control del modelo.--output
especifica el directorio de salida. El audio de salida se enviará a esta carpeta. Sus nombres serán los mismos que los de los archivos .scp.-gpus
especifica las gpus disponibles para ejecutar la inferencia.-proc
especifica el número total de procesos para ejecutar la inferencia en paralelo. Utilizará las gpus proporcionadas y dividirá los procesos por igual en cada dispositivo. Los datos se dividirán en partes iguales para cada proceso. Nuestro punto de control TSELM-L se puede descargar aquí.
Puede inferir el conjunto de pruebas libri2mix sustituyendo -ckpt
por la ruta al punto de control.
Tenga en cuenta que aún necesita descargar los modelos previamente entrenados y agregar la carpeta de puntos de control correspondiente a config/tselm_l.yaml.