Praat之基频分析

Praat之基频分析

测量基频F0的方法

  • 自相关 Autocorrelation(易出现pitch-halving\pitch-double)
  • 窄带谱图 Narrowband spectrogram(第一谐波就是基频)
  • 倒谱分析 Cepstral analysis
  • 测量声门波 glottal pluse(通过波形,f=1/T)

具体方法就不展开讲了,看我的其他博客。

波形直观理解:

下图我选了0.03s的浊音音频,可以看到是短时周期的,那么基频就是1s内有多少个这样的周期。

Praat之基频分析_第1张图片

比如这个正弦信号,1秒有2个相同波形,所以基频是2Hz。
Praat之基频分析_第2张图片

注:自相关的错误,还得后面三种方法再检查一下。

基频测量

加载一条语音,直接 view&edit
Praat之基频分析_第3张图片
右边就是基频值范围。左边是频谱值范围。

看某一时刻的基频值:
选move cursor to
Praat之基频分析_第4张图片
然后 pitch–>get pitch

选 pitch——pitch settings

Praat之基频分析_第5张图片
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算出来的有假值,如下图红色圈出的那段。设置合理的范围有助于去掉假值。

Praat之基频分析_第6张图片
2.Unit:基频单位。除了Hz还有对数,mel等
3.计算方法:如果只是研究语调,就用autocorrelation,如果是要看发声是沙哑还是怎么的,就用cross-correlation.
4.Drawing method:计算出来的基频是画成一条平滑线curve,还是点speckles,还是计算机自动选择automatic。

选 pitch——Advanced pitch settings

Praat之基频分析_第7张图片
1.View range:你想要看到的范围
2.very accurate可以点或不点
3. 其他的值如果只是做声调分析,就不要改了。Vocing threshold就是超过这个阈值就是有基频浊音,没超过就是清音,他就不会计算基频值。要是研究某些病理语音就需要改。一般值为0.45,0.25

假如这里我设0.25试试:
如红色部分本来没基频,变成有了。所以设回0.45
Praat之基频分析_第8张图片
人的声音的基频值一般是连续的,声带振动不会大起大降,比如上图右部分,就是错的基频值。


官方文档对基频范围设定的说明:

控制基频候选值的设置如下:

  • Time step (s): (标准值: 0.0)
    测量间隔(帧持续时间),单位为秒。如果您提供0,Praat将使用0.75 /(基音下限)的时间步长,例如,如果基音下限为50 Hz,则为0.75/50=0.015秒;在这个例子中,Praat每秒计算66.7个音高值。
  • Pitch floor (Hz): (标准值:50Hz)
    低于这一频率的候选值将被舍去。该参数决定了分析窗口的有效长度:它是最长周期的3倍长,即,如果音高为50Hz,窗口将有效地为3/50 = 0.06秒长。
    请注意,如果您将时间步长设置为零,则连续测量的分析窗口将明显重叠:Praat将始终在一个窗口长度内计算4个音高值,即过采样度为4。
  • Pitch ceiling (Hz) (标准值: 800 Hz)
    高于此频率的候选值将被舍去。
  • Max. number of candidates (标准值: 15)
    每一帧将至少包含这么多候选音高值。其中之一是“未发声的候选值”;其他的则对应于信号与自身或多或少相似的时间滞后。
  • Very accurate (标准值: off)
    如果关闭,则该窗口为汉宁窗,其物理长度为3 /(pitch floor)。如果打开,窗口是高斯窗口,其物理长度为6 /(pitch floor),即有效长度的两倍。

后处理算法在候选值中寻找最佳的路径。决定最佳路径的设置是:

  • Silence threshold (标准值: 0.09)
    不包含高于此阈值的幅度的帧(相对于全局最大幅度),高于此值可能是静默段。
  • Voicing threshold (标准值: 0.50)
    清音候选值的强度,和自相关最大值有关。如果一帧中的周期能量大于总能量的这一部分(其余部分为噪声),那么Praat将倾向于将该帧视为浊音;否则为清音。为了增加清音决策的数量,可以增加发声阈值。
  • Octave cost (标准值: 0.055 per octave)
    对高频候选值的倾向程度,和自相关最大值有关。这是必要的,因为即使(或:特别是)在一个完全周期信号的情况下,F0的所有底音都是与F0本身是同样强的候选值。要想更有力地支持选择高频候选值,就要提高这个值。
  • Octave-jump cost (标准值: 0.35)
    对音高变化不利的程度,和自相关最大值有关。要减少大频率跳变的次数,请增加此值。与本文中描述的相反,该值将根据时间步进行校正:乘以0.01 s / TimeStep,以获得本文中公式中使用的值。
  • Voiced / unvoiced cost (标准值: 0.14)
    相对于最大可能的自相关,浊音/清音转换的不利程度。要减少浊音/清音转换的数量,请增加此值。与本文中描述的相反,该值将根据时间步进行校正:乘以0.01 s / TimeStep,以获得本文中公式中使用的值。

