首页 > 编程知识 正文

宾西法尼亚大学强制对齐标注软件(P2FA)介绍以及使用说明

时间:2023-05-05 13:50:31 阅读:241873 作者:763

一、综述 1. 介绍

宾夕法尼亚大学语音标签强制对齐(Penn Phonetics Lab Forced Aligner , P2FA) 是基于 HTK 的自动语音标注工具包。它包括美式英语的声学模型,用来强制对齐的 python 文件以及 readme 文件和一些例子。同样,在 P2FA 的网站上,还有一个在线处理系统,提交一个 wav 文件和一个转录文件,之后将会以邮件方式收到一个标注好的 praat TextGrid 文件。

包含在工具包中的声学模型是基于 GMM 的单音节 HMM 模型。每个 HMM 状态使用 32 个kwdyd混合在 39 个 PLP 系数上。声学模型以 8KHz, 11,025Hz 以及 16Hz 分开。每一个声学模型包含了一个在词与词之间的可选插入的短暂停顿HMM(“sp”),这大大增加了标注的准确度。

2. 工具介绍

./models/: 声学模型、参数文件以及 CMU 发音字典
./align.py: 一个 python 脚本,用来自动执行强制对齐,从 wav 文件和对应的
转录文件产生一个 Praat TextGrid 文件
./test/:用来测试工具的文件
./examples/:例子文件

3. 先决条件

需要将 version 3.4 的 HTK 工具包事先装好来做强制对齐。 HTK 工具包可以
在 http://htk.eng.cam.ac.uk/找到。 python 脚本只支持 version 3.4。最新的版本
3.4.1 在对齐“ sp” 模型的时候有问题。

为了使用 align.py 脚本,需要有 Python2.5/2.6(早些时候/更高版本还没有
经过测试)。

4. 使用 align.py 脚步

1) 运行”python align.py wavfile trsfile output_file”。如果你没有从工具包的文件夹中运行 align.py,你将需要指定路径。

Wavfile 是包含了需要对齐的语音。如果它不是按照指定的三种模型的采样的话,它将被按照 11,025Hz 重采样。这样的采样率是推荐的。

Trsfile 是一个包含转录的文本文件。 空格或者换行符用来分隔单词。如果一个词在 CMU 的发音字典中没有找到,将会报错, 但是你能够编辑文件 model/dic 并且添加需要的新发音。你将在转录中包含以下标签’{SL}’ 安静, ‘{LG}’ 笑声, ‘{NS}’ 噪音, ‘{CG}’ 咳嗽, ‘{BR}’ 呼吸, 和’{LS}’唇声.

Output_file 是 praat TextGrid 输出文件,包含强制对齐后的结果。

工具包包含例子用来测试。你可以对齐测试文件

Python align.py ./test/BREY00538.wav ./test/BREY00538.txt./test/BREY00538.TextGrid

Output file 在词与词之间将包括‘sp’间隔,这里表示一个停顿。

2) 如果你有多于一个文件需要对齐,你讲写一个 shell脚本来使得 align.py脚本来循环。你也可以按照下面的说明。

3) 一些命令行选项也将被包括。他们必须先于 wav 文件的规范,它们是:
-r sampling_rate 覆盖使用的采样率模型, 8000, 11025, 16000。默认的 wav 文件的采样率是三个中之一,否则是 11025

-s start_time
Wav 文件的开始部分到对齐(以秒为单位,默认为 0)

-e end_time
Wav 文件的结束部分到对齐(以秒为单位,默认情况下将结束)

5. 做强制对齐的方法

1) 请参考./example/文件夹下文件的正确格式

2) 请按照如下的描述准备语音文件和转录文件。你可以为很长的语音文件做标注(例如一个小时),同时你也可以一步标注许多文件。

3) 创建参考的转录文件, transcript.mlf transcript.mlf 是 HTK 的“主标签文件”包含所有文件的标注。 下面是生成文件的步骤:

I. 单词的所有字母要大写。如果一个字在 CMU 发音字典里面没有出现,你既可以手动添加也可以从强制对齐当中把它排除掉,主要去决定于你的目的。 如果transcript.mlf 中有未知的词,标注将失败。

II. 你将把如下的标签包含在 transcript.mlf 中: ‘{SL}’ 安静, ‘{LG}’ 笑声, ‘{NS}’ 噪音, ‘{CG}’ 咳嗽, ‘{BR}’ 呼吸, and ‘{LS}’唇声.

III. 你可能想要每两个词之间插入一个‘ sp’。‘ sp’代表小小的停顿。 它从强制对齐中可以有零个长度(没有停顿)。

4) 创建 code.scp 和 test.scp。它们所包含的文件的名称分别是编码和对齐。

5) 提取声学特征

HCopy -T 1 -C ./models/your-sampling-rate/config -S code.scp

配置文件包含用于语音文件( .wav .raw, 采样率等等)以及声学特征(mfcc,plp 等等)。如果您的语音文件有不同的采样率比 8000 赫兹,11,025 赫兹,或 16,000 赫兹,可以降低采样率或转换至 11,025 赫兹(迄今为止具有最好的性能)。在我们的训练程序中, 我们将 44100Hz 的目标采样率使用‘ sox –polyphase’ 来降低采样。

6) 强制对齐

HVite -T 1 -a -m -I transcript.mlf -H ./model/your-sampling-rate/macros -H ./model/your-sampling-rate/hmmdefs -S test.scp -i ./align.mlf -p 0.0 -s 5.0 ./model/dict ./model/monophones

align.mlf 是强制对齐的结果。你可以将其转换为标签文件,如, Praat TextGrids。 请注意:

a) 在 align.mlf 里面的时间单位是 100 纳秒( 0.00000001 秒) ;

b) 有一个四舍五入的问题,当采样速率 11,025 Hz 和时间步长为 10 毫秒,所以需要更正 align.mlf 中的时间标记。你可以使用下面的公式来转换时间标记 x 到秒:

y = (x/10000000 + 0.0125)*(11000/11025).

二、具体使用

英文、中文标注:

Englishalign/Chinaalign:

主要使用命令: python align2.py xxx.wav xxx.txt xxx.TextGrid

其中: xxx.wav 中是所要转录的音频文件

xxx.txt 是 wav 中所对应的文本文件

xxx.TextGrid 是转换之后的 praat 文件

中文标注情况:

英文标注情况:

三、总结

经过实验,感觉这个标注软件对于纯净条件下的语音标注效果很好,精确度也很高。但是,抗噪声能力不是很强。同时,标注后的文件为三层内容,格式为 praat TextGrid 文件格式,如果用到 HTK 还需要转换成 lab 文件的格式来使用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。