# Tacotron 2 (without wavenet) ## 论文 https://arxiv.org/abs/1712.05884 ## 模型结构 Tacotron2与第一代相比剔除了CBHG模块,改为LSTM和卷积层,在保证语音合成质量的前提下简化了模型结构,提高训练和推理效率,在Vocoder部分使用可训练的WaveNet替换掉第一代中的Griffin-Lim算法,能够以高质量和高保真度生成音频波形 ![](https://developer.sourcefind.cn/codes/modelzoo/tacotron2/-/raw/main/tacotron2%E6%A8%A1%E5%9E%8B%E7%BB%93%E6%9E%84.png?inline=false) ## 算法原理 Tacotron 2 模型通过使用编码器-解码器架构结合注意力机制,将文本序列转换为梅尔频谱图,然后利用WaveNet声码器将这些频谱图转化为自然语音波形,其核心在于端到端的训练方式和高质量语音合成能力。 ![](https://developer.sourcefind.cn/codes/modelzoo/tacotron2/-/raw/main/LSTM.png?inline=false) ## 环境配置 ### Docker(方法一) 拉取镜像,启动并进入容器 ``` docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-py3.10-dtk24.04.3-ubuntu20.04 # 用上面拉取docker镜像的ID替换 # 主机端路径 # 容器映射路径 docker run --shm-size 80g --network=host --name=tacotron2 -v /opt/hyhal:/opt/hyhal:ro --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v : -it /bin/bash ``` ### Dockerfile(方法二) ``` # 主机端路径 # 容器映射路径 docker build -t tacotron2_image . docker run --shm-size 80g \ --network=host \ --name=tacotron2 \ -v /opt/hyhal:/opt/hyhal:ro \ --privileged \ --device=/dev/kfd \ --device=/dev/dri \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --v : \ -it tacotron2_image ``` ### Anaconda(方法三) ``` conda create -n tacotron2 python=3.10 #主要库版本有: #DTK:24.04.3 #python3.10 #torch:2.1.0 ``` ### 拉取代码仓 ``` git clone http://developer.sourcefind.cn/codes/modelzoo/tacotron2.git ``` ``` cd tacotron2 ``` ### 初始化子模块 ``` git submodule init; git submodule update ``` ### 更新.wav路径 ``` sed -i -- 's,DUMMY,/LJSpeech-1.1/wavs,g' filelists/*.txt ``` ### 安装python依赖 ``` pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ## 数据集 采用的数据集为LJSpeech-1.1,用于语音合成的数据集,包含语音和文本信息,语音为wav格式,文本以csv格式保存。 官方链接:https://data.keithito.com/data/speech/LJSpeech-1.1.tar.bz2 ## 训练 ### 单卡训练 ``` bash run_single.sh ``` ### 多卡训练 ``` bash run_multi.sh ``` ## 推理 将inference.py中的”checkpoint_path“和”waveglow_path“换成自己的路径,运行inference.py ```python export HIP_VISIBLE_DEVICES 设置可见卡 python inference.py ``` ## result ``` 输入:"Waveglow is really awesome!" 输出:“./output/output_audio.wav”以及“./output/mel_spectrograms.png” ``` ### 精度 无 ## 应用场景 ### 算法分类 ``` 语音合成 ``` ### 热点应用行业 ``` 金融、制造、科研、政府、教育、气象 ``` ## 预训练权重 ## 源码仓库及问题反馈 http://developer.sourcefind.cn/codes/modelzoo/tacotron2_pytorch ## 参考 [tacotron2](https://github.com/NVIDIA/tacotron2)