语音信号也还蛮有意思的。
声音最直接的表示方式是波形,英文叫waveform,就是你贴的左边那张图。另外两种表示方式(频谱和语谱图)下文再说。波形的横轴是时间(所以波形也叫声音的时域表示),纵轴的含义并不重要,可以理解成位移(声带或者耳机膜的位置)或者压强。
当横轴的分辨率不高的时候,语音的波形看起来就是像你贴的图中一样,呈现一个个的三角形。这些三角形的轮廓叫作波形的包络(envelope)。包络的大小代表了声音的响度。一般来说,每一个音节会对应着一个三角形,因为一般地每个音节含有一个元音,而元音比辅音听起来响亮。但例外也是有的,比如:1) 像/s/这样的音,持续时间比较长,也会形成一个三角形;2) 爆破音(尤其是送气爆破音,如/p/)可能会在瞬时聚集大量能量,在波形的包络上就体现为一个脉冲。
下面这张图中上方的子图,是我自己读单词pass /pæs/的录音。它的横坐标已经被我拉开了一些,但其实这个波形是由两个“三角形”组成的。0.05秒处那个小突起是爆破音/p/,0.05秒到0.3秒是元音/æ/,0.3到0.58秒是辅音/s/。
如果你把横轴的分辨率调高,比如只观察0.02s秒甚至更短时间内的波形,你就可以看到波形的精细结构(fine structure),像上图的下面两个子图。波形的精细结构可能呈现两种情况:一种是有周期性的,比如左边那段波形(图中显示了两个周期多一点),这种波形一般是元音或者辅音中的鼻音、浊擦音以及/l/、/r/等;另一种是乱的,比如右边那段波形,这种波形一般是辅音中的清擦音。辅音中的爆破音,则往往表现为一小段静音加一个脉冲(如pass开头的/p/)。
看完了声音的时域表示,我们再来看它的频域表示——频谱(spectrum)。它是由一小段波形做傅里叶变换(Fourier transform)之后取模得到的。注意,必须是一小段波形,太长了弄出来的东西(比如你贴的右边的图)就没意义了!这样的一小段波形(通常在0.02~0.05s这样的数量级)称为一帧(frame)。下面是我读的pass的波形中,以0.17s和0.4s为中心截取0.04s波形经傅里叶变换得到的频谱。频谱的横轴是频率;我录音的采样率用的是16000 Hz,频谱的频率范围也是0 ~ 16000 Hz。但由于0 ~ 8000 Hz和8000 ~ 16000 Hz的频谱是对称的,所以一般只画0 ~ 8000 Hz的部分。
第一个频谱是元音/æ/的频谱,可以看到它的精细结构是有周期性的,每隔108 Hz出现一个峰。从这儿也可以看出来,语音不是一个单独的频率,而是由许多频率的简谐振动叠加而成的。第一个峰叫基音,其余的峰叫泛音。第一个峰的频率(也是相邻峰的间隔)叫作基频(fundamental frequency),也叫音高(pitch),常记作。有时说“一个音的频率”,就是特指基频。基频的倒数叫基音周期。你再看看上面元音/æ/的波形的周期,大约是0.009 s,跟基频108 Hz吻合。频谱上每个峰的高度是不一样的,这些峰的高度之比决定了音色(timbre)。不过对于语音来说,一般没有必要精确地描写每个峰的高度,而是用“共振峰”(formant)来描述音色。共振峰指的是包络的峰。在我这个图中,忽略精细结构,可以看到0~1000 Hz形成一个比较宽的峰,1800 Hz附近形成一个比较窄的峰。共振峰的频率一般用、等等来表示。上图中,是多少很难精确地读出来,但。当然,在2800 Hz、3800 Hz、5000 Hz处还有第三、四、五共振峰,但它们与第一、二共振峰相比就弱了许多。除了元音以外,辅音中的鼻音、浊擦音以及/l/、/r/等也具有这种频谱,可以讨论基频和共振峰频率(不过浊擦音一般不讨论共振峰频率)。
第二个频谱是辅音/s/的频谱。可以看出它的精细结构是没有周期性的,所以就无所谓基频。一般也不提这种频谱的共振峰。清擦音的频谱一般都是这样。
共振峰频率跟基频是独立的。共振峰频率是频谱包络的峰值频率,但频谱在此处可能是个谷。
对于声学模型来说,F0是我们希望排除的干扰因素啊,强烈依赖于F0的特征应该是不行的……
当然,实际使用的MFCC也并不是直接取几个共振峰的频率作为特征,毕竟想准确测量共振峰频率也不容易。MFCC是描写的是频谱包络的整体形状。
每个人读的元音频谱细节都不一样的,共同点是共振峰的位置,你可以自己录音然后观察。
2.5 在回答你的第三个问题之前,我们先来看一下声音的第三种表示方式——语谱图(spectrogram)。上面说过,频谱只能表示一小段声音。那么,如果我想观察一整段语音信号的频域特性,要怎么办呢?我们可以把一整段语音信号截成许多帧,把它们各自的频谱“竖”起来(即用纵轴表示频率),用颜色的深浅来代替频谱强度,再把所有帧的频谱横向并排起来(即用横轴表示时间),就得到了语谱图,它可以称为声音的时频域表示。下面我就偷懒,不用Matlab自己画语谱图,而用Cool Edit绘制上面“pass”的语谱图,如下:
注意横轴是时间,纵轴是频率,颜色越亮代表强度越大。可以观察一下0.17s和0.4s处,是不是跟我上面画的频谱相似?然后再试着从这张语谱图上读出元音/?/的第二共振峰频率。注意横轴是时间,纵轴是频率,颜色越亮代表强度越大。可以观察一下0.17s和0.4s处,是不是跟我上面画的频谱相似?然后再试着从这张语谱图上读出元音/æ/的第二共振峰频率。
语谱图的好处是可以直观地看出共振峰频率的变化。我上面读的“pass”中只有一个单元音,如果有双元音就会非常明显了。比如下面这张我读的“eye” /a?/,可以非常明显地看出在元音从/a/向/?/过渡的阶段(0.2 ~ 0.25s),在降低,而在升高。
3. 元音与共振峰的关系已经研究得比较透彻了,简单地说:
1) 开口度越大,越高;
2) 舌位越靠前,越高;
3) 不圆唇元音的比圆唇元音高。
例如,/ɑ/是开、后、不圆唇元音,所以高,低,高;/y/(即汉语拼音的ü)是闭、前、圆唇元音,所以低,高,低。
也许题主见过下图那样的元音图(vowel chart),我把和的变化方向标了上去。
最明显的体现其实是在英语的辅音/r/中,例如下面我读的erase /?‘re?z/的语谱图,可以看到辅音/r/处(0.19s左右)明显低,把也压下去了。
清擦音可以根据能量集中的频段来分辨。下面是我读的/f/, /θ/, /s/, /?/的语谱图。浊擦音会在清擦音的基础上有周期性的精细结构。
爆破音的爆破时间很短,在语谱图上一般较难分辨。
作者:王赟 Maigo
链接:http://www.zhihu.com/question/27126800/answer/35376174
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。