选 pitch——get pitch
选中一段,再get pitch,就是这一段的平均基频值。要只选某个时间点,那就是这一点的基频值。

Praat之基频分析_第9张图片

选某个时间点时,因为基频是某段时间算一个值,如0.01s,所以这一个时间点praat会用interpolated算法等算一个值。
Praat之基频分析_第10张图片

选 pitch——extract visible pitch curve

然后在主页面,就会出现一个pitch untiled。选中后点view&edit

Praat之基频分析_第11张图片
可以看到,praat在计算基频时,在一个时间段会得出很多个候选值,会选择相关系数最大的,就是桃红色的选定值。

要是有错误的地方,如下图:
选中区域,selection–>Unvoice。就没了
Praat之基频分析_第12张图片

主页面的pitch untiled。选择sound,
就可以以次基频生成不同的声音,有脉冲的pluse,有正弦的sin,有hum
Praat之基频分析_第13张图片

主页的query:
Praat之基频分析_第14张图片

如上图点击get time step,得到:
在这里插入图片描述
说明每隔0.0083秒,计算一个基频值。
还有能计算基频的最大最小值,均值,方差等等。

主页的Analyses periodicity–>To pitch
Praat之基频分析_第15张图片
time step就是每隔多少秒计算一个基频,比如刚才的0.0083s,可以自己设置,想要基频的点少点,就设置大点。

主页的Analyse:
选 PonitProcess untitled
Praat之基频分析_第16张图片

然后和声音一起选中,view&edit
Praat之基频分析_第17张图片
就是计算出来的pulses。

主页的convert:
选Down to PitchTier
Praat之基频分析_第18张图片

得到 PitchTier untitled。

Praat之基频分析_第19张图片
做语音合成的时候,可以用到这个修改基频,选Point里的add point at cursor,就可以加点。
在这里插入图片描述

如何准确提取声调

1.什么时候基频开始?
只考虑声调的话,有些人建议从第二个竖直条的基频算起,如果考虑辅音对声调的影响,第一个基频值也很重要哦。
Praat之基频分析_第20张图片
2.什么时候基频结束?
看第二共振峰开始变的不清晰,说明韵母结束了,就算基频结束
看波形图的能量显著下降了
Praat之基频分析_第21张图片

声调后面突然的拐弯上升等,这都是要去掉的。掐头去尾。
声调的载荷单位就是韵腹+韵尾

3.计算声调的斜率slope:
如降调,得到这段基频的起点和终点值,除以这段的时间。

选中一段后,选pitch–> pitch listing。
保存为excel里。记得吧时长记下来。
Praat之基频分析_第22张图片

怎么画出来,直接对pitch untitle–>draw

Praat之基频分析_第23张图片

为了看基频到底对不对,借助窄带语谱图,
频率范围设置小
Praat之基频分析_第24张图片
要么坐标直接看,要么多数几条谐波,如数第6条的值,除以6,就是基频值。

还有可以选某一时刻谱线看

Praat之基频分析_第25张图片

然后放大看:
Praat之基频分析_第26张图片

但怎么看第一谐波呢?比如下面这个图,第一个不算,第二个高的才是。大部分情况是第一个,但下图第一个峰才42Hz,利用常识也知道不对。
Praat之基频分析_第27张图片

如果窄带谱图看出来的和基频值相差正负3,那就认为该基频值正确。

此时主页上多了个这个谱线
Praat之基频分析_第28张图片
从倒谱看基频值:

选中这个谱,点Analyse–> To power cepstrum
主页上得到13.PowerCesptrum,把他draw出来:

Praat之基频分析_第29张图片

Query里点击Get quefrency of peak:

Praat之基频分析_第30张图片
得到基频值:
Praat之基频分析_第31张图片

后记

可以用help,搜索基频分析
Praat之基频分析_第32张图片

Praat基频提取算法,预测基频错误可能的原因:
Praat之基频分析_第33张图片

你可能感兴趣的:(语音学&语言学,音频,人工智能,算法)