Code für das ACL 2024-Papier „Können wir ohne parallele Sprachdaten eine hochwertige direkte Speech-to-Speech-Übersetzung erzielen?“
Hören Sie sich die übersetzte Rede von ComSpeech an
ComSpeech ist eine allgemeine zusammengesetzte S2ST-Modellarchitektur, die alle vorab trainierten S2TT- und TTS-Modelle nahtlos in ein direktes S2ST-Modell integrieren kann.
ComSpeech übertrifft frühere Zwei-Pass-Modelle wie UnitY und Translatotron 2 sowohl in der Übersetzungsqualität als auch in der Dekodierungsgeschwindigkeit .
Mit unserer vorgeschlagenen Trainingsstrategie ComSpeech-ZS erreichen wir eine Leistung, die mit überwachtem Training vergleichbar ist, ohne parallele Sprachdaten zu verwenden .
Wir haben auch einige andere Projekte zum Thema Sprache-zu-Sprache-Übersetzung , die Sie interessieren könnten:
StreamSpeech (ACL 2024) : Ein „All-in-One“-nahtloses Modell für Offline- und gleichzeitige Spracherkennung, Sprachübersetzung und Sprachsynthese.
NAST-S2x (ACL 2024) : Ein schnelles und durchgängiges simultanes Sprache-zu-Text-/Sprachübersetzungsmodell.
DASpeech (NeurIPS 2023) : Ein nicht-autoregressives direktes Sprache-zu-Sprache-Übersetzungsmodell mit zwei Durchgängen mit hochwertigen Übersetzungen und schneller Dekodierungsgeschwindigkeit.
CTC-S2UT (ACL 2024-Ergebnisse) : Ein nicht-autoregressives textloses Sprache-zu-Sprache-Übersetzungsmodell mit bis zu 26,81-facher Dekodierungsgeschwindigkeit.
Python==3.8, Torch==2.1.2
Fairseq installieren:
cd fairseq pip install -e .
Laden Sie die Datensätze CoVoST 2 Fr/De/Es-En und CVSS-C X-En (insgesamt 21 Sprachen) herunter und platzieren Sie sie im Verzeichnis data/
.
Laden Sie unsere veröffentlichten Datenmanifeste von ?Huggingface herunter und legen Sie sie ebenfalls im Verzeichnis data/
ab. Das Verzeichnis sollte wie folgt aussehen:
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
Extrahieren Sie fbank-Funktionen für die Quellsprache.
für src_lang in fr de es; dopython ComSpeech/data_preparation/extract_src_features.py --cvss-data-root data/cvss-c/ --covost-data-root data/covost2/ --output-root data/cvss-c/${src_lang}-en/src --src-lang $src_langdone
Extrahieren Sie Mel-Spektrogramm-, Dauer-, Tonhöhen- und Energieinformationen für die Zielsprache.
für src_lang in arc ca 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
Ersetzen Sie den Pfad in Dateien im Verzeichnis data/comspeech/
.
Python ComSpeech/data_preparation/fill_data.py
Notiz
Die folgenden Skripte verwenden standardmäßig 4 RTX 3090-GPUs. Sie können --update-freq
, --max-tokens-st
, --max-tokens
und --batch-size-tts
abhängig von Ihren verfügbaren GPUs anpassen.
Im überwachten Lernszenario verwenden wir zunächst die S2TT-Daten und TTS-Daten, um die S2TT- bzw. TTS-Modelle vorab zu trainieren, und optimieren dann das gesamte Modell mithilfe der S2ST-Daten. Das folgende Skript ist ein Beispiel für den CVSS Fr-En-Datensatz. Für De-En- und Es-En-Richtungen müssen Sie nur die Ausgangssprache in Skripten ändern.
Trainieren Sie das S2TT-Modell vorab und der beste Prüfpunkt wird unter ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
gespeichert.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Trainieren Sie das TTS-Modell vorab und der beste Prüfpunkt wird unter ComSpeech/checkpoints/tts.fastspeech2.cvss-fr-en/checkpoint_best.pt
gespeichert.
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-fr-en.sh
Optimieren Sie das gesamte Modell mithilfe der S2ST-Daten. Die Prüfpunkte werden unter ComSpeech/checkpoints/s2st.fr-en.comspeech
gespeichert.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech.sh
Berechnen Sie den Durchschnitt der 5 besten Prüfpunkte und testen Sie die Ergebnisse mit dem test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech.sh
Notiz
Um die Inferenz auszuführen, müssen Sie den vorab trainierten HiFi-GAN-Vocoder über diesen Link herunterladen und im Verzeichnis hifi-gan/
ablegen.
Im Zero-Shot-Lernszenario trainieren wir zunächst das S2TT-Modell mithilfe von CVSS Fr/De/Es-En S2TT-Daten vor und trainieren das TTS-Modell mithilfe von CVSS X-En TTS-Daten (X∉{Fr,De,Es}) vor. Anschließend optimieren wir das gesamte Modell in zwei Schritten anhand dieser beiden Datenteile.
Trainieren Sie das S2TT-Modell vorab und der beste Prüfpunkt wird unter ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
gespeichert.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Trainieren Sie das TTS-Modell vorab und der beste Prüfpunkt wird unter ComSpeech/checkpoints/tts.fastspeech2.cvss-x-en/checkpoint_best.pt
gespeichert (Hinweis: Dieser Prüfpunkt wird für Experimente mit allen Sprachpaaren im Zero-Shot-Lernszenario verwendet ).
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-x-en.sh
Optimieren Sie das S2TT-Modell und den Vokabeladapter mithilfe von S2TT-Daten (Stufe 1). Der beste Prüfpunkt wird unter ComSpeech/checkpoints/st.cvss.fr-en.ctc/checkpoint_best.pt
gespeichert.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.ctc.sh
Optimieren Sie das gesamte Modell mithilfe von S2TT- und TTS-Daten (Stufe 2). Die Prüfpunkte werden unter ComSpeech/checkpoints/s2st.fr-en.comspeech-zs
gespeichert.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech-zs.sh
Berechnen Sie den Durchschnitt der 5 besten Prüfpunkte und testen Sie die Ergebnisse mit dem test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech-zs.sh
Wir haben die Kontrollpunkte für jeden der oben genannten Schritte freigegeben. Sie können sie von ?HuggingFace herunterladen.
Wegbeschreibung | S2TT-Vortraining | TTS-Vortraining | ComSpeech |
---|---|---|---|
Fr-En | [herunterladen] | [herunterladen] | [herunterladen] |
De-En | [herunterladen] | [herunterladen] | [herunterladen] |
Es-En | [herunterladen] | [herunterladen] | [herunterladen] |
Wegbeschreibung | S2TT-Vortraining | TTS-Vortraining | 1-stufige Feinabstimmung | 2-stufige Feinabstimmung |
---|---|---|---|---|
Fr-En | [herunterladen] | [herunterladen] | [herunterladen] | [herunterladen] |
De-En | [herunterladen] | [herunterladen] | [herunterladen] | [herunterladen] |
Es-En | [herunterladen] | [herunterladen] | [herunterladen] | [herunterladen] |
Wenn Sie Fragen haben, können Sie gerne ein Problem einreichen oder sich an [email protected]
wenden.
Wenn unsere Arbeit für Sie nützlich ist, zitieren Sie uns bitte als:
@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}, }