- 摘要
本次实验我选取了玻璃破碎声、汽车鸣笛声和汽车引擎声三类声音,分别选取时域特征:短时能量、短时过零率,频域特征:短时主频点和mfcc特征,来对每类声音进行分析,并分析其表达能力
- 实验数据说明
实验数据从哈佛大学用于环境声分类的ESC-50数据集中选取纯净的玻璃破碎声、鸣笛声和汽车引擎声各10条,其中每条数据时长5秒,采样率为44.1KHz,位深度16bit。
- 频谱特征提取分析
- 短时主频点特征分析
声音的短时主频点指对一段声音分帧后,然后再每一帧上做傅里叶变换求得频率对应的功率值,并检索每一帧上面功率最大的频率点,将这个频率点定义为主频率。
这个实验初衷是求取每帧信号的主频带范围,但是经过上网查阅资料并没有查到关于声音信号的主频带的说法,在这里将这个问题抛出,希望得到大家的解答。下图是从玻璃破碎声信号中选取的两帧信号的频谱。
图1 短时频谱
- 玻璃破碎声主频点
使用matlab编程,求取声音信号各帧的主频点,然后绘制与主频相关的两个图。
图2 玻璃破碎声各帧主频散点图
图3 玻璃破碎声主频点功率谱图
分析上面两个图,其主频点杂乱无章,分布在10KHz之内,并没有找到明显的特点。此外还发现零频处功率值极高,在声音信号中零频代表着什么?
上面特征图示的仅仅是一个玻璃破碎声样本的主频特征,为了分析不同玻璃破碎声样本之间的区别和联系,我选取十个玻璃破碎声样本,将上面两种图制作成动态图,观察不同样本的区别和联系。
图4 玻璃破碎声各帧猪频谱动态图
图5 玻璃破碎声主频点功率谱动态图
根据上面两个图综合分析,玻璃破碎声主频分布在0-15 KHz,除此之外,该特征对此类声音并没有明显的表达能力。
- 汽车鸣笛声主频点
流程同上,绘制汽车鸣笛声单个样本的两种图,如下图所示
图6 汽车鸣笛声各帧主频散点图
图7 汽车鸣笛声主频点功率谱图
综合上面两个图分析,该汽车鸣笛声样本的主频集中在818.3Hz频率处。
做动态图分析不同汽车鸣笛声样本之间的区别和联系,如下图所示。
图8 汽车鸣笛声各帧主频动态图
图9 汽车鸣笛声主频点功率谱动态图
通过动态图可以看出,汽车鸣笛声的主频比较集中,且集中在低频处,但是有几个样本的主频集中在零频处,还不明白原因。
- 汽车引擎声主频点
同上首先分析一个样本的主频特征,绘制实验结果数据如下图所示。
图10 各帧主频散点图
图11 主频点功率谱图
通过上面两个图可以分析出,针对这一个样本来说,其信号的主频谱集中在零频处。
通过观察不同汽车引擎声的主频图,分析其主频特性,其主频图如下图所示
图12 汽车引擎声各帧主频动态图
图13 汽车引擎声主频点功率谱图
通过上面两个动态图分析,汽车引擎声的主频点集中在零频处。为了验证实验结果的正确性,我们随机抽取一帧,观察其频谱图。
图14 汽车引擎声某一帧的频谱图
从上图可以看出,汽车引擎声只有在零频处有信号。
- 特征可视化
对每个样本的主频点特征求均值和标准差并保存成csv文件,利用python对数据进行分析,比较该特征对三种声音的分类能力。
- 单特征可视化
利用python语言来实现特征的分析,使用seaborn绘图库,绘制violin图。
图15 主频点均值对比图
图16 主频点加权平均值对比图
图17 主频点方差对比图
通过分析上面三个图,发现通过简单的求短时主频的均值或者标准差作为声音的唯一特征,是不可靠的。
- 二维特征可视化
将均值和方差作为一组特征,映射到二维平面上,利用python将这个组合特征映射到二维平面上,分析三种声音的区分度,如下图所示。
图18 二维特征可视化
通过上图分析,利用这两种简单特征的组合就能使得声音有了一些区分度。
- 小结
通过这个小实验发现,这种主频特征对这三类声音的表达能力较差。此外,还发现增加特征的维度,使得特征对声音的区分度更好。
(如有问题,请批评指正)