一 前端部分
如果存在已经训练好的前端工具,我们可以使用已经有的工具Festival
,MaryTTS
,sSpeak
如果我们没有标注数据,我们可以使用Ossian
1.1 Ossian Toolkit
- 使用训练数据,可以使用最少的speech+text
- 句子或段落对齐
- 可以利用用户的任何额外数据
- 提供
前端模块
和胶水
来组合,Merlin DNNs
我们将展示
- Ossian如何与Merlin结合来构建一个
Swahili
声音而不需要任何语言专家,只需要转录语音 - 引入Ossian的某些思路来管理,而不需要标注
1.1.1 Ossian :Training Data
我们仅需要UTF-8格式的文本和语音,同时匹配 句子 除以 段落
尺寸的chunks
utt文件
1 | <utt text ="Khartoum imejitenga na mzozo huo." waveform="./wav/pm_n2336.wav" utterance_name="pm_n2236"> |
其中utterance_name="pm_n2236"
是一个XML格式的发生结构,在训练集语料库为每个句子构建的。
其内容如下:
1 | <utt text="Khartoum imejitenga na mzozo huo." waveform="./wav/pm_n2236.wav" |
unicode字符属性用以无关语言的正则表达式来tokenise文本
正则表达式
同时unicode用来将tokens分类为单词,空格和标点。
1.1.2 词性标注(POS Tagging)
4.1.3 分布式词向量作为POS(Part Of Speech) tag 替代品
分别来看
将所有词映射到词向量空间
将词向量替代POS
以字母替代音素的标注文件
4.2 强制对齐和 静音检测
4.3 phrasing(短语)
5 语言特征工程:使用XPATHS 做flatten
对应的详细标注
6 语言特征和工程
6.1 语言特征工程:flatten到上下文依赖的音素
注意看左下角,ao-th+er
,当前音素为th
,其前缀为ao
,后缀为er
。进一步
得到一个完整的音素标注。再进一步
详细解释上面的标注文件
一个句子的完整标注文件
6.3 将每个上下文依赖的音素编码为向量
示例:使用一个长度为1-40二进制码来编码quinphone
对应的二进制码
开始编码,以头sil
开始:
6.4 语言特征工程:上采样到声学帧率(framerate)
6.5 语言特征工程:添加音素内(within-phone)位置特征
7 时域到底来源于哪里
先看脚本
02_prepare_labels.sh
1 | # alignments can be state-level (like HTS) or phone-level |
run_state_aligner.sh
1 | #do prepare full-contextual labels without timestamps |
forced_alignment.py
1 | aligner = ForcedAlignment() |
8 声学特征抽取和工程
8.1 为何我们使用声学特征抽取-波形waveform
- 音素 a: 的波形
- 音素a:的magnitude spectrum(幅度频谱)
8.2 术语
- Spectral Envelope:频谱封装
- F0
- Aperiodic energy:非周期能量
8.5 典型声码器 WORLD
- 语音特征
- Spectral Envelope(使用CheapTrick评估)
- F0:使用DIO评估
- Band aperiodicties:使用D4C评估
8.5.1 spectral envelope 评估
- Hanning窗长度3T0
- 使用一个长度为 2/3 F0移动平均过滤器
- 使用一个长度为 2 F0移动平均过滤器
- $SpEnv= q_0logSp(F)+q1logSp(F+F0)+q1logSp(F-F0)$
8.5.3 F0 评估
8.5.4 band aperiodicities
- 能量和非能量之间的比率,对固定频率bands取平均
- 比如: 总功率/sine 波形功率(total power /sine wave power)
- 示例中,此比例为
- 最低band: a
- 更多band: b
- 最高band: c
8.6 声学特征工程
原始声学特征与实际使用的声学特征
抽取一部分来分析
再细致来看
处理步骤如下
可以直接运行脚本03_prepare_acoustic_features.sh
得到
1 | python ${MerlinDir}/misc/scripts/vocoder/${Vocoder,,}/ |
extract_features_for_merlin.py
1 | # tools directory |