1 下载库和模型
这里测试的是在Ubuntu 18.04.3 LTS下环境下(centos7.4环境证实不可行,需要源码安装编译,win10是可以的)。
1.1 库和模型准备
- 【1】下载汉语(mandarin)的预训练声学模型和g2p模型MontrealCorpusTools/mfa-models
- 【2】下载linux库MontrealCorpusTools/Montreal-Forced-Aligner releases
- 【3】下载发音词典mandarin-for-montreal-forced-aligner-pre-trained-model.lexicon
这里发音词典是拼音上的,也可以准备词上的发音词典如DaCiDian,或resource_aishell.tgz
cd /data1/kaldi/resources
tar zxvf montreal-forced-aligner_linux.tar.gz
# 需要提前安装gfortran3,否则报错
# compute-mfcc-feats: error while loading shared libraries:
# libgfortran.so.3: cannot open shared object file: No such file or directory
sudo apt-get install libgfortran3
将下载的中文词的g2p模型和中文声学模型放在pretrained_models文件夹下。
1.2 测试
cd /data1/kaldi/resources/montreal-forced-aligner
./bin/mfa_align
【报如下错误】[214959] Error loading Python lib ‘/data1/kaldi/resources/montreal-forced-aligner/lib/libpython3.6m.so’: dlopen: /data1/kaldi/resources/montreal-forced-aligner/lib/libpython3.6m.so: cannot open shared object file: No such file or directory
参考Missing libpython3.6m.so in Linux v1.0.1解决。
cd lib
ln -s /data1/kaldi/resources/montreal-forced-aligner/lib/libpython3.6m.so.1.0 libpython3.6m.so
1.3 测试数据准备
文件夹下每个音频(wav格式,采样率16kHz以上,且单通道
),多有一个lab文件,lab文件编码必须UTF8无BOM,lab中内容如:
有人 来 抢劫 赶紧 打 电话
lab中是以空格隔开的词,这个可以自己写脚本由如下的annotation.txt去产生。
HAO0007501-000000 有人 来 抢劫 赶紧 打 电话
HAO0007501-000001 有人 来
......
data在/data1/kaldi/resources/montreal-forced-aligner下
2 g2p模型产生发音词典
./bin/mfa_generate_dictionary pretrained_models/mandarin_character_g2p.zip data custom_lexicon.txt
产生后的custom_lexicon.txt发音词典如下(这里就直接用这个生成的发音词典,也是没关系的,也可以检查一下,或者去下载其他的发音词典也可以去openslr.org上aishell1的发音词典)resource_aishell.tgz
会发现他生成的lexicon.txt是以tab键隔开的。
快来 k uai4 l ai2
银行 i2 n h a2 ng
抢劫 ch e1 ng j ie2
啊 a5
打 d a3
电话 d ia4 n h ua4
赶紧 g a3 n j i3 n
了 l iao3
来 l ai2
有人 iou3 r e2 n
3 音素对齐
3.1 对齐数据
目标目录result不能和data目录相同,因为运行会将result的内容清空。