Código para o artigo ACL 2024 "Podemos obter tradução direta de fala para fala de alta qualidade sem dados de fala paralela?".
Ouça o discurso traduzido do ComSpeech
ComSpeech é uma arquitetura de modelo S2ST composto geral, que pode integrar perfeitamente qualquer modelo S2TT e TTS pré-treinado em um modelo S2ST direto .
O ComSpeech supera os modelos anteriores de duas passagens, como UnitY e Translatotron 2 , tanto em qualidade de tradução quanto em velocidade de decodificação .
Com nossa estratégia de treinamento proposta, ComSpeech-ZS , alcançamos um desempenho comparável ao treinamento supervisionado sem usar quaisquer dados de fala paralelos .
Também temos alguns outros projetos de tradução de fala para fala nos quais você pode estar interessado:
StreamSpeech (ACL 2024) : Um modelo "All in One" perfeito para reconhecimento de fala offline e simultâneo, tradução e síntese de fala.
NAST-S2x (ACL 2024) : Um modelo de tradução simultânea rápida e completa de fala para texto/fala.
DAPeech (NeurIPS 2023) : Um modelo de tradução direta de fala para fala de duas passagens, não autorregressivo, com traduções de alta qualidade e velocidade de decodificação rápida.
CTC-S2UT (descobertas do ACL 2024) : Um modelo de tradução de fala para fala sem texto não autorregressivo com aceleração de decodificação de até 26,81×.
python==3.8, tocha==2.1.2
Instale o fairseq:
cd fairseq pip instalar -e.
Baixe os conjuntos de dados CoVoST 2 Fr/De/Es-En e CVSS-C X-En (21 idiomas no total) e coloque-os no diretório data/
.
Baixe nossos manifestos de dados lançados em ?Huggingface e também coloque-os no diretório data/
. O diretório deve ser semelhante ao seguinte:
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
Extraia recursos do fbank para a fala de origem.
para src_lang em fr de es; dopython ComSpeech/data_preparation/extract_src_features.py --cvss-data-root dados/cvss-c/ --covost-data-root dados/covost2/ --output-root data/cvss-c/${src_lang}-en/src --src-lang $src_langdone
Extraia informações de espectrograma mel, duração, tom e energia para o discurso alvo.
para src_lang em 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 dados/cvss-c/${src_lang}-en/mfa_align tar -xzvf dados/cvss-c/${src_lang}-en/mfa.tar.gz -C dados/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
Substitua o caminho nos arquivos no diretório data/comspeech/
.
python ComSpeech/data_preparation/fill_data.py
Observação
Os scripts a seguir usam 4 GPUs RTX 3090 por padrão. Você pode ajustar --update-freq
, --max-tokens-st
, --max-tokens
e --batch-size-tts
dependendo de suas GPUs disponíveis.
No cenário de aprendizagem supervisionada , primeiro usamos os dados S2TT e os dados TTS para pré-treinar os modelos S2TT e TTS, respectivamente, e depois ajustamos todo o modelo usando os dados S2ST. O script a seguir é um exemplo do conjunto de dados CVSS Fr-En. Para instruções De-En e Es-En, você só precisa alterar o idioma de origem nos scripts.
Pré-treine o modelo S2TT e o melhor ponto de verificação será salvo em ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Pré-treine o modelo TTS e o melhor ponto de verificação será salvo em ComSpeech/checkpoints/tts.fastspeech2.cvss-fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-fr-en.sh
Faça o ajuste fino de todo o modelo usando os dados S2ST e os pontos de verificação serão salvos em ComSpeech/checkpoints/s2st.fr-en.comspeech
.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech.sh
Calcule a média dos 5 melhores pontos de verificação e teste os resultados no conjunto test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech.sh
Observação
Para executar a inferência, você precisa baixar o vocoder HiFi-GAN pré-treinado deste link e colocá-lo no diretório hifi-gan/
.
No cenário de aprendizagem zero-shot , primeiro pré-treinamos o modelo S2TT usando dados CVSS Fr/De/Es-En S2TT e pré-treinamos o modelo TTS usando dados CVSS X-En TTS (X∉{Fr,De,Es}). Em seguida, ajustamos todo o modelo em dois estágios usando essas duas partes dos dados.
Pré-treine o modelo S2TT e o melhor ponto de verificação será salvo em ComSpeech/checkpoints/st.cvss.fr-en/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.sh
Pré-treine o modelo TTS e o melhor ponto de verificação será salvo em ComSpeech/checkpoints/tts.fastspeech2.cvss-x-en/checkpoint_best.pt
(nota: este ponto de verificação é usado para experimentos em todos os pares de idiomas no cenário de aprendizagem zero-shot ).
bash ComSpeech/train_scripts/tts/train.tts.fastspeech2.cvss-x-en.sh
Ajuste o modelo S2TT e o adaptador de vocabulário usando dados S2TT (estágio 1), e o melhor ponto de verificação será salvo em ComSpeech/checkpoints/st.cvss.fr-en.ctc/checkpoint_best.pt
.
bash ComSpeech/train_scripts/st/train.st.cvss.fr-en.ctc.sh
Faça o ajuste fino de todo o modelo usando dados S2TT e TTS (estágio 2) e os pontos de verificação serão salvos em ComSpeech/checkpoints/s2st.fr-en.comspeech-zs
.
bash ComSpeech/train_scripts/s2st/train.s2st.fr-en.comspeech-zs.sh
Calcule a média dos 5 melhores pontos de verificação e teste os resultados no conjunto test
.
bash ComSpeech/test_scripts/generate.fr-en.comspeech-zs.sh
Liberamos os pontos de verificação para cada uma das etapas acima. Você pode baixá-los em ?HuggingFace.
Instruções | Pré-treino S2TT | Pré-treino TTS | ComSpeech |
---|---|---|---|
De-En | [download] | [download] | [download] |
De-En | [download] | [download] | [download] |
Es-En | [download] | [download] | [download] |
Instruções | Pré-treino S2TT | Pré-treino TTS | Ajuste fino de 1 estágio | Ajuste fino de 2 estágios |
---|---|---|---|---|
De-En | [download] | [download] | [download] | [download] |
De-En | [download] | [download] | [download] | [download] |
Es-En | [download] | [download] | [download] | [download] |
Se você tiver alguma dúvida, sinta-se à vontade para enviar um problema ou entrar em contato com [email protected]
.
Se nosso trabalho for útil para você, cite 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}, }