Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
81264a10
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
12 个月 前同步成功
通知
205
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
81264a10
编写于
2月 08, 2022
作者:
L
lizi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add Chinese doc for tts quick_start, test=doc
上级
89e69ee1
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
204 addition
and
0 deletion
+204
-0
docs/source/tts/quick_start_cn.md
docs/source/tts/quick_start_cn.md
+204
-0
未找到文件。
docs/source/tts/quick_start_cn.md
0 → 100644
浏览文件 @
81264a10
# 语音合成快速开始
这些PaddleSpeech中的样例主要按数据集分类,我们主要使用的TTS数据集有:
*
CSMCS (普通话单发音人)
*
AISHELL3 (普通话多发音人)
*
LJSpeech (英文单发音人)
*
VCTK (英文多发音人)
PaddleSpeech的TTS模型具有以下映射关系:
*
tts0 - Tactron2
*
tts1 - TransformerTTS
*
tts2 - SpeedySpeech
*
tts3 - FastSpeech2
*
voc0 - WaveFlow
*
voc1 - Parallel WaveGAN
*
voc2 - MelGAN
*
voc3 - MultiBand MelGAN
*
voc4 - Style MelGAN
*
voc5 - HiFiGAN
*
vc0 - Tactron2 Voice Clone with GE2E
*
vc1 - FastSpeech2 Voice Clone with GE2E
## 快速开始
让我们以 FastSpeech2 + Parallel WaveGAN 和 CSMSC 数据集 为例.
[
examples/csmsc
](
https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/csmsc
)
### 用CSMSC数据集训练Parallel WaveGAN
-
进入目录
```
bash
cd
examples/csmsc/voc1
```
-
设置环境变量
```
bash
source
path.sh
```
**在你开始做任何事情之前,必须先做这步**
将
`MAIN_ROOT`
设置为项目目录. 使用
`parallelwave_gan`
模型作为
`MODEL`
.
-
运行
```
bash
bash run.sh
```
这只是一个演示,请确保源数据已经准备好,并且在下一个
`步骤`
之前每个
`步骤`
都运行正常.
### 用CSMSC数据集训练FastSpeech2
-
进入目录
```
bash
cd
examples/csmsc/tts3
```
-
设置环境变量
```
bash
source
path.sh
```
**在你开始做任何事情之前,必须先做这步**
将
`MAIN_ROOT`
设置为项目目录. 使用
`fastspeech2`
模型作为
`MODEL`
.
-
运行
```
bash
bash run.sh
```
这只是一个演示,请确保源数据已经准备好,并且在下一个
`步骤`
之前每个
`步骤`
都运行正常.
`run.sh`
中主要包括以下步骤:
-
设置路径。
-
预处理数据集,
-
训练模型。
-
从
`metadata.jsonl`
中合成波形
-
从文本文件合成波形。(在声学模型中)
-
使用静态模型进行推理。(可选)
有关更多详细信息,请参见examples中的
`README.md`
## TTS流水线
本节介绍如何使用TTS提供的预训练模型,并对其进行推理。
TTS中的预训练模型在压缩包中提供。将其解压缩以获得如下文件夹:
**Acoustic Models:**
```
text
checkpoint_name
├── default.yaml
├── snapshot_iter_*.pdz
├── speech_stats.npy
├── phone_id_map.txt
├── spk_id_map.txt (optimal)
└── tone_id_map.txt (optimal)
```
**Vocoders:**
```
text
checkpoint_name
├── default.yaml
├── snapshot_iter_*.pdz
└── stats.npy
```
-
`default.yaml`
存储用于训练模型的配置。
-
`snapshot_iter_*.pdz`
是检查点文件,其中
`*`
是它经过训练的步骤。
-
`*_stats.npy`
是特征的统计文件,如果它在训练前已被标准化。
-
`phone_id_map.txt`
是音素到音素ID的映射关系。
-
`tone_id_map.txt`
是在训练声学模型之前分割音调和拼音时,音调到音调ID的映射关系。(例如在csmsc/speedyspeech的示例中)
-
`spk_id_map.txt`
是多speaker声学模型中speaker到spk_ids的映射关系。
下面的示例代码显示了如何使用模型进行预测。
### Acoustic Models声学模型(文本到频谱图)
下面的代码显示了如何使用“FastSpeech2”模型。加载预训练模型后,使用它和normalizer对象构建预测对象,然后使用
`fastspeech2_inferencet(phone_ids)`
生成频谱图,频谱图可进一步用于使用声码器合成原始音频。
```
python
from
pathlib
import
Path
import
numpy
as
np
import
paddle
import
yaml
from
yacs.config
import
CfgNode
from
paddlespeech.t2s.models.fastspeech2
import
FastSpeech2
from
paddlespeech.t2s.models.fastspeech2
import
FastSpeech2Inference
from
paddlespeech.t2s.modules.normalizer
import
ZScore
# examples/fastspeech2/baker/frontend.py
from
frontend
import
Frontend
# 加载预训练模型
checkpoint_dir
=
Path
(
"fastspeech2_nosil_baker_ckpt_0.4"
)
with
open
(
checkpoint_dir
/
"phone_id_map.txt"
,
"r"
)
as
f
:
phn_id
=
[
line
.
strip
().
split
()
for
line
in
f
.
readlines
()]
vocab_size
=
len
(
phn_id
)
with
open
(
checkpoint_dir
/
"default.yaml"
)
as
f
:
fastspeech2_config
=
CfgNode
(
yaml
.
safe_load
(
f
))
odim
=
fastspeech2_config
.
n_mels
model
=
FastSpeech2
(
idim
=
vocab_size
,
odim
=
odim
,
**
fastspeech2_config
[
"model"
])
model
.
set_state_dict
(
paddle
.
load
(
args
.
fastspeech2_checkpoint
)[
"main_params"
])
model
.
eval
()
# 加载特征文件
stat
=
np
.
load
(
checkpoint_dir
/
"speech_stats.npy"
)
mu
,
std
=
stat
mu
=
paddle
.
to_tensor
(
mu
)
std
=
paddle
.
to_tensor
(
std
)
fastspeech2_normalizer
=
ZScore
(
mu
,
std
)
# 构建预测对象
fastspeech2_inference
=
FastSpeech2Inference
(
fastspeech2_normalizer
,
model
)
# load Chinese Frontend
frontend
=
Frontend
(
checkpoint_dir
/
"phone_id_map.txt"
)
# 构建一个中文前端
sentence
=
"你好吗?"
input_ids
=
frontend
.
get_input_ids
(
sentence
,
merge_sentences
=
True
)
phone_ids
=
input_ids
[
"phone_ids"
]
flags
=
0
# 构建预测对象加载中文前端,对中文文本前端的输出进行分段
for
part_phone_ids
in
phone_ids
:
with
paddle
.
no_grad
():
temp_mel
=
fastspeech2_inference
(
part_phone_ids
)
if
flags
==
0
:
mel
=
temp_mel
flags
=
1
else
:
mel
=
paddle
.
concat
([
mel
,
temp_mel
])
```
### Vcoder声码器(谱图到波形)
下面的代码显示了如何使用
` Parallel WaveGAN`
模型。像上面的例子一样,加载预训练模型后,使用它和normalizer对象构建预测对象,然后使用
`pwg_inference(mel)`
生成原始音频(wav格式)。
```
python
from
pathlib
import
Path
import
numpy
as
np
import
paddle
import
soundfile
as
sf
import
yaml
from
yacs.config
import
CfgNode
from
paddlespeech.t2s.models.parallel_wavegan
import
PWGGenerator
from
paddlespeech.t2s.models.parallel_wavegan
import
PWGInference
from
paddlespeech.t2s.modules.normalizer
import
ZScore
# 加载预训练模型
checkpoint_dir
=
Path
(
"parallel_wavegan_baker_ckpt_0.4"
)
with
open
(
checkpoint_dir
/
"pwg_default.yaml"
)
as
f
:
pwg_config
=
CfgNode
(
yaml
.
safe_load
(
f
))
vocoder
=
PWGGenerator
(
**
pwg_config
[
"generator_params"
])
vocoder
.
set_state_dict
(
paddle
.
load
(
args
.
pwg_params
))
vocoder
.
remove_weight_norm
()
vocoder
.
eval
()
# 加载特征文件
stat
=
np
.
load
(
checkpoint_dir
/
"pwg_stats.npy"
)
mu
,
std
=
stat
mu
=
paddle
.
to_tensor
(
mu
)
std
=
paddle
.
to_tensor
(
std
)
pwg_normalizer
=
ZScore
(
mu
,
std
)
# 加载预训练模型构造预测对象
pwg_inference
=
PWGInference
(
pwg_normalizer
,
vocoder
)
# 频谱图到波形
wav
=
pwg_inference
(
mel
)
sf
.
write
(
audio_path
,
wav
.
numpy
(),
samplerate
=
fastspeech2_config
.
fs
)
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录