MFA(Montreal Forced Aligner)简记

MFA官方地址:https://montreal-forced-aligner.readthedocs.io/en/latest/index.html

MFA预训练模型:https://mfa-models.readthedocs.io/en/latest/

What is forced alignment

Forced alignment is a technique to take an orthographic transcription of an audio file and generate a time-aligned version using a pronunciation dictionary to look up phones for words.

MFA是一个自动化的音频与文本的强制对齐工具。它主要用于自动对齐音频与转录文本,生成时序标注。常见于语音合成领域,如:Text-To-Speech(TTS)语音合成任务。

功能及工作流

MFA得主要功能有:

  • 音频-文本对齐:MFA可以接受音频文件和其对应的转录文本,然后自动标注音频中每个单词或音素得开始和结束时间。
  • 多语言支持:最初面向英文开发,目前提供多种语言的支持以及对应的预训练模型。
  • 批处理能力:能够处理大量音频和文本文件,使其用于大规模研究。
  • 灵活性和可扩展性:允许用户训练自己的模型。

工作流程:

  • 预处理:处理对应的.wav音频文件以及包含文字的.lab文件。
  • 模型训练/加载:可以使用自己训练的模型,也可以加载预训练好的模型。
  • 执行对齐

Quick Start

对于该工具,笔者建议使用官方推荐的Conda环境进行安装(虽然我并不是Conda的拥趸)。使用其他方式安装时,如pip,可能导致虚拟环境中的其他库(如Numpy,Pandas等)出现版本不兼容。

1
2
conda create -n aligner -c conda-forge montreal-forced-aligner
conda activate aligner

**准备必要的预训练模型:**MFA需要两个模型依赖:Dictionary字典以及Acoustic Model声学模型,这些预训练模型可以在MFA官方网站上找到,但MFA官方提供的拼音字典可能出现问题,笔者在使用MFA官方模型进行对齐时也出现相应问题,最终我选择了自行训练的字典以及声学模型。关于MFA官方模型的问题,请查看Github上的讨论:Github Issue

MFA预训练字典:https://mfa-models.readthedocs.io/en/latest/dictionary/index.html

MFA预训练声学模型:https://mfa-models.readthedocs.io/en/latest/dictionary/index.html

自行训练的 Acoustic Model(Mandarin): Download In Google Drive

自行训练的 Dictionary(Mandarin): Download in Google Drive

如果您解决了MFA官方提供的字典在编码音素时出现的问题,欢迎通过邮件联系我,我很想知道如何解决这个问题!

进行对齐:

MFA对齐的语法是:

1
mfa align [Raw Data Path] [Dictionary Path] [Acoustic Model Path] [Output Path]

若使用 MFA 官方提供的模型,样例如下:

1
mfa align [Raw Data Path] mandarin_pinyin mandarin_mfa [Output Path]

建议添加的参数:

1
mfa align [Raw Data Path] [Dictionary Path] [Acoustic Model Path] [Output Path] --disable_textgrid_cleanup --clean

--disable_textgrid_cleanup:这个选项通常用于禁用TextGrid文件的清理过程。默认情况下,MFA会尝试清理或修正可能存在的TextGrid文件中的问题(例如,时间标签的不一致性)。如果使用了这个选项,MFA将不会执行这一步,而是直接使用现有的TextGrid文件,无论它们是否完全准确或一致。

--clean: 这个选项通常用于清除之前的对齐结果,从而为新的对齐任务创建“干净”的环境。例如,如果你以前已经进行过对齐,并希望删除旧的结果,以免它们干扰新的对齐任务,那么可以使用这个选项