音素对齐在语音识别,语音合成等领域都可能会用的到,当你不想自己训练个模型来处理对齐任务时,最好的办法是找个工具。
用了一圈下来,发现Montreal-Forced-Aligner(MFA)比较好用,不仅支持汉语(普通话)还支持英语和一堆其他的语言(还可以自己训练声学模型),所以接下来主要写的是MFA的用法。另外还有一个专门处理汉语音素对齐的工具speech-aligner,地址在这里https://github.com/open-speech/speech-aligner 另外专栏为什么不支持插入站外链接,除了不支持代码高亮以外又多了个槽点= =
第一件事是把MFA下载下来https://montreal-forced-aligner.readthedocs.io/en/latest/installation.html
Mac,Linux,Windows都可以用,下载后记得解压缩。
首先在与训练模型找到普通话(Mandarin),链接在这里https://montreal-forced-aligner.readthedocs.io/en/latest/pretrained_models.html
然后找一个字典(可以自己训练,参考这里https://montreal-forced-aligner.readthedocs.io/en/latest/example.html?highlight=mandarin#example-2-generate-mandarin-dictionary),没在文档里面找到现成的,不过逛Github的时候在一个停止维护的项目MTTS里面找到了一份字典https://github.com/Jackiexiao/MTTS/blob/master/misc/mandarin-for-montreal-forced-aligner-pre-trained-model.lexicon
然后处理数据,一个wav文件(采样频率在16k以上,不是的话用sox或其他的转换一下)对应一个lab文件,lab里的内容是wav的拼音
接下来就是对齐啦,大概是这样
bin/mfa_align biaobei mandarin-for-montreal-forced-aligner-pre-trained-model.lexicon mandarin.zip result
biaobei指的是数据所在文件夹路径,因为用的是标贝的数据所以用了这个名字,对齐的时候读者小伙伴们记得自己改路径,不要复制粘贴一气呵成~
mandarin-for-montreal-forced-aligner-pre-trained-model.lexicon 是之前下载的字典文件。
mandarin.zip 是之前下载的普通话声学模型,记得不要解压。
result是输出路径。
正常工作的话大概会是这样:
没有正常工作的话,会输出错误信息。
输出内容是这样的:
oov指的是字典里没有的拼音,对齐文件在biaobei文件夹里。
长这样:
item1是拼音的持续时间
item2是音素的持续时间
然后自己写一个脚本读取就好啦w
作者:茯苓猫不黑
https://www.bilibili.com/read/cv6815691
出处: bilibili