专栏总目录
信号代表随着时间变化的量。声音源于空气压力的改变。声音信号代表的是空气压力随着时间的变化。
传声器是测量上述变化并产生表示所测声音的电信号的设备。传声器和扬声器都被称为换能器(transducer)。
1.1 周期信号
周期信号是在一段时间之后重复出现的信号。比如:敲钟时候,钟会震动从而产生声音。录制后绘制其信号如下图:
图1-1
该信号与三角函数类似,也就是说其形状和正选三角函数的形状一样。
上图信号是周期性的,这里选择显示了3个完整的重复,也被称为循环。每个循环的时长称为周期,上图信号周期大概2.3ms。
信号的频率是每秒钟内周期的数量,即周期的倒数。频率的单位是每秒钟循环次数,或者称为赫兹(Hertz),英文符号为”Hz“。
上图信号频率约为439Hz,比国际标准音的440Hz稍低。这个音符的音名叫做A,或者更确切地说是小字一组a。
音叉产生的是正弦信号,因为线性的变化是一种简单的谐波运动形式。大部分乐器产生的是周期信号,但是这些信号的形状不是正弦式的。如下图(小提琴演奏的片段):
图1-2
上图信号是周期性的,但是信号的形状更加复杂。周期信号的形状被称为波形。大部分乐器产生的波形比正弦信号的复杂。波形的形状决定了音乐的音色,也就是我们对声音品性的感受。对于比正弦信号更复杂的复杂波形,人们主观上认为它更加有内涵、更温暖而有趣。
1.2 频谱分析
任何信号都可以表示成一系列不同频率的正弦信号的叠加和。
【数学概念】离散傅里叶变换(Discrete Fourier Transform, DFT),DFT也就是将信号转换成频谱。频谱是指相加产生信号的正弦波的集合。
【算法】快速傅里叶变换(Fast Fourier Transform, FFT),它是计算离散傅里叶变换的一种高效方式。
图1-3
图1-3显示的是图1-2小提琴的频谱。x轴表示的是合成这个信号的频率范围,y轴表示各个频率元素的强度,或者说是振幅。
其中频率最低的元素被称为基频。图1-2所示的信号的基频在440Hz左右(实际上要低一点)。
此信号中,基频具有最高的幅度,所以它也是主频。通常情况下,感知到的声音的音高是由其基频决定的,即使它不是主频。
频谱中其他峰值的频率还有880、1320、1760以及2200,它们是基频的整数倍。这些频率元素被称为谐波,因为它们在乐理概念上跟基频和谐:
880Hz是小字2组a的频率,比基频高出一个八度。一个八度意味着基频频率的两倍。
1320Hz接近小字3组e,也就是小字2组a的纯五度。
1760Hz是小字3组a的频率,比基频高出2个纯八度。
2200Hz接近小字4组#c,它是小字3组a向上大三度关系。
这些谐波共同构成了A大调大三和弦A #C E,虽然不在一个八度内,其中一些音只是近似,因为西方音乐已经按照平均率做了调整。
1.3 信号
1.3.1 获取thinkdsp包
这本书提供的python模块thinkdsp中,包含信号和频谱分析的类和函数。下载地址:GitHub - AllenDowney/ThinkDSP: Think DSP: Digital Signal Processing in Python, by Allen B. Downey.
1.3.2 Signal类
将使用到matplotlib包,请提前安装好
安装方法:在cmd中输入下列命令:
pip install matplotlib
1.3.2.1 产生正、余弦信号
thinkdsp中显示信号的类,名为Sig