一种基于音频增强、Mel声谱图和ViT的环境声音分类方法


一种基于音频增强、mel声谱图和vit的环境声音分类方法
技术领域
1.本发明涉及人工智能的音频分类领域,具体涉及一种基于音频增强、mel声谱图和vit的环境声音分类方法。


背景技术:



2.声音作为人耳所能感知的信号,在我们生活中无处不在。因为声音的重要性,人类对声音的研究从未停下过脚步。环境声音分类作为声音识别的一个重要分支,一直是许多专家学者的热门研究领域。人工智能技术对环境声音进行分类,可以广泛应用于环境声音管控、智能家居、智能监听、场景分析和机器视听等领域。
3.近年来,随着医疗保健、安全监控、生态环境变化预测等应用需求的涌现,研究人员提出了许多的环境声音分类算法。但是环境声音的音频具有复杂性和多样性等特点,拥有更广泛的频率范围,许多算法并不能达到很好的识别效果。目前许多环境声音分类算法大多使用声音波形作为特征进行分类,使用的特征较少,使用的网络结构也较为单一,识别分类效果不是很好。


技术实现要素:



4.本发明针对背景技术所述问题,提出了一种基于音频增强、mel声谱图和vit的环境声音分类方法。该方法先将环境声音文件进行数据增强,其次将声音文件转化为mel声谱图,然后使用vit(vision transformer)进行训练。
5.1.本发明的技术方案包括如下步骤:
6.s1:针对要进行分类的环境声音,构建环境声音数据集。将采集到的声音数据进行音频增强。
7.s2:使用算法将音频文件转化为mel声谱图,并进行保存。
8.s3:将mel声谱图送入改进的vit(vision transformer)模型中进行训练。
9.s4:利用训练结果进行环境声音分类。
10.2.在一些可选的实施方案中,步骤s1包括:
11.s11:环境声音可以进行录制,录制格式为计算机可以识别的格式,如mp3、wav等格式。本人为了简便操作,直接使用了开源数据集urbansound8k。该数据集有十种声音分类,分别是空调器、汽车喇叭、儿童玩耍、狗叫、钻孔、发动机怠速、炮射击、凿岩锤、汽笛和街头音乐,共8732个音频文件。
12.s12:针对声音的特性,使用python编程语言中的librosa库,进行了以下5种音频增强方法:
13.(1)正基音偏移(positive pitch shifting,pps):每个音频都按+2因子进行基音偏移。程序代码为:librosa.effects.pitch_shift(y,sr,n_steps=2),y为输入的音频数据,sr为采样率,按n_steps步数移动波形的节距。
14.(2)负基音偏移(negative pitch shifting,nps):每个音频按-2因子进行基音偏
移。程序代码为:librosa.effects.pitch_shift(y,sr,n_steps=-2)。
15.(3)慢时间拉伸(slow time stretching,sts):音频采样的速度降低了0.7倍。程序代码为:librosa.effects.time_stretch(y,rate=0.7)。
16.(4)快时间拉伸(fast time stretching,fts):音频采样的速度变快为1.2倍。程序代码为:librosa.effects.time_stretch(y,rate=1.2)。
17.(5)修剪静音(trim silence,ts):修剪音频信号的前导和尾随静音。程序代码为:librosa.effects.trim(audio_data,top_db=15),将小于15分贝的音频信号的前导和尾随静音去除。
18.每个音频文件都经过5种音频增强方法,每个音频文件就生成了5个新的音频文件,相当于数据集数量翻了6倍。音频增强后,urbansound8k的8732个文件变为了52392个文件,这极大地扩充了数据集。
19.3.在一些可选的实施方案中,步骤s2包括:
20.s21:先导入一系列库函数,librosa、matplotlib.pyplot(简写为plt)和os等库。
21.s22:将音频文件一个个导入,设置采样率为22050,导入音频文件,代码为:audio_data,sample_rate=librosa.load(audio_file_path,sr=22050)。
22.s23:然后将音频数据audio_data用程序生成mel声谱图,采样率设置为22050,连续帧之间的采样数设置为256,代码为:ps=librosa.feature.melspectrogram(y=audio_data,sr=22050,hop_length=256)。
23.s24:然后设置绘制图像的尺寸和像素,代码分别为:plt.rcparams['figure.figsize']=(3.31,3.40)和plt.rcparams['savefig.dpi']=100。
[0024]
s25:然后将功率谱图的单位转换为分贝,进行图像绘制。代码分别为:mel_spect=librosa.power_to_db(ps,ref=np.max)和librosa.display.specshow(mel_spect,y_axis='mel',fmax=8000,x_axis='time')。
[0025]
s26:然后去除坐标轴,保存图片,不保存坐标轴。代码分别为:plt.xticks([])、plt.yticks([])和plt.axis('off')。
[0026]
s27:最后使用plt.savefig函数将mel声谱图保存到指定文件夹。
[0027]
4.在一些可选的实施方案中,步骤s3包括:
[0028]
s31:改进的vit模型是将传统cnn特征提取和transformer进行结合形成的。下面将详细描述模型的网络结构。
[0029]
s32:这里传统cnn特征提取使用的是改进的resnet50主干网络。首先卷积层采用的是stdconv2d,而不是传统的conv2d,然后使用group norm,然后使用relu激活函数和maxpool层,然后将stage1、stage2和stage3中的block分别重复堆叠3次、4次和9次。
[0030]
s33:经过上述改进的resnet50主干网络后,进入patch embedding层,该层由conv2d和flatten组成。然后拼接上class token和加上position embedding,两者分别含有类别信息和位置信息。然后经过dropout层,进入transformer encoder,该结构由n个encoder block组成。encoder block中有多个部分组成。第一个部分由layer norm、multi-head attention和dropout或droppath组成,然后经过一个类似的残差结构。第二个部分由layer norm、mlp block和dropout或droppath组成,然后也经过一个类似的残差结构。第二个部分中的mlp block由linear+gelu激活函数+dropout+linear+dropout等结构组成。然
后经过layer norm和extract class token结构,进入mlp head,该结构由pre-logits和linear组成。其中pre-logits由全连接层+tanh激活函数组成。
[0031]
5.总体而言,通过本发明的以上技术方案与现有技术相比,能够取得下列有益效果:
[0032]
(1)传统的环境声音识别大多使用波形特征进行识别分类,本发明使用mel声谱图作为特征进行识别分类,将声音识别转换到了图像识别。
[0033]
(2)目前一些环境声音分类方法使用mel声谱图进行旋转、移动、剪切等图片增强方法,忽略了其声音特性,本发明采用音频增强方法,更符合音频本身的特性。
[0034]
(3)目前一些环境声音分类方法使用的网络结构较为简单,本发明引入目前分类效果比较好的vit网络结构进行模型训练。
附图说明
[0035]
图1是本发明的实现流程图。
[0036]
图2是本发明的音频增强后的mel声谱图。
[0037]
图3是本发明的vit网络结构。
[0038]
图4是本发明的encoder block结构。
[0039]
图5是本发明的mlp block结构。
具体实施方式
[0040]
下面结合附图,进一步说明本发明的技术方案。
[0041]
一种基于音频增强、mel声谱图和vit的环境声音分类方法,技术方案包括如下步骤:
[0042]
s1:针对要进行分类的环境声音,构建环境声音数据集。将采集到的声音数据进行音频增强。
[0043]
在本实施例中,步骤s1可以通过以下方式实现:
[0044]
s11:环境声音可以进行录制,录制格式为计算机可以识别的格式,如mp3、wav等格式。本人为了简便操作,直接使用了开源数据集urbansound8k。该数据集有十种声音分类,分别是空调器、汽车喇叭、儿童玩耍、狗叫、钻孔、发动机怠速、炮射击、凿岩锤、汽笛和街头音乐,共8732个音频文件。
[0045]
s12:针对声音的特性,使用python编程语言中的librosa库,进行了以下5种音频增强方法:
[0046]
(1)正基音偏移(positive pitch shifting,pps):每个音频都按+2因子进行基音偏移。程序代码为:librosa.effects.pitch_shift(y,sr,n_steps=2),y为输入的音频数据,sr为采样率,按n_steps步数移动波形的节距。
[0047]
(2)负基音偏移(negative pitch shifting,nps):每个音频按-2因子进行基音偏移。程序代码为:librosa.effects.pitch_shift(y,sr,n_steps=-2)。
[0048]
(3)慢时间拉伸(slow time stretching,sts):音频采样的速度降低了0.7倍。程序代码为:librosa.effects.time_stretch(y,rate=0.7)。
[0049]
(4)快时间拉伸(fast time stretching,fts):音频采样的速度变快为1.2倍。程
序代码为:librosa.effects.time_stretch(y,rate=1.2)。
[0050]
(5)修剪静音(trim silence,ts):修剪音频信号的前导和尾随静音。程序代码为:librosa.effects.trim(audio_data,top_db=15),将小于15分贝的音频信号的前导和尾随静音去除。
[0051]
每个音频文件都经过5种音频增强方法,每个音频文件就生成了5个新的音频文件,相当于数据集数量翻了6倍。音频增强后,urbansound8k的8732个文件变为了52392个文件,这极大地扩充了数据集。
[0052]
s2:使用算法将音频文件转化为mel声谱图,并进行保存。
[0053]
在本实施例中,步骤s2可以通过以下方式实现:
[0054]
s21:先导入一系列库函数,librosa、matplotlib.pyplot(简写为plt)和os等库。
[0055]
s22:将音频文件一个个导入,设置采样率为22050,导入音频数据,代码为:audio_data,sample_rate=librosa.load(audio_file_path,sr=22050)。
[0056]
s23:然后将音频数据audio_data用程序生成mel声谱图,采样率设置为22050,连续帧之间的采样数设置为256,代码为:ps=librosa.feature.melspectrogram(y=audio_data,sr=22050,hop_length=256)。
[0057]
s24:然后设置绘制图像的尺寸和像素,代码分别为:plt.rcparams['figure.figsize']=(3.31,3.40)和plt.rcparams['savefig.dpi']=100。
[0058]
s25:然后将功率谱图的单位转换为分贝,进行图像绘制。代码分别为:mel_spect=librosa.power_to_db(ps,ref=np.max)和librosa.display.specshow(mel_spect,y_axis='mel',fmax=8000,x_axis='time')。
[0059]
s26:然后去除坐标轴,保存图片,不保存坐标轴。代码分别为:plt.xticks([])、plt.yticks([])和plt.axis('off')。
[0060]
s27:最后使用plt.savefig函数将mel声谱图保存到指定文件夹,经过音频增强后的mel声谱图如图2所示。
[0061]
s3:将mel声谱图送入改进的vit(vision transformer)模型中进行训练。
[0062]
在本实施例中,步骤s3可以通过以下方式实现:
[0063]
s31:改进的vit模型是将传统cnn特征提取和transformer进行结合形成的。下面将详细描述模型的网络结构,该网络结构的整体架构如图3所示。
[0064]
s32:这里传统cnn特征提取使用的是改进的resnet50主干网络。每张输入图片尺寸为224
×
224
×
3,首先卷积层采用的是stdconv2d,而不是传统的conv2d,然后使用group norm,然后使用relu激活函数和maxpool层,然后将stage1、stage2和stage3中的block分别重复堆叠3次、4次和9次。输入图片经过改进的resnet50主干网络后,输出形状变为14
×
14
×
1024。
[0065]
s33:经过上述改进的resnet50主干网络后,进入patch embedding层,该层由conv2d和flatten组成,此时输出形状变为196
×
768。然后拼接上class token和加上position embedding,两者分别含有类别信息和位置信息,此时输出形状变为197
×
768。然后经过dropout层,进入transformer encoder,该结构由n个encoder block组成,encoder block结构如图4所示。encoder block中有多个部分组成。第一个部分由layer norm、multi-head attention和dropout或droppath组成,然后经过一个类似的残差结构。第二个
部分由layer norm、mlp block和dropout或droppath组成,然后也经过一个类似的残差结构。第二个部分中的mlp block由linear+gelu激活函数+dropout+linear+dropout等结构组成,如图5所示。然后经过layer norm和extract class token结构,此时输出形状变为1
×
768。然后进入mlp head,该结构由pre-logits和linear组成。其中pre-logits由全连接层+tanh激活函数组成。最终的输出形状取决于具体的分类问题。因为我这里进行的是10分类问题,最终的输出形状变为10。
[0066]
训练结束后,就可以用训练结果进行环境声音分类了。
[0067]
需要声明,根据方法实施的需要,本技术中描述的各个步骤可以拆分成更多步骤,也可将两个或多个步骤或者步骤的部分操作组合成新的步骤,以实现本发明的目的。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

