Praat 使用及语音信号处理算法基础
利用 Praat 完成如下任务,熟悉 Praat 的基本操作,利用 Praat 对语音信号的基频、时长、谱参数等进行分析,对语音信号的基频、时长、谱参数等有进一步理解。
任务一:声学参数
加载“GuoL/40004.wav”音频,在此基础上进行以下操作并回答如下问题:
- 显示和查看波形waveform、语谱图spectrogram、音强intensity、基音轮廓pitch contour、共振峰 formant 和脉冲 pulses。
- 更改每个声学参数的计算/提取的设置参数,并观察比较不同设置参数对应的结果差别。
音强 Intensity analysis
- 视野范围
标准设置为 50 到 100 dB。如果对背景噪声的功率感兴趣,可以将其设置为 0 到 100 dB 的范围,与之前默认参数结果对比如下图所示。
- 平均法
如果进行时间选择(而不是将光标设置在单一时间),就会出现平均化。强度等值线左侧或右侧的绿色数字(dB)将显示选择中的平均强度。从 "强度 "菜单中选择 "获取强度 "时,会得到同样的数值。可以选择强度的三种平均方法中的一种来获取平均值,或者选择选区中的中值。
例如对于以下选区:
不同方法进行平均的结果如下所示:
median: 53.29dB(
μ
\mu
μ.5)
mean energy: 58.81dB(
μ
\mu
μE)
mean sones: 57.02dB(
μ
\mu
μS)
mean dB: 56.21dB(
μ
\mu
μ)
共振峰 Formant analysis
- 可以使用Formant菜单来设置formant的分析参数。对于女声,最大频率一般设置为5500赫兹;对于男声,则设置为5000赫兹。
基音 Pitch analysis
-
基因范围是对音高分析最重要的设置。标准范围是75到500赫兹,即音高分析法只能找到75到500赫兹之间的数值。应该将这个范围设置为适合扬声器的数值,但一个问题是,扬声器的音高范围有很大的不同。对于许多低音调(如一般的男声)的声音,一般把下限设置为75Hz,上限设置为300Hz;对于许多高音调(如一般的女声)的声音,一般设置为100-500Hz的范围。在高音的方面,一些儿童在大喊大叫时可以达到近2000赫兹;在低的方面,咯吱咯吱的声音可以低至40赫兹;因此,对于正在研究的声音来源,可以尝试不同的设置设置。
-
以下是你必须提供这些设置的原因。如果音高底线是75Hz,音高分析方法需要一个40毫秒的分析窗口,也就是说,为了测量例如0.850秒时间的F0,Praat需要考虑从0.830到0.870秒的一部分声音。这40毫秒对应着3个最大的音高周期(3/75=0.040)。如果你把音高底限设置为25赫兹,分析窗口将增长到120毫秒(也是3个最大音高周期),也就是说,0.790到0.910秒之间的所有时间都将被考虑。这样就不太容易看到快速的F0变化。
-
设置音高范围的下限是对音高分析的一个技术要求。如果你把它设置得太低,你会错过非常快的 F 0 F_0 F0变化,如果把它设置得太高,你会错过非常低的 F 0 F_0 F0值。对于儿童的声音,通常可以使用200赫兹,尽管75赫兹仍然可以让你获得与低音调声音相同的时间分辨率。
- 此外,Unit参数的设置决定了垂直音阶的单位,如下图所示,一般采用以赫兹为单位的音高范围。
语谱 Spectral analysis
- 解释上述设置参数的含义。
音强 Intensity
- 最小间距(赫兹):信号中的最小周期性频率。如果设置的太高,最终会得到一个音高同步的强度调制。如果设置得太低,强度轮廓可能会显得模糊不清,所以如果想要一个尖锐的轮廓,应该把它设置得与信号所允许的一样高。
- 时间步长(s):产生的强度轮廓的时间步长。如果把它设置为零,时间步长将被计算为有效窗口长度的四分之一,即0.8/(最小间距)。
pitch
进行音高分析,对语音进行优化。
- 时间步长(s)(标准值:0.0):测量间隔(帧持续时间),以秒为单位。如果提供0,Praat将使用0.75/(音高底线)的时间步长,例如,如果音高底线是75Hz,则为0.01秒,即Praat每秒钟计算100个音高值。
- 音高下限(Hz)(标准值:75Hz):低于这个频率的声音将不被接受。这个参数决定了分析窗口的长度:它将是3个最长的周期,也就是说,如果音高下限是75Hz,窗口将是3/75=0.04秒。注意,如果把时间步长设置为零,连续测量的分析窗口将明显重叠。Praat总是在一个窗口长度内计算4个音高值,也就是说,超采样程度是4。
- 音高上限(Hz)(标准值:600Hz):超过这个频率的声音将被忽略。
- 静音阈值(标准值:0.03):不包含振幅超过这个阈值(相对于全局最大振幅)的帧,可能是无声的。
- 发声阈值(标准值:0.45):相对于最大可能的自相关而言,未发声的声音强度。要增加未发声的绝对数量,就要增加这个值。
- 倍频成本(标准值:0.01/倍频):相对于最大可能的自相关而言,对高频候选人的青睐程度。这是必要的,因为即使(或:特别是)在一个完全周期性的信号的情况下,F0的所有暗调都是与F0本身同样强大的候选者。为了更有力地支持对高频候选人的招募,增加这个值。
- 倍频程跳跃成本(标准值:0.35
相对于最大可能的自相关而言,不利于音高变化的程度。为了减少大频率跳跃的数量,增加这个值。与文章中描述的不同,这个值将对时间步长进行修正:乘以0.01秒/时间步长,就可以得到文章中公式中使用的值。 - 有声/无声的成本(标准值:0.14
相对于最大可能的自相关而言,不利于有声/无声转换的程度。要减少有声/无声转换的数量,就要增加这个值。与文章中描述的不同,这个值将被修正为时间步长:乘以0.01秒/时间步长,就可以得到文章中公式中使用的值。
语谱 Spectral analysis
- 查看范围(Hz)
需要显示的频率范围。标准是下限为0 Hz,上限为5000 Hz。如果这个最大频率高于声音的奈奎斯特频率(即采样频率的一半),频谱图中的一些值将是零,而较高的频率将被画成白色。如果以44100Hz的频率录制声音,并将视图范围设置为0Hz至25000Hz,就可以看到这种情况。 - 窗口长度
分析窗口的持续时间。标准状态为0.005秒,Praat在每一帧中使用位于该帧中心前0.0025秒和后0.0025秒之间的声音部分(对于高斯窗口,Praat实际上使用比这多一点)。窗口的长度决定了频谱分析的带宽,也就是纯正弦波的频谱图中水平线的宽度(见下文)。对于高斯窗,-3dB带宽是2sqrt(6ln(2))/(π*窗长),或1.2982804/窗长。要得到一个 "宽带 "频谱图(带宽260赫兹),保持标准窗长为5毫秒;要得到一个 "窄带 "频谱图(带宽43赫兹),将其设置为30毫秒(0.03秒)。其他窗口形状给出的数值略有不同。 - 动态范围(dB)
所有低于最大动态范围以上的值(也许是在动态压缩之后,见高级频谱设置…)都将以白色绘制。介于两者之间的数值有适当的灰色阴影。因此,如果频谱图中的最高峰高度为30dB/Hz,而动态范围为50dB(这是标准值),那么低于-20dB/Hz的值将以白色绘制,而介于-20dB/Hz和30dB/Hz之间的值将以各种灰色绘制。
- 解释 Praat 提取音强 intensity、音高 pitch 和语谱图 spectrogram 的原理与算法。
音强 intensity
返回值
空气中的强度,以相对于听觉阈值的dB表示。
算法
声音中的值首先被平方,然后与高斯分析窗口(Kaiser-20;侧音低于-190 dB)进行卷积。这个分析窗口的有效时间是3.2 / (minimum_pitch),这将保证一个周期性信号被分析为具有不大于0.00001dB的音高同步强度波纹。空气中声音的强度定义为
10
log
10
{
1
/
(
T
P
0
2
)
∫
d
t
x
2
(
t
)
}
10 \log _{10}\left\{1 /\left(T P_{0}^{2}\right) \int d t x^{2}(t)\right\}
10log10{1/(TP02)∫dtx2(t)}
其中
x
(
t
)
x(t)
x(t)是以
P
a
\text Pa
Pa(帕斯卡)为单位的声压,
T
T
T是声音的持续时间,
P
0
=
2
⋅
1
0
−
5
P
a
P_0=2\cdot 10^{-5} \text Pa
P0=2⋅10−5Pa是听觉阈值压力。
pitch
该算法在准确的自相关方法的基础上进行声学周期性检测,如Boersma(1993)所述。这种方法比基于倒频谱的方法或原始的自相关方法更准确、更抗噪、更稳健。其他方法存在的原因,是没有认识到这样一个事实:如果想在窗口信号的基础上估计一个信号的短期自相关函数,应该把窗口信号的自相关函数除以窗口的自相关函数。
r
x
(
τ
)
≈
r
x
w
(
τ
)
/
r
w
(
τ
)
r_{x}(\tau) \approx r_{x w}(\tau) / r_{w}(\tau)
rx(τ)≈rxw(τ)/rw(τ)
语谱图 spectrogram
声音傅里叶变换在Praat中的时间域被忽略了。相反,它的时域被认为是从t=0到t=T,其中t=0被认为是与第一个采样点对齐,T是采样的总时间,即
N
Δ
t
NΔt
NΔt,其中
N
N
N是采样点的数量和
Δ
e
t
Δet
Δet是采样周期。因此,最后一个采样点位于
t
=
T
−
Δ
t
t=T-Δt
t=T−Δt。
对于一个声音
x
(
t
)
x(t)
x(t),定义在域
(
0
,
T
)
(0,T)
(0,T)中的所有时间
t
t
t,对于任何频率f的复数频谱
X
(
f
)
X(f)
X(f)是
x
(
t
)
x(t)
x(t)的正向傅里叶变换,有一个负的指数。
X
(
f
)
=
∫
0
T
X
(
t
)
e
−
2
π
i
f
t
d
t
X(f)=\int_{0}^{T} X(t) e^{-2 \pi i f t} d t
X(f)=∫0TX(t)e−2πiftdt
如果声音的单位是帕斯卡 Pa \text{Pa} Pa,那么频谱的单位是 Pa-s \text{Pa-s} Pa-s,或 Pa/Hz \text{Pa/Hz} Pa/Hz。由于频谱对象只能包含有限数量的频率样本,它只对 Δ f = 1 / T Δf=1/T Δf=1/T的倍数的频率进行计算。这些频率的数量是由声音的样本数 N N N决定的。
如果 N N N是奇数,将有 N N N个频率样本。例如,如果声音有 20457 20457 20457个样本,频谱将在频率 − 10228 Δ f -10228Δf −10228Δf, − 10227 Δ f -10227Δf −10227Δf, …, − Δ f -Δf −Δf, 0 0 0, + Δ f +Δf +Δf, …, + 10227 Δ f +10227Δf +10227Δf, + 10228 Δ f +10228Δf +10228Δf计算出来。如果我们假设一个频率样本代表一个宽度为 Δ f Δf Δf的频率,我们可以看到频率样本跨越了相邻的频率范围,例如第一个样本从 − 10228.5 Δ f -10228.5Δf −10228.5Δf到 − 10227.5 Δ f -10227.5Δf −10227.5Δf,第二个从 − 10227.5 Δ f -10227.5Δf −10227.5Δf到 − 10226.5 Δ f -10226.5Δf −10226.5Δf。这些频率样本一起跨越了频谱的频域,即从 − F -F −F到 + F +F +F,其中 F = 10228.5 Δ f F=10228.5Δf F=10228.5Δf。可以看到,这个频率等于原始声音的采样频率的一半。 F = 10228.5 Δ f = 10228.5 / T = 10228.5 / ( 20457 Δ t ) = 0.5 / Δ t F = 10228.5Δf = 10228.5/T = 10228.5/(20457Δt) = 0.5/Δt F=10228.5Δf=10228.5/T=10228.5/(20457Δt)=0.5/Δt。这就是所谓的奈奎斯特频率。
如果 N N N是偶数,将有 N + 1 N+1 N+1个频率样本。例如,如果声音有 32768 32768 32768个样本,频谱将在频率 − 16384 Δ f -16384Δf −16384Δf, − 16383 Δ f -16383Δf −16383Δf, …, − Δ f -Δf −Δf, 0 0 0, + Δ f +Δf +Δf, …, + 16383 Δ f +16383Δf +16383Δf, + 16384 Δ f +16384Δf +16384Δf计算出来。同样,频率样本跨越了相邻的频率范围,但第一个和最后一个样本只有其他样本的一半宽,即第一个样本从 − 16384 Δ f -16384Δf −16384Δf到 − 16383.5 Δ f -16383.5Δf −16383.5Δf,第二个从 − 16383.5 Δ f -16383.5Δf −16383.5Δf到 − 16382.5 Δ f -16382.5Δf −16382.5Δf,最后一个从 + 16383.5 Δ f +16383.5Δf +16383.5Δf到 + 16384 Δ f +16384Δf +16384Δf。这些频率样本再次跨越了频谱的频域,即从 − F -F −F到 + F +F +F,其中 F = 16384 Δ f = 0.5 / Δ t F=16384Δf=0.5/Δt F=16384Δf=0.5/Δt,是奈奎斯特频率。
在频谱对象中,Praat分别存储复数频谱的实部和虚部。实部等于余弦变换。
re
X
(
f
)
=
∫
0
T
x
(
t
)
cos
(
2
π
f
t
)
d
t
\text {re} X(f)=\int_{0}^{T} x(t) \cos (2 \pi f t) d t
reX(f)=∫0Tx(t)cos(2πft)dt
虚数部分等于正弦变换的反向。
im
X
(
f
)
=
−
∫
0
T
x
(
t
)
sin
(
2
π
f
t
)
d
t
\operatorname{im} X(f)=-\int_{0}^{T} x(t) \sin (2 \pi f t) d t
imX(f)=−∫0Tx(t)sin(2πft)dt
复数频谱可以从实部和虚部重建,如下所示。
X
(
f
)
=
re
X
(
f
)
+
i
im
X
(
f
)
X(f)=\operatorname{re} X(f)+i \operatorname{im} X(f)
X(f)=reX(f)+iimX(f)
由于余弦是t的对称函数,正弦是t的反对称函数,所以负的频率的复数光谱是相应的正的频率的复数光谱的复共轭。
X
(
−
f
)
=
re
X
(
−
f
)
+
i
i
m
X
(
−
f
)
=
re
X
(
f
)
−
i
im
X
(
f
)
=
X
∗
(
f
)
X(-f)=\text { re } X(-f)+i \mathrm{im} X(-f)=\text { re } X(f)-i \operatorname{im} X(f)=X^{*}(f)
X(−f)= re X(−f)+iimX(−f)= re X(f)−iimX(f)=X∗(f)
这些值被计算为Spectrum的实部和虚部的平方之和。
- 共振峰 formant 和频谱图 spectrogram 之间的关系是什么?如何用 Praat 获得频谱切片spectral slice?
共振峰是被声道特别放大的频带,是频谱中能量相对集中的一些区域,谐波经过声道调制后的会形成具有共振峰的语谱图
Praat的精确操作,同样取决于频谱图设置中的窗口形状。假设选择的是50ms长。Praat会提取整个选区,然后把这个50ms长的信号乘以窗口形状,然后计算出一个频谱,把它放到对象窗口中,然后打开一个编辑窗口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xSVq0KR-1633871339959)( #pic_center =500x)]
- 什么是脉冲 pulses?哪些声学参数与脉冲有关?
在点过程中的每一个点都会产生一个脉冲。这个脉冲在产生的声音的奈奎斯特频率上被过滤,将其转换为一个采样的sinc函数。
- 采样频率(Hz):产生的声音对象的采样频率,例如44100赫兹。
- 适应系数:如果脉冲时间不在前一个脉冲的适应时间内,脉冲高度将被乘以该系数;如果脉冲时间不在前一个脉冲的适应时间内,脉冲高度将再次被乘以该系数。这个系数是为了防止脉冲序列在静默后突然启动,如果想在静默后突然启动,那么这个系数就是1.0。
- 适应时间 (s):被认为是静默的最小时间,例如0.05秒。
- 内插深度:sinc函数在峰值左边和右边的范围,例如2000个样本。
例如:如果适应因子是0.6,适应时间是0.02秒,那么在至少20毫秒的静默后,前两个脉冲的高度将分别乘以0.36和0.6。
任务二:发音与听觉感知
- 从文件夹“GuoL”中加载所提供的语音波形,观察并解释语音的谐波 harmonics。
目的
进行一个短期的HNR分析。
算法
ac该算法在精确自相关方法的基础上进行声学周期性检测,如Boersma(1993)所述。
cc该算法在前向交叉相关分析的基础上进行声学周期性检测。
设置
时间步长取标准值0.01秒,测量间隔(帧长)以秒为单位。最小间距决定了分析窗口的长度,取标准值75赫兹,沉默阈值指不包含振幅超过此阈值(相对于全局最大振幅)的帧,被视为无声,取标准值0.1。每个窗口的周期数取标准值4.5。
4.5对语音来说是最好的。保证可靠地检测到高达37dB的HNR值;每个窗口的6个周期将这一数字提高到60dB以上,但算法对信号的动态变化更加敏感。
使用方法
- 从文件夹“GuoL”中加载所提供的语音波形,比较 EGG 信号和语音信号的波形 waveforms 差别。
左图为Sound 40004 EGG 信号,右图为Sound 40004语音信号
左图为Sound 40003 EGG 信号,右图为Sound 40003语音信号
EGG的waveforms较复杂,幅度基本一致,音节之间无明显区别;EGG语谱图没有明显的共振峰。这是因为语音的口唇辐射的影响比较小, 容易作理论估计, 而声门波的频谱的关系比较复杂, 影响也较大。
- 绘制文件夹“Emotion”中“exp-0.wav”(中性)、“exp-1.wav”(愤怒)、“exp-4.wav”(悲伤)的基音轮廓 pitch contour(参考第二周讲义),比较三者之间的差异。思考:除了 pitch contour 外,三个语音还有什么其他声学特征的差别。
中性的基音轮廓较稳定,且居中;愤怒的基音轮廓音调很高,分布很离散;悲伤的基音轮廓音调很低。所以由声带振动的频率不同,导致的基音轮廓不同,通知音高能够蕴含情绪的内容。
除了 pitch contour 外,三个语音其他明显声学特征的差别:
由图可知,愤怒的音强最高,悲伤的音强最低,这与我们主观感受也是一致的。
- 绘制文件夹“Book”中“book_declaration.wav”、“book_question.wav”的基音轮廓 pitch contour(参考第二周讲义),比较二者之间的差异。
“book_declaration.wav”整体基音是一个下沉的趋势,而“book_question.wav”是一个反问的语气,基音呈现一个上升的趋势。
- 绘制文件夹“Emotion”中“exp-0.wav”的宽带语谱图和窄带语谱图(参考第二周讲义),比较二者之间的差异。
window length=0.002s
window length=0.01s
- 加载文件夹“Mask”中“abc.wav”,显示该音频的波形 waveform 和频谱图 spectrogram,听不同的部分,体会掩蔽效应 mask 的效果,说明该段音频不同时间段分别包括哪些频率的声音,并说明在不同时间段你听到的声音情况,解释掩蔽效应。
Formant
总结
基本入门Praat的使用方法,具体的原理还需要再看,实验课上学了如何改变音高和时间来调整音频