Código para el artículo ACL 2024 "¿Podemos lograr una traducción directa de voz a voz de alta calidad sin datos de voz paralelos?".
Escuche el discurso traducido de ComSpeech
ComSpeech es una arquitectura de modelo S2ST compuesta general, que puede integrar perfectamente cualquier modelo S2TT y TTS previamente entrenado en un modelo S2ST directo .
ComSpeech supera los modelos anteriores de dos pasos como UnitY y Translatotron 2 tanto en calidad de traducción como en velocidad de decodificación .
Con nuestra estrategia de entrenamiento propuesta ComSpeech-ZS , logramos un rendimiento comparable al entrenamiento supervisado sin utilizar datos de voz paralelos .
También tenemos otros proyectos sobre traducción de voz a voz que podrían interesarle:
StreamSpeech (ACL 2024) : un modelo integrado "todo en uno" para reconocimiento de voz, traducción y síntesis de voz simultáneos y sin conexión.
NAST-S2x (ACL 2024) : un modelo de traducción de voz a texto/voz simultáneo, rápido y de extremo a extremo.
DASpeech (NeurIPS 2023) : un modelo de traducción directa de voz a voz de dos pasos no autorregresivo con traducciones de alta calidad y velocidad de decodificación rápida.
CTC-S2UT (Hallazgos de ACL 2024) : un modelo de traducción de voz a voz sin texto no autorregresivo con una velocidad de decodificación de hasta 26,81 ×.
pitón==3.8, antorcha==2.1.2
Instalar fairseq:
cd fairseq instalación de pip -e.
Descargue los conjuntos de datos CoVoST 2 Fr/De/Es-En y CVSS-C X-En (21 idiomas en total) y colóquelos en el directorio data/
.
Descargue nuestros manifiestos de datos publicados desde ?Huggingface y colóquelos también en el directorio data/
. El directorio debería ser como el siguiente:
data ├── comspeech │ ├── cvss_de_en │ ├── cvss_es_en │ ├── cvss_fr_en │ └── cvss_x_en ├── covost2 │ └── fr │ ├── clips │ ├── dev.tsv │ ├── invalidated.tsv │ ├── other.tsv │ ├── test.tsv │ ├── train.tsv │ └── validated.tsv └── cvss-c └── fr-en └── mfa.tar.gz
Extraiga las características de fbank para el discurso original.
para src_lang en fr de es; dopython ComSpeech/data_preparation/extract_src_features.py --cvss-data-raíz datos/cvss-c/ --covost-data-raíz de datos/covost2/ --output-root data/cvss-c/${src_lang}-en/src --src-lang $src_langdone
Extraiga información de espectrograma de fusión, duración, tono y energía para el discurso de destino.
para src_lang en ar ca cy de es et fa fr id it ja lv mn nl pt ru sl sv-SE ta tr zh-CN; domkdir -p datos/cvss-c/${src_lang}-en/mfa_align tar -xzvf datos/cvss-c/${src_lang}-en/mfa.tar.gz -C datos/cvss-c/${src_lang}-en/mfa_align/ Python ComSpeech/data_preparation/extract_tgt_features.py --audio-manifest-root data/cvss-c/${src_lang}-en/ --output-root data/cvss-c/${src_lang}-en/tts --textgrid-dir datos/cvss-c/${src_lang}-en/mfa_align/speaker/done
Reemplace la ruta en los archivos en el directorio data/comspeech/
.
Python ComSpeech/data_preparation/fill_data.py
Nota
Los siguientes scripts utilizan 4 GPU RTX 3090 de forma predeterminada. Puede ajustar --update-freq
, --max-tokens-st
, --max-tokens
y --batch-size-tts
según las GPU disponibles.
En el escenario de aprendizaje supervisado , primero utilizamos los datos S2TT y los datos TTS para entrenar previamente los modelos S2TT y TTS respectivamente, y luego ajustamos todo el modelo utilizando los datos S2ST. El siguiente script es un ejemplo del conjunto de datos CVSS Fr-En. Para las direcciones De-En y Es-En, solo necesita cambiar el idioma de origen en los scripts.
Entrene previamente el modelo S2TT y el mejor punto de control se guardará en ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Entrene previamente el modelo TTS y el mejor punto de control se guardará en ComSpeech/checkpoints/tts.fastspeech2.cvss-fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-fr-en.sh
Ajuste todo el modelo utilizando los datos de S2ST y los puntos de control se guardarán en ComSpeech/checkpoints/s2st.fr-en.comspeech
.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech.sh
Promedie los 5 mejores puntos de control y pruebe los resultados en el conjunto test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech.sh
Nota
Para ejecutar la inferencia, debe descargar el vocoder HiFi-GAN previamente entrenado desde este enlace y colocarlo en el directorio hifi-gan/
.
En el escenario de aprendizaje de disparo cero , primero entrenamos previamente el modelo S2TT usando datos CVSS Fr/De/Es-En S2TT, y preentrenamos el modelo TTS usando datos CVSS X-En TTS (X∉{Fr,De,Es}). Luego, ajustamos todo el modelo en dos etapas utilizando estas dos partes de los datos.
Entrene previamente el modelo S2TT y el mejor punto de control se guardará en ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Entrene previamente el modelo TTS y el mejor punto de control se guardará en ComSpeech/checkpoints/tts.fastspeech2.cvss-x-en/checkpoint_best.pt
(nota: este punto de control se utiliza para experimentos en todos los pares de idiomas en el escenario de aprendizaje de disparo cero). ).
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-x-en.sh
Ajuste el modelo S2TT y el adaptador de vocabulario utilizando datos S2TT (etapa 1) y el mejor punto de control se guardará en ComSpeech/checkpoints/st.cvss.fr-en.ctc/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.ctc.sh
Ajuste todo el modelo utilizando datos S2TT y TTS (etapa 2) y los puntos de control se guardarán en ComSpeech/checkpoints/s2st.fr-en.comspeech-zs
.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech-zs.sh
Promedie los 5 mejores puntos de control y pruebe los resultados en el conjunto test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech-zs.sh
Hemos publicado los puntos de control para cada uno de los pasos anteriores. Puedes descargarlos desde ?HuggingFace.
Instrucciones | Preentrenamiento S2TT | Preentrenamiento TTS | ComSpeech |
---|---|---|---|
fr-en | [descargar] | [descargar] | [descargar] |
De-En | [descargar] | [descargar] | [descargar] |
es-en | [descargar] | [descargar] | [descargar] |
Instrucciones | Preentrenamiento S2TT | Preentrenamiento TTS | Ajuste fino de 1 etapa | Ajuste fino de 2 etapas |
---|---|---|---|---|
fr-en | [descargar] | [descargar] | [descargar] | [descargar] |
De-En | [descargar] | [descargar] | [descargar] | [descargar] |
es-en | [descargar] | [descargar] | [descargar] | [descargar] |
Si tiene alguna pregunta, no dude en enviar un problema o comunicarse con [email protected]
.
Si nuestro trabajo es útil para usted, cítelo como:
@inproceedings{fang-etal-2024-can, title = {Can We Achieve High-quality Direct Speech-to-Speech Translation without Parallel Speech Data?}, author = {Fang, Qingkai and Zhang, Shaolei and Ma, Zhengrui and Zhang, Min and Feng, Yang}, booktitle = {Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics}, year = {2024}, }