Praat
作为普通语音学习者的标注工具已经算是比较经典的工具了。近些年来,随着AI的兴起,神经网络的算法更新迭代也很迅速,这其中有一些算法会涉及到基频,也称为音高,这个参数的应用。而作为学习者在学习科研中,基频也是一个衡量声调或者语调的重要表现特征。今天的话题是想比较使用Praat
提取的基频和两种工程应用级别提取的基频是否有比较大的差异,换句话说,如果使用Praat
这个工具提取的基频,能做到工程应用吗?
我们选择标贝公司的开源数据中的一句为例,
本文涉及到的程序和数据见:
https://github.com/feelins/Python-linguistics/tree/main/Part-03/P03_003_get_pitch
我们分别使用Praat
, Straight
, WORLD
,提取这句话的基频, 后面两种工具, Straight是日本的和歌山大学的一位教授开发,它的matlab代码是开源的,在语音界早期很长的一段时间内,它都作为一个重要的参数提取和声码器。 近些年来,WORLD作为一种开源的声学参数分析工具和声码器,也被广泛应用。我们现在就来比较三种工具提取的基频是有多大的不同。
- Praat脚本:https://github.com/feelins/Python-linguistics/blob/main/Part-03/P03_003_get_pitch/Get_Pitch.Praat
- Straight: 因为没有开源的python代码或者工具代码,需要在matlab环境使用;
- python脚本:https://github.com/feelins/Python-linguistics/blob/main/Part-03/P03_003_get_pitch/extract_f0_by_WORLD.py
三种工具,对同一句音频,提取的基频,也在这个目录内:
https://github.com/feelins/Python-linguistics/tree/main/Part-03/P03_003_get_pitch
我们使用的基频是16K
采样率,提取的时候都是使用5毫秒
的帧长,Praat
和Straight
相同,都是提取了532帧
,而world提取了533帧
,此处仍然需要笔者去查阅是为什么,有兴趣的伙伴也可以关注。我们默认忽略这一个点的区别。
先画一个点线图,虽然有个别数据点的不同,总体看上去并没有比较大的区别。
其次,我们检查后发现,整个音频,有连续基频点的一共是6段,我们分别比较这6段,再和原始音频比较,查看这6段的范围,在3种工具上是否有大的差异。人工检查后,大概定位这6段的开始时间和结束时间为:
开始时间 | 结束时间 |
---|---|
0.4 | 0.58 |
0.74 | 0.88 |
0.97 | 1.32 |
1.42 | 1.8 |
1.88 | 2.04 |
2.19 | 2.38 |
针对三个工具提取的时间点,假如我们认为跟人工标记的最相近得2分,否则得1分。
工具 | 开始帧 | 结束帧 | 开始时间 | 结束时间 | 得分 |
---|---|---|---|---|---|
Praat | 85 | 120 | 0.425 | 0.6 | 1 |
149 | 180 | 0.745 | 0.9 | 1 | |
195 | 269 | 0.975 | 1.345 | 2 | |
284 | 361 | 1.42 | 1.805 | 2 | |
382 | 409 | 1.91 | 2.045 | 2 | |
438 | 475 | 2.19 | 2.375 | 2 | |
straight | 82 | 117 | 0.41 | 0.585 | 2 |
150 | 180 | 0.75 | 0.9 | 1 | |
194 | 268 | 0.97 | 1.34 | 2 | |
285 | 362 | 1.425 | 1.81 | 2 | |
381 | 415 | 1.905 | 2.075 | 1 | |
439 | 493 | 2.195 | 2.465 | 1 | |
world | 78 | 117 | 0.39 | 0.585 | 2 |
150 | 180 | 0.75 | 0.9 | 1 | |
194 | 273 | 0.97 | 1.365 | 1 | |
285 | 368 | 1.425 | 1.84 | 2 | |
381 | 409 | 1.905 | 2.045 | 2 | |
438 | 482 | 2.19 | 2.41 | 2 |
事实上,这样的判断反而发现Praat和WORLD
是比较接近人工判断的,当然这个人工判断仅是笔者一人所为,有兴趣的伙伴可以自己尝试提取数据比较。
总之,笔者认为,使用Praat提取的基频完全可以作为工程使用。
获取脚本
https://github.com/feelins/Python-linguistics
本站所有Praat脚本
都可以在上述github的项目目录
里找到,如果日常对代码、脚本操作比较熟练的可通过下载、安装、配置github for windows
在自己的电脑上通过git clone
将代码下载到本机,这样的好处是可以跟主站及时更新代码。
不想费如此脑筋,可以通过点击如下图Code位置所示,下载整站的代码,可直接使用。
关注
公众号:极地语音工作室, QQ讨论群720939827
版权说明
1、版权归本博客作者所有;
2、未经本站或者作者允许, 不得任意转载本文内容,否则将视为侵权;
3、转载或者引用本文内容请注明来源及原作者;
4、对于不遵守此声明或者其他违法使用本站内容者,本人依法保留追究权等。