一、统计列表中重复项出现的次数
一、统计列表中重复项出现的次数
注:本文加入了译者的理解并非严谨的译作,仅供参考
描述了怎样在Python中通过pylab接口对声音进行基本的处理。
下载文件文件中加入了基頻(F0)为440Hz的噪声。
这表示原始声压值在wav文件中一一映射到区间[-2^15, 2^15 -1]我们把声压值归一化,即映射到区间[-1, 1):
查看wav文件的通道数和采样点数
表示文件包含2个通道5060个采样点。结合采样率(sampFreq = 44110)可得信号持续时长为114ms:
下文我们只处理其中一个通道
以时间(单位ms)为x轴,声压值为y轴繪制音调图。先创建时间点数组
频谱图也是一种很有用的图形表示方式用函数fft对声音进行快速傅立叶变换(FFT),得到声音的頻谱让我们紧跟的步伐,得到声音文件的功率谱:
技术文档中指定了执行fft用到的抽样点数目我们这里则不指定,默认使用信号n的采样點数不采用2的指数会使计算比较慢,不过我们处理的信号持续时间之短这点影响微不足道。
fft变换的返回结果为复合形式比如复数,包含幅度和相位信息我们获取傅立叶变换的绝对值,得到频率分量的幅度信息
绘制的频谱图如下所示。注意图中y轴是能量的对数10*log10(p)单位分贝;x轴是频率/1000,单位kHz
为了检验计算结果是否等于信号的能量,我们计算出信号的均方根rms广义来说,可以用rms衡量波形的幅度如果矗接对偏移量为零的正弦波求幅度的均值,它的正负部分相互抵消结果为零。那我们先对幅度求平方再开方(注意:开方加大了幅度極值的权重?)
信号的rms等于总能量的平方根那么把fft在所有频率上的能量值相加然后求平方根,应该等于rms