声音波形图的python代码 声波波形图怎么看音色_声音波形图的python代码

作者:比的原理


 

1.泛音的种类和多少决定了音色

 

为什么有人的声音听起来暗,有的人听起来亮?事实上,即使是唱同一个音高,大家的音色也天差地别,而这个差别就在泛音上了。

 

一般来说泛音越充分的声音越饱满。低频泛音越充分的声音听起来越“厚实”,越“有力”;高频泛音越充分的声音穿透力越强,声音听起来越“亮”,越“尖”;高低频都有并且合理分布的声音,就是比较完美的声音。

 

在声乐理论里,一般把低频泛音叫低位置共鸣,高频泛音叫高位置共鸣。

 

2频谱图/声谱图

 

频谱图/声谱图是描述一个声音是由多少波符合而成的,这是观察泛音的最好办法。我自己做了个软件,如下图:

 

声音波形图的python代码 声波波形图怎么看音色_基频_02

 

此图由两部分组成,上半部分为声谱图(Spectrogram),下半部分为频谱图(Spectrum)。

 

先看上图:横坐标是时间,纵坐标是频率值,同一时间的纵线上存在着数个波,重合而成最终的波。颜色越亮则表示波的振幅越大。混乱的背景都是伴奏,我们只观察人声线。

 

再看下图:下图反映了上图的某个时间点(上图中的黄线)的频率分布。横坐标为频率,纵坐标为振幅。这个图更有利于直观的观察泛音的成分和强弱。

 

3.频谱/声谱图是如何制作的

 

我们都知道原始的声音是波形图,不过原始的波形图并没有太大研究价值,而且事实上也看不出“波形”。因为震动频率太高,比如帕瓦罗蒂的high C,500多的震动频率,表示一秒钟要震动500多次,那肯定是看上去一大坨,类似这样:

 

声音波形图的python代码 声波波形图怎么看音色_声学基础_03

 

放大几十倍之后,大约能看出波形,类似这样:

 

声音波形图的python代码 声波波形图怎么看音色_采样率_04

 

但无论哪种都不适合研究。

 

所以音频解析的过程是:取连续采样点,一般是4096个点,考虑到音频文件的采样率一般是44.1k,所以就是取了1/10秒之内的数据。然后对这4096个点作做快速傅里叶变换,就得到了频谱图。频谱图的信息是4096个点,每一个点对应的是这个频率上的振幅。

 

频谱图反应的是在这个时间点上的频率分布情况。严格的说应该是这1/10秒内的平均情况。来一张典型频谱图,看看跟我的图下部是不是一回事:

 

声音波形图的python代码 声波波形图怎么看音色_基频_05

 

将当前时间点的频谱画到声谱图里就得到了瀑布图。画法是:振幅越大的点,用越亮的颜色。

 

纵坐标是频率,从下到上大约是0到6000。所以一个人唱了个C5,那他的基频就大概是500,第一泛音是1000,第二泛音是1500,画到声谱图上的结果就是从下到上每隔500画一个点,根据振幅有颜色的区别。

 

随着时间的推移,声谱图会不断向右延伸,这样我们就得到了一段时间内频率分布图。比如一个C5的线在声谱图上水平延续了5秒,那表示该歌手唱了C5五秒。

 

声谱图上类似“波”的东西是颤音,也就是歌手演唱中不断改变音高,所以自然会不断改变纵坐标。

 

这是一张wiki的声谱图:

 

声音波形图的python代码 声波波形图怎么看音色_声学基础_06

 

图上出现的水平线有什么意义?水平线表示一个歌手在某个音高上持续了一段时间。越亮的线表示振幅越大,听感上当然就表现为音量大了。

 

直线就是一个长直音。考察长直音主要看稳定度,整个线越直则这个长音越稳,如果大抖就是破音,如果小抖就是不稳。如果歪了,那就是音准没把握好。

 

波浪线就是颤音。波浪越大则颤音越大。看颤音也是看稳定度,如果颤的不稳就是气息出现问题,控制不好。

 

4.如何看共鸣?

 

看泛音主要看三点:丰富与否、分布情况、泛音的音量。

 

声音波形图的python代码 声波波形图怎么看音色_基频_07

 

一般来说,所谓的泛音强弱都是和自己的基频来比的(或者是跟伴奏比)。因为音频文件的音量是可以调的,单纯看泛音大小没多大意义,以基频为参照才比较有实际意义。(低频的共鸣情况取决于元音的类型,每一个元音都有其特定的共鸣特性。一般来说,基频被共鸣强化的情况比较少。)

 

可以看到,此例中第一泛音巨大(看多了就知道,一般都是第一泛音最大),在3000左右的三个泛音也很强。

 

另一种观察方法就是和伴奏比,人声线越明显则人声越强,越能穿透伴奏。

 

来看一个例子:后知后觉对比版

 

 

 

声音波形图的python代码 声波波形图怎么看音色_基频_08

 

张雨生《后知后觉》清唱“你不辞冰雪”,竟然有如此大的高频泛音,要知道,这可是清唱,中音区,唱高音的时候鼓足了气,有很大的共鸣很正常,但唱低缓的主歌,竟然也能爆出这么大的泛音,只能说张雨生太逆天!

 

下面,请出阿妹躺枪:

 

声音波形图的python代码 声波波形图怎么看音色_基频_09

图中竖线为背景音,类似指响的声音

 

看图就能发现泛音少太多了,听感上也是很显然的,阿妹的音色暗的多,而张雨生的非常清亮。

 

当然,必须要说明:张雨生占了cd版的优势。不过我们关注的是最终听感,声音经过怎么处理并不是我们关注的重点。这个例子很好的对比了泛音对音色的影响。

 

5.如何看音准?

 

我的软件特别加了标准音高线,以及标准的泛音线,所以可以很清楚的看清音准:

 

声音波形图的python代码 声波波形图怎么看音色_声音波形图的python代码_10

 

蓝色标准线比较暗,大家仔细看。(太亮的话会干扰声音线)

 

下面有请躺枪天后阿妹展示一下音准不好是什么样的:

 

声音波形图的python代码 声波波形图怎么看音色_声音波形图的python代码_11

 

很明显,比E5高,越到高频差得越远。(高频会放大差值)

 

声音波形图的python代码 声波波形图怎么看音色_采样率_12

 

提高1key看看,又低了。这次差得更远。所以可以判定,阿妹唱到了E5 . 5。

 

再看2个例子:

 

声音波形图的python代码 声波波形图怎么看音色_采样率_13

 

帕瓦罗蒂大师,堪称全频段制霸了,大家都知道帕瓦罗蒂的C5是无敌的。

 

声音波形图的python代码 声波波形图怎么看音色_泛音_14

 

磊叔传说中的五百年,也差不多全频段制霸了。

 

上面的例子可以看出,人声基本都本着标准的“基频/第一泛音(基频的二倍)/第二泛音(基频的三倍)/······”来的。自然界物体振动发声,绝大多数也都是这样的。