测量基频F0的方法
具体方法就不展开讲了,看我的其他博客。
波形直观理解:
下图我选了0.03s的浊音音频,可以看到是短时周期的,那么基频就是1s内有多少个这样的周期。
注:自相关的错误,还得后面三种方法再检查一下。
加载一条语音,直接 view&edit
右边就是基频值范围。左边是频谱值范围。
看某一时刻的基频值:
选move cursor to
然后 pitch–>get pitch
选 pitch——pitch settings
1.基频范围,默认是75到500Hz,我这是段男声,为了看看的清楚,就设置到了30-300Hz。
如果有病人的声音,可以把范围调低。
官方文档对基频范围设定的说明:
标准范围是从50到800Hz,这意味着音高分析方法只能找到50到800Hz之间的值。您在这里设置的范围将显示在分析窗口的右侧。
对于一些低沉的声音(例如普通男性),你可能想要将最低频率设置为50Hz,上限设置为300Hz;对于一些高音调(例如普通女性)的声音,100-600Hz的范围可能比较合适;不过,很可能50-800Hz的标准设置会适用于所有这些声音。然而,最高的时候,有些孩子在大喊大叫时可以达到近2000Hz;最低的时候,嘶哑声音可以低至30Hz;如果您调查这类情况,那么您可能需要尝试使用此设置。
如果基音为50Hz,那么基音分析方法需要60毫秒的分析窗口,也就是说,为了在0.850秒的时间内测量F0,Praat需要考虑从0.820秒到0.880秒的声音部分。这60毫秒对应3个最大音高周期(3/50 = 0.060)。如果您将基音下限设置为25Hz,则分析窗口将增长到120毫秒(这也是3个最大基音周期),即0.790和0.910秒之间的所有时间都将被考虑。这样就不容易看到F0的快速变化。
因此,如何确定音高范围的下限是音高分析的技术要求。如果设置得太低,就会错过快速的F0变化,如果设置得太高,就会错过非常低的F0值。对于儿童的声音,你通常可以使用200Hz,尽管50Hz仍然会给你提供与低沉声音相同的时间分辨率。
有时候praat算出来的有假值,如下图红色圈出的那段。设置合理的范围有助于去掉假值。
2.Unit:基频单位。除了Hz还有对数,mel等
3.计算方法:如果只是研究语调,就用autocorrelation,如果是要看发声是沙哑还是怎么的,就用cross-correlation.
4.Drawing method:计算出来的基频是画成一条平滑线curve,还是点speckles,还是计算机自动选择automatic。
选 pitch——Advanced pitch settings
1.View range:你想要看到的范围
2.very accurate可以点或不点
3. 其他的值如果只是做声调分析,就不要改了。Vocing threshold就是超过这个阈值就是有基频浊音,没超过就是清音,他就不会计算基频值。要是研究某些病理语音就需要改。一般值为0.45,0.25
假如这里我设0.25试试:
如红色部分本来没基频,变成有了。所以设回0.45
人的声音的基频值一般是连续的,声带振动不会大起大降,比如上图右部分,就是错的基频值。
官方文档对基频范围设定的说明:
控制基频候选值的设置如下:
后处理算法在候选值中寻找最佳的路径。决定最佳路径的设置是:
选 pitch——get pitch
选中一段,再get pitch,就是这一段的平均基频值。要只选某个时间点,那就是这一点的基频值。
选某个时间点时,因为基频是某段时间算一个值,如0.01s,所以这一个时间点praat会用interpolated算法等算一个值。
选 pitch——extract visible pitch curve
然后在主页面,就会出现一个pitch untiled。选中后点view&edit
可以看到,praat在计算基频时,在一个时间段会得出很多个候选值,会选择相关系数最大的,就是桃红色的选定值。
要是有错误的地方,如下图:
选中区域,selection–>Unvoice。就没了
主页面的pitch untiled。选择sound,
就可以以次基频生成不同的声音,有脉冲的pluse,有正弦的sin,有hum
如上图点击get time step,得到:
说明每隔0.0083秒,计算一个基频值。
还有能计算基频的最大最小值,均值,方差等等。
主页的Analyses periodicity–>To pitch
time step就是每隔多少秒计算一个基频,比如刚才的0.0083s,可以自己设置,想要基频的点少点,就设置大点。
主页的Analyse:
选 PonitProcess untitled
然后和声音一起选中,view&edit
就是计算出来的pulses。
主页的convert:
选Down to PitchTier
得到 PitchTier untitled。
做语音合成的时候,可以用到这个修改基频,选Point里的add point at cursor,就可以加点。
1.什么时候基频开始?
只考虑声调的话,有些人建议从第二个竖直条的基频算起,如果考虑辅音对声调的影响,第一个基频值也很重要哦。
2.什么时候基频结束?
看第二共振峰开始变的不清晰,说明韵母结束了,就算基频结束
看波形图的能量显著下降了
声调后面突然的拐弯上升等,这都是要去掉的。掐头去尾。
声调的载荷单位就是韵腹+韵尾
3.计算声调的斜率slope:
如降调,得到这段基频的起点和终点值,除以这段的时间。
选中一段后,选pitch–> pitch listing。
保存为excel里。记得吧时长记下来。
怎么画出来,直接对pitch untitle–>draw
为了看基频到底对不对,借助窄带语谱图,
频率范围设置小
要么坐标直接看,要么多数几条谐波,如数第6条的值,除以6,就是基频值。
还有可以选某一时刻谱线看
但怎么看第一谐波呢?比如下面这个图,第一个不算,第二个高的才是。大部分情况是第一个,但下图第一个峰才42Hz,利用常识也知道不对。
如果窄带谱图看出来的和基频值相差正负3,那就认为该基频值正确。
选中这个谱,点Analyse–> To power cepstrum
主页上得到13.PowerCesptrum,把他draw出来:
Query里点击Get quefrency of peak: