ControlSpeech:通过解耦编解码器实现同时零样本说话人克隆和零样本语言风格控制
🔥 最新消息
- 2024年6月:我们在arXiv上发布了ControlSpeech并开源了ControlToolkit。ControlToolkit主要包括三个部分:VccmDataset(基于TextrolSpeech数据集)、一系列相关评估指标以及相关基线的复现代码。
- 2023年12月:Textrolspeech被ICASSP 2024接收。
1. VccmDataset
语音:
- https://drive.google.com/file/d/1kNjYBqv_DohG8N3wF-J7kCSBmLxvs77N/view?usp=drive_link
- https://drive.google.com/file/d/1W9DuRsQuP3tfWwxFo0Dx8-Rg-XbGCIzH/view?usp=sharing
- http://www.openslr.org/60/
文本:
-
存储文本和相关提示的目录位于"./VccmDataset"中。
-
测试集由四组组成,对应论文中描述的实验一至实验四。
2. 评估指标
2.1 速度准确率
# 要获取相关网格,需要预先进行MFA对齐
mfa align --clean $BASE_DIR/$MFA_INPUTS $BASE_DIR/mfa_dict.txt $BASE_DIR_AGO/model/$MODEL_NAME.zip $BASE_DIR/$MFA_OUTPUTS
python ./pitch_energy_dur_acc/duration_acc.py
2.2 音高和能量准确率
python ./pitch_energy_dur_acc/energy_pitch_acc.py
2.3 情感准确率
# 使用预训练的emotion2Vec模型提取测试数据集的嵌入
python ./emotion_acc/emotion2vec_demo.py
# 使用微调后的情感模型进行推理
python ./emotion_acc/controlnet_emo_acc.py
2.4 词错率和说话人验证
# 基于whisper的词错率
python ./wer.py
# 基于wavlm-sv的说话人验证
python ./spk_sv.py
3. 基线(支持PromptTTS和PromptStyle)
3.1 安装
git clone https://github.com/jishengpeng/ControlSpeech.git && cd baseline
conda create --name controlspeech python==3.9
conda activate controlspeech
pip install -r requirements.txt
3.2 使用方法
3.2.1. 从以下链接下载基线检查点:Google Drive
3.2.2. 使用任意内容文本和提示文本进行推理
#### promptTTS
cd promptTTS
CUDA_VISIBLE_DEVICES=0 python infer/promptTTS_infer.py --exp_name promptts1_style_baseline
CUDA_VISIBLE_DEVICES=0 python infer/promptTTS_infer_one.py --exp_name promptts1_style_baseline
#### promptStyle
cd promptStyle & python inference.py
3.2.3. 训练文本提示TTS模型
#### PromptTTS
#1 数据预处理,请参考promptTTS/libritts_preprocess
#2 训练
CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config egs/promptts.yaml --exp_name promptts1_style_baseline --reset --hparams='seed=1200'
#### PromptStyle
#1 数据预处理
python preprocess.py --text_index 2 --filelists filelists/prompt_audio_sid_text_train_filelist.txt filelists/prompt_audio_sid_text_val_filelist.txt filelists/prompt_audio_sid_text_test_filelist.txt
#2 训练
# use_style_encoder=False
CUDA_VISIBLE_DEVICES=0 python train_ms_stage1.py -c configs/prompt.json -m promptStyle_baseline_s1
# use_style_encoder=True
CUDA_VISIBLE_DEVICES=0 python train_ms_stage2.py -c configs/prompt.json -m promptStyle_baseline
引用
如果本代码或VccmDataset对您的研究有所贡献,请引用我们的工作:
@inproceedings{ji2024textrolspeech,
title={Textrolspeech: A text style control speech corpus with codec language text-to-speech models},
author={Ji, Shengpeng and Zuo, Jialong and Fang, Minghui and Jiang, Ziyue and Chen, Feiyang and Duan, Xinyu and Huai, Baoxing and Zhao, Zhou},
booktitle={ICASSP 2024-2024 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={10301--10305},
year={2024},
organization={IEEE}
}
@misc{ji2024controlspeech,
title={ControlSpeech: Towards Simultaneous Zero-shot Speaker Cloning and Zero-shot Language Style Control With Decoupled Codec},
author={Shengpeng Ji and Jialong Zuo and Minghui Fang and Siqi Zheng and Qian Chen and Wen Wang and Ziyue Jiang and Hai Huang and Xize Cheng and Rongjie Huang and Zhou Zhao},
year={2024},
eprint={2406.01205},
archivePrefix={arXiv},
primaryClass={eess.AS}
}