安装与使用Montreal Forced Aligner(MFA)

在开发语音合成系统时,使用到Montreal Forced Aligner (MFA) 用于获得话语和音素序列之间的对齐。记录一下在Windows系统上安装MFA的过程以及遇到的问题。

官方安装教程

https://montreal-forced-aligner.readthedocs.io/en/latest/installation.html

安装MFA

官方教程主要有从源代码安装以及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

官方使用教程

对齐命令:
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官网

你可能感兴趣的:(语音合成,python,windows)