在开发语音合成系统时,使用到Montreal Forced Aligner (MFA) 用于获得话语和音素序列之间的对齐。记录一下在Windows系统上安装MFA的过程以及遇到的问题。
https://montreal-forced-aligner.readthedocs.io/en/latest/installation.html
官方教程主要有从源代码安装以及pip安装两种方式,本教程主要通过pip安装MFA.
(1) 安装Miniconda / Conda 安装
Anaconda安装包下载
(2) 创建并激活conda环境
Linux/macOS:
conda create -n aligner kaldi pynini #创建conda环境同时安装kaldi、pynini
conda activate aligner
Windows:
conda create -n aligner kaldi #创建conda环境同时安装kaldi
conda activate aligner
注意:Pynini 仅支持 Linux 和 MacOS,所以Windows系统上G2P 功能将不可用。
在这里可能会报以下错误:
PackagesNotFoundError: The following packages are not available from current channels
解决方法:在上述命令之前先执行
conda config --append channels conda-forge
(3) 安装MFA
pip install montreal-forced-aligner
(4)安装第三方包
mfa thirdparty download
这个过程可能会由于网络问题连接不上,多试几次就好,不过以下文章分享了mfa thirdparty download没有网络时的解决方法。
或者
conda install -c conda-forge python=3.8 kaldi sox librosa biopython praatio tqdm requests colorama pyyaml # and pynini if on Linux or Mac
在上述命令后,如果仍然提示 No module named xxx
,则直接通过pip installl xxx
命令安装即可。
MFA(2.0版本)在windows系统上的环境要求:
channels:
- conda-forge
- defaults
dependencies:
- python>=3.8
- librosa
- tqdm
- requests
- colorama
- ansiwrap
- pyyaml
- jsonlines
- kaldi
- sox
- praatio
- biopython
(5)验证是否成功安装
参考MFA在Ubuntu18.04安装教程
mfa thirdparty validate
当使用mfa thirdparty download
安装第三方库时会正常显示All required kaldi binaries were found!
当使用conda install -c conda-forge python=3.8 kaldi sox librosa biopython praatio tqdm requests colorama pyyaml
安装第三方库时会显示DeprecationWarning: Necessary thirdparty executables are now installed via conda. Please refer to the installation docs for the updated commands.
在后续使用MFA时并不影响
官方使用教程
对齐命令:
mfa align corpus_path dict_path model_path target_path
四个path分别为:
1.
需要进行对齐的语音与文本数据文件夹路径
2.
发音词典路径
3.
预训练模型路径
4.
生成TextGrid文件路径
(1)获取预训练模型和字典
预训练模型
字典
mfa model download acoustic english
mfa model download dictionary english
这两个命令会访问github获取对应的预训练模型和字典,可能会出现网络连接错误,多次尝试就好。
(2)对齐
进行对齐时直接使用english
代替发音词典路径、预训练模型路径(当然如果下载有现成的发音词典、预训练模型,就直接用其路径替换):
mfa align corpus_path english english target_path
如果没有预先执行mfa model download xxx
命令就会报错没有english
示例:
需要进行对齐的文件夹及其目录结构:
D:\Project\MFA\raw_data\Emotions_en
\---speaker1
Anger-1.lab
Anger-1.wav
Anger-2.lab
Anger-2.wav
Anger-2.lab
Anger-3.wav
\---speaker2
Anger-1.lab
Anger-1.wav
Anger-2.lab
Anger-2.wav
Anger-2.lab
Anger-3.wav
...
生成TextGrid文件路径:
D:\Project\MFA\preprocessed_data\Emotions_en
对齐:
mfa align D:\Project\MFA\raw_data\Emotions_en english english D:\Project\MFA\preprocessed_data\Emotions_en
(1)conda环境中没有安装kaldi
ThirdpartyError: Could not find 'sox'
ThirdpartyError:Could not find 'fstcompile'.
解决:
一开始我跳过第1、2步直接在自己原有的conda环境中pip install montreal-forced-aligner
安装MFA,但是在后续步骤中一直报以上错误,哪怕我已经安装了sox
,没有找到解决方法,猜测这可能都是由于conda环境中没有安装kaldi
,于是我就打算根据搜到的一些教程安装kaldi,但是大多都是在Linux上的安装教程,或者是很复杂的在Windows上安装的教程,搞了很久没弄好,最后发现官方教程的第一步创建conda环境的同时就安装了kaldi(真的会谢QAQ)。
(2)安装openfst的问题
参考MFA在Ubuntu18.04安装教程时,在第一步conda create -n aligner -c conda-forge openblas python=3.8 openfst pynini ngram baumwelch
就卡住了,主要有两个原因:
1.
Pynini 仅支持 Linux 和 MacOS
2.
openfst-python 只支持 python<=3.7,与2.0版本的mfa环境要求互斥了,当然最后发现也完全没有必要安装
(3)重装后使用mfa align对齐时仍旧报相同错误
在mfa align遇到一些我无法解决的bug时,直接粗暴地重装mfa版本,但是再次对齐时报出同样错误。
解决: 重命名要进行对齐的数据集文件夹
Montreal Forced Aligner教程——背景、安装和使用
MFA在Ubuntu18.04安装教程
MFA官网