ACL 2024 论文“Can We Achieve High-quality Direct Speech-to-Speech Translation without Parallel Speech Data?”的代码。
聆听 ComSpeech 的演讲翻译
ComSpeech 是一种通用的复合 S2ST 模型架构,可以将任何预训练的 S2TT 和 TTS 模型无缝集成到直接的 S2ST 模型中。
ComSpeech在翻译质量和解码速度上都超越了之前的两遍模型,如 UnitY 和 Translatotron 2。
通过我们提出的训练策略ComSpeech-ZS ,我们在不使用任何并行语音数据的情况下实现了与监督训练相当的性能。
我们还有一些您可能感兴趣的其他语音到语音翻译项目:
StreamSpeech (ACL 2024) :一种用于离线和同步语音识别、语音翻译和语音合成的“一体化”无缝模型。
NAST-S2x (ACL 2024) :一种快速的端到端同步语音到文本/语音翻译模型。
DASpeech (NeurIPS 2023) :一种非自回归两遍直接语音到语音翻译模型,具有高质量翻译和快速解码速度。
CTC-S2UT(ACL 2024 年调查结果) :一种非自回归无文本语音到语音翻译模型,解码速度高达 26.81 倍。
python==3.8,火炬==2.1.2
安装 fairseq:
光盘公平序列 pip install -e 。
下载 CoVoST 2 Fr/De/Es-En 和 CVSS-C X-En(共 21 种语言)数据集并将其放置在data/
目录中。
从 ?Huggingface 下载我们发布的数据清单,并将它们放在data/
目录中。该目录应如下所示:
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
提取源语音的 fbank 特征。
对于 fr de es 中的 src_lang; dopython ComSpeech/data_preparation/extract_src_features.py --cvss-data-根数据/cvss-c/ --covost-数据-根数据/covost2/ --output-root data/cvss-c/${src_lang}-en/src --src-lang $src_langdone
提取目标语音的梅尔频谱图、持续时间、音调和能量信息。
对于 ar ca cy de es et fa frid it ja lv mn nl pt ru sl sv-SE ta tr zh-CN 中的 src_lang; domkdir -p data/cvss-c/${src_lang}-en/mfa_align tar -xzvf 数据/cvss-c/${src_lang}-en/mfa.tar.gz -C 数据/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
替换data/comspeech/
目录中文件的路径。
python ComSpeech/data_preparation/fill_data.py
笔记
以下脚本默认使用 4 个 RTX 3090 GPU。您可以根据可用的 GPU 调整--update-freq
、 --max-tokens-st
、 --max-tokens
和--batch-size-tts
。
在监督学习场景中,我们首先使用S2TT数据和TTS数据分别预训练S2TT和TTS模型,然后使用S2ST数据对整个模型进行微调。以下脚本是 CVSS Fr-En 数据集上的示例。对于德英和英英方向,您只需更改脚本中的源语言即可。
预训练 S2TT 模型,最佳检查点将保存在ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
。
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
预训练 TTS 模型,最佳检查点将保存在ComSpeech/checkpoints/tts.fastspeech2.cvss-fr-en/checkpoint_best.pt
。
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-fr-en.sh
使用 S2ST 数据微调整个模型,检查点将保存在ComSpeech/checkpoints/s2st.fr-en.comspeech
中。
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech.sh
平均 5 个最佳检查点并在test
集上测试结果。
bash ComSpeech/test_scripts/generate.fr-en.comspeech.sh
笔记
要运行推理,您需要从此链接下载预训练的 HiFi-GAN 声码器并将其放置在hifi-gan/
目录中。
在零样本学习场景中,我们首先使用CVSS Fr/De/Es-En S2TT数据预训练S2TT模型,并使用CVSS X-En TTS (X∉{Fr,De,Es})数据预训练TTS模型。然后,我们使用这两部分数据分两个阶段对整个模型进行微调。
预训练 S2TT 模型,最佳检查点将保存在ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
。
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
预训练TTS模型,最佳检查点将保存在ComSpeech/checkpoints/tts.fastspeech2.cvss-x-en/checkpoint_best.pt
(注:该检查点用于零样本学习场景中所有语言对的实验) )。
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-x-en.sh
使用 S2TT 数据微调 S2TT 模型和词汇适配器(第 1 阶段),最佳检查点将保存在ComSpeech/checkpoints/st.cvss.fr-en.ctc/checkpoint_best.pt
中。
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.ctc.sh
使用 S2TT 和 TTS 数据微调整个模型(第 2 阶段),检查点将保存在ComSpeech/checkpoints/s2st.fr-en.comspeech-zs
中。
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech-zs.sh
平均 5 个最佳检查点并在test
集上测试结果。
bash ComSpeech/test_scripts/generate.fr-en.comspeech-zs.sh
我们已经发布了上述每个步骤的检查点。您可以从 ?HuggingFace 下载它们。
路线 | S2TT 预训练 | TTS 预训练 | 通讯语音 |
---|---|---|---|
法语-英语 | [下载] | [下载] | [下载] |
德恩 | [下载] | [下载] | [下载] |
英语 | [下载] | [下载] | [下载] |
路线 | S2TT 预训练 | TTS 预训练 | 1级微调 | 2阶段微调 |
---|---|---|---|---|
法语-英语 | [下载] | [下载] | [下载] | [下载] |
德恩 | [下载] | [下载] | [下载] | [下载] |
英语 | [下载] | [下载] | [下载] | [下载] |
如果您有任何疑问,请随时提交问题或联系[email protected]
。
如果我们的工作对您有用,请引用为:
@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}, }