文章目录
- 1 概述
- 2 source model
- 3 filter model
- 4 小结
- 参考资料
1 概述
本文的目的是为了厘清在speech production model中source model和filter model所扮演的角色,不涉及具体公式的推导或者模型的建立,只是为了把这两个model在干什么事情说明白。文中用到的图片均来自底部参考资料,如有侵权,必定删除。
如下图1-1所示,speech production model把人发声的过程分成了三大块,分别是power,source和filter。
power就是我们的肺部,用来产生气体;source是我们的喉咙,用来控制声音的音调pitch和响度loudness;filter是我们的嘴、舌、齿等等组成的声道,用来控制最终发出什么音。
power这块我们不关心,我们用模型去模拟的时候直接从source开始模拟就可以了。我们假定source产生的信号在频域内如下图1-2最左侧所示,这是由一个基频F0F_0F0和它的谐波组成的,这个信号和filter在频域内做乘积得到了下图1-2最右侧的频域图。可以看出这是source和filter的结合。
2 source model
source model模拟的就是我们的喉咙。我们的喉咙在发声的时候,会产生振动,相当于有一个阀门在一开一关。这样使得source model产生的信号是一个以F0F_0F0为极品的信号,这也就是我们的音调pitch。有这种振动的声音被称为浊音(voiced),没有这种振动的被称为清音(unvoiced)。清音也就是让气体直接通过喉咙,不加任何振动。
图2-1中的u(t)u(t)u(t)就是source model产生的结果,其在经过傅里叶变换之后,得到的频域上的图如图1-2所示,会伴有很多的谐波(harmonics)。谐波都在基频的整数倍上,比如我们F0F_0F0是200Hz,那么400Hz,600Hz,800Hz等等都是它的谐波。直观上来看,就是图1-2中最左侧的图和最右侧的图的毛刺。
3 filter model
filter model就是我们的声道,各种形状会让我们声道变成不同参数的滤波器。这个滤波器我们假设它是g(n)g(n)g(n)。从source model出来的信号u(n)u(n)u(n)会和g(n)g(n)g(n)在时域上做卷积得到最终的信号x(n)x(n)x(n)。
x(n)=u(n)∗g(n)(3-1)x(n) = u(n)*g(n) \tag{3-1} x(n)=u(n)∗g(n)(3-1)
时域上的卷积就是频域上的乘积
X(k)=U(k)G(k)(3-2)X(k) = U(k)G(k) \tag{3-2} X(k)=U(k)G(k)(3-2)
这个G(k)G(k)G(k)就决定了我们发出的是"a"还是"u"这样的音。
如图1-2所示不同的声道形状就表示了不同形状的滤波器,由于频域内是乘积的操作,最终得到的信号会在滤波器的几处频域峰值处产生共振峰(format frequencies)。这些共振峰丛小到大依次为F1F_1F1,F2F_2F2,F3F_3F3,F4F_4F4等等。一般浊音的共振峰会随着频率的增大而幅值减小,而浊音的在高频处幅值较大。图3-1中是浊音和清音不带毛刺的X(k)X(k)X(k)示意图。
我们对x(n)x(n)x(n)做短时傅里叶变换之后,往往会得到如下图3-2所示的频谱图。其中的白线就是各个共振峰。据此可以判断发出的是什么音。
4 小结
据此,我们可以知道source model决定了harmonic frequencies,也即
- 声音的音调(F0F_0F0)
- 声音的强度
- 声音的时长
- 声音的质量
filer model决定了formant frequencies,也即
- 发出的是什么音
参考资料
[1] Speech Acoustics 4 - Source-filter model
[2] 李琳山-Speech Signal and Front-end Processing