Code de l'article ACL 2024 « Pouvons-nous obtenir une traduction parole-parole directe de haute qualité sans données vocales parallèles ? »
Écoutez le discours traduit de ComSpeech
ComSpeech est une architecture de modèle S2ST composite générale, qui peut intégrer de manière transparente tous les modèles S2TT et TTS pré-entraînés dans un modèle S2ST direct .
ComSpeech surpasse les modèles précédents à deux passes comme UnitY et Translatotron 2 en termes de qualité de traduction et de vitesse de décodage .
Avec notre stratégie de formation proposée ComSpeech-ZS , nous obtenons des performances comparables à une formation supervisée sans utiliser de données vocales parallèles .
Nous avons également d’autres projets sur la traduction parole-parole qui pourraient vous intéresser :
StreamSpeech (ACL 2024) : Un modèle transparent "Tout-en-un" pour la reconnaissance vocale, la traduction et la synthèse vocales hors ligne et simultanées.
NAST-S2x (ACL 2024) : Un modèle de traduction simultanée parole-texte/parole rapide et de bout en bout.
DASpeech (NeurIPS 2023) : Un modèle de traduction parole-parole directe non autorégressive en deux passes avec des traductions de haute qualité et une vitesse de décodage rapide.
CTC-S2UT (ACL 2024 Findings) : Un modèle de traduction parole-parole sans texte non autorégressif avec une accélération de décodage jusqu'à 26,81 ×.
python==3.8, torche==2.1.2
Installez fairseq :
cd fairseq pip install -e .
Téléchargez les jeux de données CoVoST 2 Fr/De/Es-En et CVSS-C X-En (21 langues au total) et placez-les dans le répertoire data/
.
Téléchargez nos manifestes de données publiés depuis ?Huggingface et placez-les également dans le répertoire data/
. Le répertoire devrait ressembler à ceci :
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
Extrayez les fonctionnalités fbank pour le discours source.
pour src_lang en fr de es ; dopython ComSpeech/data_preparation/extract_src_features.py --cvss-data-root données/cvss-c/ --covost-data-root data/covost2/ --output-root data/cvss-c/${src_lang}-en/src --src-lang $src_langdone
Extrayez les informations sur le spectrogramme Mel, la durée, la hauteur et l'énergie du discours cible.
pour src_lang in arca cy de es et fa fr id it ja lv mn nl pt ru sl sv-SE ta tr zh-CN ; domkdir -p data/cvss-c/${src_lang}-en/mfa_align tar -xzvf data/cvss-c/${src_lang}-en/mfa.tar.gz -C data/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 data/cvss-c/${src_lang}-en/mfa_align/speaker/done
Remplacez le chemin dans les fichiers du répertoire data/comspeech/
.
python ComSpeech/data_preparation/fill_data.py
Note
Les scripts suivants utilisent par défaut 4 GPU RTX 3090. Vous pouvez ajuster --update-freq
, --max-tokens-st
, --max-tokens
et --batch-size-tts
en fonction de vos GPU disponibles.
Dans le scénario d'apprentissage supervisé , nous utilisons d'abord les données S2TT et TTS pour pré-entraîner respectivement les modèles S2TT et TTS, puis affinons l'ensemble du modèle à l'aide des données S2ST. Le script suivant est un exemple sur l'ensemble de données CVSS Fr-En. Pour les directions De-En et Es-En, il vous suffit de changer la langue source dans les scripts.
Pré-entraînez le modèle S2TT et le meilleur point de contrôle sera enregistré dans ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Pré-entraînez le modèle TTS et le meilleur point de contrôle sera enregistré dans ComSpeech/checkpoints/tts.fastspeech2.cvss-fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-fr-en.sh
Affinez l'ensemble du modèle à l'aide des données S2ST et les points de contrôle seront enregistrés dans ComSpeech/checkpoints/s2st.fr-en.comspeech
.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech.sh
Faites la moyenne des 5 meilleurs points de contrôle et testez les résultats sur l'ensemble test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech.sh
Note
Pour exécuter l'inférence, vous devez télécharger le vocodeur HiFi-GAN pré-entraîné à partir de ce lien et le placer dans le répertoire hifi-gan/
.
Dans le scénario d'apprentissage zéro-shot , nous pré-entraînons d'abord le modèle S2TT à l'aide des données CVSS Fr/De/Es-En S2TT, et pré-entraînons le modèle TTS à l'aide des données CVSS X-En TTS (X∉{Fr,De,Es}). Ensuite, nous affinons l’ensemble du modèle en deux étapes en utilisant ces deux parties de données.
Pré-entraînez le modèle S2TT et le meilleur point de contrôle sera enregistré dans ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Pré-entraînez le modèle TTS et le meilleur point de contrôle sera enregistré dans ComSpeech/checkpoints/tts.fastspeech2.cvss-x-en/checkpoint_best.pt
(remarque : ce point de contrôle est utilisé pour les expériences sur toutes les paires de langues dans le scénario d'apprentissage zéro-shot ).
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-x-en.sh
Affinez le modèle S2TT et l'adaptateur de vocabulaire à l'aide des données S2TT (étape 1), et le meilleur point de contrôle sera enregistré dans ComSpeech/checkpoints/st.cvss.fr-en.ctc/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.ctc.sh
Affinez l'ensemble du modèle en utilisant à la fois les données S2TT et TTS (étape 2), et les points de contrôle seront enregistrés dans ComSpeech/checkpoints/s2st.fr-en.comspeech-zs
.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech-zs.sh
Faites la moyenne des 5 meilleurs points de contrôle et testez les résultats sur l'ensemble test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech-zs.sh
Nous avons publié les points de contrôle pour chacune des étapes ci-dessus. Vous pouvez les télécharger depuis ?HuggingFace.
Instructions | Pré-entraînement S2TT | Pré-entraînement TTS | ComSpeech |
---|---|---|---|
Fr-En | [télécharger] | [télécharger] | [télécharger] |
De-En | [télécharger] | [télécharger] | [télécharger] |
Es-En | [télécharger] | [télécharger] | [télécharger] |
Instructions | Pré-entraînement S2TT | Pré-entraînement TTS | Réglage fin en 1 étape | Réglage fin en 2 étapes |
---|---|---|---|---|
Fr-En | [télécharger] | [télécharger] | [télécharger] | [télécharger] |
De-En | [télécharger] | [télécharger] | [télécharger] | [télécharger] |
Es-En | [télécharger] | [télécharger] | [télécharger] | [télécharger] |
Si vous avez des questions, n'hésitez pas à soumettre un problème ou à contacter [email protected]
.
Si notre travail vous est utile, veuillez citer comme suit :
@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}, }