"...resnet50_tensorflow.git" did not exist on "8c019479b66fba189aadabbbf33605a286b95b9d"
README.md 4.79 KB
Newer Older
changhl's avatar
changhl committed
1
# Tacotron2
change's avatar
change committed
2

changhl's avatar
changhl committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
## 论文

  - https://arxiv.org/pdf/1712.05884


## 开源代码

  - https://github.com/NVIDIA/tacotron2


## 模型结构

Tacotron2是由Google Brain在2017年提出来的一个End-to-End语音合成框架。该模型主要由两部分构成:
- 声谱预测网络:一个Encoder-Attention-Decoder网络,用于将输入的字符序列预测为梅尔频谱的帧序列
- 声码器(vocoder):一个WaveNet的修订版,用于将预测的梅尔频谱帧序列产生时域波形

<div align="center">
    <img src="./images/architecture.png"/>
</div>


## 算法原理
在这个架构中,Tacotron2将原先Tacotron的RNN模型进行改进,使用了LSTM模型,加入了遗忘门、输入门、输出门等门控结构,优化了梯度消失的问题,使得模型在反向传播的记忆力上有所提升,提高了合成的语音的质量。

<div align="center">
    <img src="./images/algorithm.png"/>
</div>




## 环境配置

### Docker (方法一)
**注意修改路径参数**

```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10

docker run -it --network=host --ipc=host --name=your_container_name --shm-size=32G --device=/dev/kfd --device=/dev/mkfd --device=/dev/dri -v /opt/hyhal:/opt/hyhal:ro -v /path/your_code_data/:/path/your_code_data/ --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10 /bin/bash

cd /path/your_code_data/
pip3 install -r requirements.txt
```

### Dockerfile (方法二)

```
cd ./docker
docker build --no-cache -t tacotron2 .
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash

pip3 install -r requirements.txt
```

### Anaconda (方法三)

1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.hpccube.com/tool/

```
DTK软件栈:dtk24.04.1
python:python3.10
torch:2.1.0
torchvision:0.16.0
torchaudio: 2.1.2
```

Tips:以上dtk软件栈、python、torch等DCU相关工具版本需要严格一一对应

2、其他非特殊库直接按照requirements.txt安装

```
pip3 install -r requirements.txt
```

## 数据集


- SCnet快速下载链接:
  - [LJSpeech数据集下载](http://113.200.138.88:18080/aidatasets/lj_speech)
  
- 官方下载链接:
  - [LJSpeech数据集下载](https://keithito.com/LJ-Speech-Dataset/)

```LJSpeech-1.1```:用于语音合成的数据集,包含语音和文本信息,语音为wav格式,文本以csv格式保存。
```
├── LJSpeech-1.1
│   ├──wav
│   │   ├── LJ001-0001.wav
│   │   ├── LJ001-0002.wav
│   │   ├── LJ001-0003.wav
│   │   ├── ...
│   ├──metadata.csv
│   ├──README
```
- LJSpeech
  - wav:语音数据目录
    - LJ001-0001.wav:语音文件
    - LJ001-0002.wav:语音文件
    - ...
  - metadata.csv:文本信息文件
    - 第一列:语音文件名称
    - 第二列:文本信息
    - 第三列:规范化后的文本信息
  - README:说明文档


## 预训练模型
**推理前先下载预训练好的权重文件**
- SCnet下载地址:
  - [tacotron2模型权重下载地址](http://113.200.138.88:18080/aimodels/tacotron2_ljspeech)
  - [hifigan模型权重下载地址](http://113.200.138.88:18080/aimodels/hifigan_ljspeech)
- 官方下载地址:
  - [tacotron2模型权重下载地址](https://hf-mirror.com/speechbrain/tts-tacotron2-ljspeech)
  - [hifigan模型权重下载地址](https://hf-mirror.com/speechbrain/tts-hifigan-ljspeech)

## 训练
**确保当前的工作目录为tacotron2_pytorch,指定可见卡**

### 单卡
```
export  HIP_VISIBLE_DEVICES 设置可见卡
bash train_s.sh $dataset_path $save_path
```
- $dataset_path:数据集路径
- $save_path:训练权重保存路径
  
### 多卡
```
export  HIP_VISIBLE_DEVICES 设置可见卡
bash train_m.sh $dataset_path $save_path
```
- $dataset_path:数据集路径
- $save_path:训练权重保存路径
  
## 推理

```
export  HIP_VISIBLE_DEVICES 设置可见卡
python3 inference.py -m modelpath_tacotron2 -v modelpath_hifigan -t "hi, nice to meet you" 
```
- -m:tacotron2模型权重路径
- -v:hifigan模型权重路径
- -t:输入文本
- -res:结果文件保存路径
  
## result

```
  输入:“hi,nice to meet you”
  输出:./res/example.wav
```

## 应用场景

### 算法分类
```
语音合成
```

### 热点应用行业
```
金融,通信,广媒
```

## 源码仓库及问题反馈

https://developer.hpccube.com/codes/modelzoo/tacotron2_pytorch

## 参考

[GitHub - NVIDIA/tacotron2](https://github.com/NVIDIA/tacotron2)
[HF - speechbrain/tts-tacotron2-ljspeech](https://hf-mirror.com/speechbrain/tts-tacotron2-ljspeech)