技术特征:


1.一种基于音频增强、mel声谱图和vit的环境声音分类方法,其特征在于,包括:s1:针对要进行分类的环境声音,构建环境声音数据集。将采集到的声音数据进行音频增强。s2:使用算法将音频文件转化为mel声谱图,并进行保存。s3:将mel声谱图送入改进的vit(vision transformer)模型中进行训练。s4:利用训练结果进行环境声音分类。2.根据权利要求1所述的方法,其特征在于,步骤s1包括:s11:环境声音可以进行录制,录制格式为计算机可以识别的格式,如mp3、wav等格式。本人为了简便操作,直接使用了开源数据集urbansound8k。该数据集有十种声音分类,分别是空调器、汽车喇叭、儿童玩耍、狗叫、钻孔、发动机怠速、炮射击、凿岩锤、汽笛和街头音乐,共8732个音频文件。s12:针对声音的特性,使用python编程语言中的librosa库,进行了以下5种音频增强方法:(1)正基音偏移(positive pitch shifting,pps):每个音频都按+2因子进行基音偏移。程序代码为:librosa.effects.pitch_shift(y,sr,n_steps=2),y为输入的音频数据,sr为采样率,按n_steps步数移动波形的节距。(2)负基音偏移(negative pitch shifting,nps):每个音频按-2因子进行基音偏移。程序代码为:librosa.effects.pitch_shift(y,sr,n_steps=-2)。(3)慢时间拉伸(slow time stretching,sts):音频采样的速度降低了0.7倍。程序代码为:librosa.effects.time_stretch(y,rate=0.7)。(4)快时间拉伸(fast time stretching,fts):音频采样的速度变快为1.2倍。程序代码为:librosa.effects.time_stretch(y,rate=1.2)。(5)修剪静音(trim silence,ts):修剪音频信号的前导和尾随静音。程序代码为:librosa.effects.trim(audio_data,top_db=15),将小于15分贝的音频信号的前导和尾随静音去除。每个音频文件都经过5种音频增强方法,每个音频文件就生成了5个新的音频文件,相当于数据集数量翻了6倍。音频增强后,urbansound8k的8732个文件变为了52392个文件,这极大地扩充了数据集。3.根据权利要求2所述的方法,其特征在于,步骤s2包括:s21:先导入一系列库函数,librosa、matplotlib.pyplot(简写为plt)和os等库。s22:将音频文件一个个导入,设置采样率为22050,导入音频文件,代码为:audio_data,sample_rate=librosa.load(audio_file_path,sr=22050)。s23:然后将音频数据audio_data用程序生成mel声谱图,采样率设置为22050,连续帧之间的采样数设置为256,代码为:ps=librosa.feature.melspectrogram(y=audio_data,sr=22050,hop_length=256)。s24:然后设置绘制图像的尺寸和像素,代码分别为:plt.rcparams['figure.figsize']=(3.31,3.40)和plt.rcparams['savefig.dpi']=100。s25:然后将功率谱图的单位转换为分贝,进行图像绘制。代码分别为:mel_spect=librosa.power_to_db(ps,ref=np.max)和librosa.display.specshow(mel_spect,y_
axis='mel',fmax=8000,x_axis='time')。s26:然后去除坐标轴,保存图片,不保存坐标轴。代码分别为:plt.xticks([])、plt.yticks([])和plt.axis('off')。s27:最后使用plt.savefig函数将mel声谱图保存到指定文件夹。4.根据权利要求3所述的方法,其特征在于,步骤s3包括:s31:改进的vit模型是将传统cnn特征提取和transformer进行结合形成的。下面将详细描述模型的网络结构。s32:这里传统cnn特征提取使用的是改进的resnet50主干网络。首先卷积层采用的是stdconv2d,而不是传统的conv2d,然后使用group norm,然后使用relu激活函数和maxpool,然后将stage1、stage2和stage3中的block分别重复堆叠3次、4次和9次。s33:经过上述改进的resnet50主干网络后,进入patch embedding层,该层由conv2d和flatten组成。然后拼接上class token和加上position embedding,两者分别含有类别信息和位置信息。然后经过dropout层,进入transformer encoder,该结构由n个encoder block组成。encoder block中有多个部分组成。第一个部分由layer norm、multi-head attention和dropout或droppath组成,然后经过一个类似的残差结构。第二个部分由layer norm、mlp block和dropout或droppath组成,然后也经过一个类似的残差结构。第二个部分中的mlp block由linear+gelu激活函数+dropout+linear+dropout等结构组成。然后经过layer norm和extract class token结构,进入mlp head,该结构由pre-logits和linear组成。其中pre-logits由全连接层+tanh激活函数组成。

技术总结


本发明公开了一种基于音频增强、Mel声谱图和ViT的环境声音分类方法。该方法包括四个步骤:


技术研发人员:

徐敬 廖文栋

受保护的技术使用者:

浙江大学

技术研发日:

2023.01.09

技术公布日:

2023/3/27

本文发布于:2024-09-20 12:00:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/82065.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:声谱   音频   声音   结构
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议