PhaseAug:一种用于语音合成的可微分增强方法,用于模拟一对多映射<br> 李俊赫、韩胜谷、赵铉在、郑元彬 @ MINDsLab Inc.、首尔大学、韩国科学技术院
摘要:以往基于生成对抗网络(GAN)的神经声码器训练时旨在从配对的梅尔谱图中重构精确的地面真实波形,而没有考虑语音合成的一对多关系。这种传统的训练方法导致判别器和生成器都出现过拟合,进而在生成的音频信号中产生周期性伪影。在本研究中,我们提出了PhaseAug,这是第一个用于语音合成的可微分增强方法,它通过旋转每个频率区间的相位来模拟一对多映射。使用我们提出的方法,我们在不对架构进行任何修改的情况下超越了基线水平。代码和音频样本将在https://github.com/maum-ai/phaseaug 上提供。
已被ICASSP 2023接收

1.0.0版本中已解决)alias-free-torch==0.0.6和phaseaugpip install alias-free-torch==0.0.6 phaseaug
from phaseaug.phaseaug import PhaseAug ... # 定义phaseaug aug = PhaseAug() ... # 判别器更新阶段 aug_y, aug_y_g = aug.forward_sync(y, y_g_hat.detach()) y_df_hat_r, y_df_hat_g, _, _ = mpd(aug_y, aug_y_g) y_ds_hat_r, y_ds_hat_g, _, _ = msd(aug_y, aug_y_g) ... # 生成器更新阶段 aug_y, aug_y_g = aug.forward_sync(y, y_g_hat) y_df_hat_r, y_df_hat_g, fmap_f_r, fmap_f_g = mpd(aug_y, aug_y_g) y_ds_hat_r, y_ds_hat_g, fmap_s_r, fmap_s_g = msd(aug_y, aug_y_g)
torch.cuda.amp.autocast,比如在VITS中,你需要用autocast(enabled=False)包装PhaseAug以防止ComplexHalf问题。from torch.cuda.amp import autocast ... with autocast(enabled=True) # 用autocast(enabled=False)包装PhaseAug with autocast(enabled=False) aug_y, aug_y_g = aug.forward_sync(y, y_g_hat) # 通常net_d部分位于autocast(enabled=True)内 y_df_hat_r, y_df_hat_g, fmap_f_r, fmap_f_g = net_d(aug_y, aug_y_g)
作者建议阅读PITS的代码以了解更复杂的应用。
docker build -t=phaseaug --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) --build-arg USER_NAME=$USER
git clone --recursive https://github.com/maum-ai/phaseaug cp ./phaseaug/*.py ./phaseaug/hifi-gan/ cd ./phaseaug/hifi-gan
cp ./phaseaug/config_v1_melgan.json ./phaseaug/hifi-gan/
# 在[train.py](https://github.com/maum-ai/phaseaug/blob/main/./train.py)中导入MelGanGenerator作为Generator #from models import Generator # 删除原始的导入Generator from models import MelGANGenerator as Generator
train.py中修改数据集路径parser.add_argument('--input_wavs_dir', default='path/LJSpeech-1.1/wavs_22k') parser.add_argument('--input_mels_dir', default='path/LJSpeech-1.1/wavs_22k')
python train.py --config config_v1.json --aug --filter --data_ratio {0.01/0.1/1.} --name phaseaug_hifigan
python train.py --config config_v1_melgan.json --aug --filter --data_ratio {0.01/0.1/1.} --name phaseaug_melgan
本实现使用了以下仓库的代码:
本README和音频样本网页的灵感来自:
如果本仓库对您的研究有帮助,请考虑引用!
@INPROCEEDINGS{phaseaug, author={Lee, Junhyeok and Han, Seungu and Cho, Hyunjae and Jung, Wonbin}, booktitle={ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, title={PhaseAug: A Differentiable Augmentation for Speech Synthesis to Simulate One-to-Many Mapping}, year={2023}, volume={}, number={}, pages={1-5}, doi={10.1109/ICASSP49357.2023.10096374} }
Bibtex已更新为ICASSP 2023版本。请注意, 页码为临时编号。
如果您有任何问题或疑问,请联系Junhyeok Lee:jun3518@icloud.com