MFA(Montreal Forced Aligner)是一种forced alignment工具。MFA底层是使用了kaldi工具,相对于其它的工具MFA使用triphone acoustic model来建模上下文信息,同时包含了和说话人相关的特征,因此可以适应不同的说话人。MFA具有可训练性 (trainability) ,即可由用户自己在新数据上训练acoustic model。
1、MFA安装
MFA有多种安装方式,可参考MFA installation。mfa需要kaldi,kaldi安装参考kaldi安装
2、MFA使用
2.1、查看MFA版本
mfa version
2.2 数据格式
对齐数据或者训练模型需要的数据需要按照如下格式:
+-- prosodylab_corpus_directory
| +-- speaker1
| --- recording1.wav
| --- recording1.lab
| --- recording2.wav
| --- recording2.lab
| +-- speaker2
| --- recording3.wav
| --- recording3.lab
| --- ...
数据目录下每个说话人对应一个目录,每个说话人目录下一个语音数据wav文件对应一个文本数据文件lab,文件名除了扩展名之外其他的部分要一一对应。
2.3 、下载预训练模型和词典
MFA提供了已经预先训练好的模型以及词典,下载地址。
一种方式是手动下载,另外是使用mfa命令下载,如下以中文为例:
#下载模型
mfa models download acoustic mandarin_mfa
#下载词典
mfa models download dictionary mandarin_mfa
mfa models download dictionary mandarin_pinyin
2.4、对齐命令
mfa align
corpus_directory # 对齐数据
dictionary_path # 词典
acoustic_model_path # 声学模型
output_directory # 输出对齐结果
--temporary_directory #指定临时目录,存储中间结果
--disable_mp # 关闭多进程,默认是False
对齐输出结果为TextGrid格式。
2.5、训练模型
mfa train
corpus_directory # 数据
dictionary_path # 词典
output_directory # 输出模型
--temporary_directory #指定临时目录,存储中间结果
--disable_mp # 关闭多进程,默认是False
2.6、其它命令使用
3、遇到问题
3.1、由于MFA底层用到kaldi,所以kaldi下的可执行文件都要链接到PATH变量中。
3.2、缺少某些so库,需要找到对应so库并链接到LD_LIBRARY_PATH。
3.3、so库的版本低,对于当前环境下某些so库版本低(例如:libm.so.6、libstdc++.so.6等),需要下载so库对应的源码编译,使用的时候将so库链接到变量 LD_PRELOAD。
3.4、如果执行中出现任何问题,可以去--temporary_directory指定的目录下查看log文件。另外,调试的时将--disable_mp设置为True(就是使用单进程执行),如果没有问题的再使用用多进程。
由于mfa有个小bug:如果有异常出现,多进程执行时可能不会输出错误信息。
(完)