《自然语言处理技术》——实训19 基于PaddleSpeech实现智能安防系统环境音识别.docx
《《自然语言处理技术》——实训19 基于PaddleSpeech实现智能安防系统环境音识别.docx》由会员分享,可在线阅读,更多相关《《自然语言处理技术》——实训19 基于PaddleSpeech实现智能安防系统环境音识别.docx(18页珍藏版)》请在三一文库上搜索。
1、目录项目7基于PaddleSpeech实现智能安防系统环境音识别11 实训目标12 实训环境13 实训说明14 实训步骤44.1 导入音频文件44.2 提取音频特征并可视化64.3 构建与训练模型104.4 音频评测145 实训小结16项目7基于PaddleSpeech实现智能安防系统环境音识别1实训目标(1) 掌握通过paddleaudio模块来实现从文件中读取音频信号。(2) 掌握使用PaddlePaddle中signal模块的Stft函数提取傅里叶特征,(3) 掌握使用paddleaudio.features模块中LogMelSpectrogram函数提取梅尔频率特征(4) 掌握通过Pa
2、ddleSpeech库的cis.models模块构建PANNs模型,并设置参数训练模型。(5) 掌握通过构建的PANNs模型进行环境音识别,并测试PANNs模型的识别结果。2实训环境环境版本说明Windows1064电脑操作系统Python3.8.5Python语言版本pandas1.3.0主要用于数据读取、清洗等操作NumPy1.21.6主要用于Python中的数值计算jieba0.42.1主要用于文本分词Gensim4.2.0主要用于检索文本、计算文本相似度、训练词向量、建模主题等Matplotlib3.3.0主要用于数据可视化PaddlePaddle2.4.2是一个深度学习框架,提供了高
3、效的计算框架和优化算法PaddleSpeech1.2.0主要用于语音和音频中的各种关键任务的开发scikit-learn1.0.2广泛地用于统计分析和机器学习建模等数据科学领域Librosa0.8.1主要用于分析一般的音频信号,是一个非常强大的Python语音信号处理的第三方库NETK3.5是一个常用的自然语言处理工具包,可用于文本处理、语义分析、词性标注等SciPy1.7.3是一个科学计算工具包,可用于数学、科学、工程学等领域pyttsx32.9.0主要用于将文本转换成语音3实训说明智能安防系统是现代安全防范的重要组成部分,其应用场景包括了家庭安全、商业安全、公共安全等多个领域。随着人工智能
4、技术的不断发展和普及,智能安防系统在应用场景和技术手段上也得到了不断的拓展和改进。其中,环境声音识别技术是智能安防系统中的重要技术之一。环境声音识别技术在智能安防系统中有着广泛的应用,包括但不限于家庭安全、商业安全、公共安全等多个领域。环境声音识别技术可以帮助识别和区分不同的声音,例如,在家庭中,环境声音识别技术可以识别烟雾报警器、防盗报警器、燃气报警器等声音,从而提高家庭安全的水平;在商业场所中,环境声音识别技术可以识别现金机声、安全门声、警铃声等,从而提高商业安全的水平;在公共场所中,环境声音识别技术可以识别枪声、爆炸声、汽车喇叭声等,从而提高公共安全治理水平。因此,深入研究环境声音识别技
5、术,开发出高效准确的声音识别系统,对智能安防系统的完善和升级至关重要。本项目使用的数据集为ESC-50数据,ESC-50是一个包含有2000个带标签的环境声音样本,音频样本采样率为44100Hz的单通道音频文件,所有样本根据标签被划分为50个类别,每个类别有40个样本。其中,声音类别涵盖了人类生活中常见的各种声音,包括动物声、自然声、人工声等。ESC-50部分数据集如图7-1所示。OOOOOOOOOO0OOO1-137-A-1977A-1-1791-A1-421I-A1-5996-A1-7057-A1-7456-AV7973-AV7974-A1-7974-B-1-9841-A1-9886-A1
6、9887-A1-9887-B-32.wav39.wav-26.wav-12.wav-6.wav-12.wav-13.wav-7.wav-49.wav49.wav-13.wav-49.WaV-49.wav49.wavO0OOOOOOOO0OOO1-11687-1-12653-1-12654-1-12654-1-13571-1-13572-1-13613-1-14262-1-15689-1-15689-1-16568-1-16746-1-17092-1-17092-A-47.wavA-15.wavA-15.wavB-15.wavA-46.wavA-46.wavA-37.wavA-37.wavA-
7、4.wavB-4.wavA-3.wavA-15.wavA-27.wavB-27.wavOOOOO00OOOOOOO1-17124-1-17150-1-17295-11736711756S-1175851177421-17808117808-117970b18074-118074118527118527A-43,wavA-12.wavA-29.wavA-10.wavA-12.wavA-7.wavA-12.wavA-12.wavB-12.wavA-4.wavA-6.wavB-6.wavA-44.wavB-44.wavO00OO0O6OO0O001-18631-1-18655-1-18755-1-1
8、8755-1-18757-1-18810-1-19026-1-19111-1-19118-1-19501-1-19840-1-19872-1-19872-1-19898-A-23.wavA-31.wavA-4.wavB-4.wavA-4.wavA-49.wavA-43.wavA-24.wavA-24.wavA-7.wavA-36.wavA-36.wavB-36.wavAYIwavO0OO00OOOOOO0O1-19898-M9898-1-20133-1-20545-1-20736-1-21189-1-21421-1-21896-1-21934-1-21935-1-22694-1-22694-1
9、22804-1-22882-B-41.wavC-41.wavA-39.wavA-28,wavA-18.wavA-10,wavA-46.wavA-35.wavA-38.wavA-38wavA-20.wavB-20,wavA-46.wavA-44,wavO000OOOOOOOO0O1-23094-1-23094-1-23222-1-23222-1-23706-1-23996-1-23996-1-24074-V24076-1-24524-1-24524-1-24524-1-24796-1-25777-A-15.wavB-15.wavA-19.wavB-19.wavA-49.wavA-35.wavB
10、35.wavA-43.wavA-43.wavA-19.wavB-19.wavC-19.wavA-47.wavA-48.wav图7-1ESC-50数据集(部分)音频样本可分为5个主要类别:动物声音(Anima1s)、自然界产生的声音和水声(Naturalsoundscapes&watersounds)、人类发出的非语言声音(Human,non-speechsounds)、室内声音(Interior/domesticsounds)以及室外声音和一般噪声(EXteriOr/urbannoises)。ESC-50数据集中包含的部分信息如下。filename,fold,target,category,
11、esc10,SrjfiIe,takel-100038-A-14.wav,1,14,chirping_birds,False,100038,A1-100210-A-36.wav,1,36,vacuum_cleaner,False,100210,A1-101296-A-19.wav,l,19,thunderstorm,False,101296,A音频数据的属性说明如表7-1所示,例如文件名为l-100038-A-14.wav,该文件属于第一折数据集,第一折指的是将音频数据集划分成K个互不相交的子集中的第一个子集,用于交叉验证中的训练集或验证集。在该项目中,将数据集划分成10折,即K=IO,每一折数
12、据都是相互独立的,并用于不同的训练和测试任务中。1-100038-A-14音频的对应声音标签为14;声音类别为chirping_birds;False表示其不包含人声;该文件来源于ID为I(X)038的源文件,采集的录音片段为A。音频属性信息可以用来描述音频数据,并且在音频识别中可以对音频属性进行处理和分析。在此环境声音分类的任务中,将target作为训练过程的分类标签。表7-1ESC-50数据集属性及其说明属性名称举例说明filenamel-100038-A-14.wav1-100210-A-36.wavl-101296-A-19.wav文件名fold1数据折数target14、36、19对
13、应的声音所代表的标签categorychirping_birdsvacuum_cleanerthunderstorm声音类别esclFalse声音是否包含人声SrJfne100038100210101296文件来源的IDtakeA采集的录音片段通常情况下,环境声音分类主要分为以下两个阶段。(1)数据准备阶段:该阶段旨在为后续的模型构建和Fine-tune操作做好准备,需要下载数据集,并对数据集进行初始化,提取傅里叶变换特征、梅尔频率特征。(2)模型构建与训练阶段:使用基于卷积神经网络的分类模型,并选择PaddleSpeech中预训练的PANNs模型作为基础网络。在模型构建完成后,需要对模型进行
14、Fine-tune操作,以便使其更好地适应数据集。本项目将介绍基于PaddleSpeech实现环境声音分类的相关流程,该流程与通用流程存在一定差异,主要包括导入音频文件、提取音频特征并可视化、构建与训练模型、音频评测等。基于PaddleSPeeCh的环境声音分类基本流程如图7-2所示,基本步骤如下。导人君耀文件提取齐西特征并可视化构建与训博模型昌场评测一食工分奏收黑“示概取桁尔“拿技贾模型的训缥每数I1I调嫁模型I图7-2环境声音分类流程图4实训步骤4.1导入音频文件通过ESC-50数据集中一个示例音频,观察环境音音频文件的波形,直观地了解数字音频文件中所包含的内容,如代码7-1所示。代码7-
15、1导入音频数据并展示importwarningsimportIPythonimportnumpyasnpimportpaddleimportmatplotlib.pyplotaspitfrompaddleaudioimportloadfrompaddleaudio.featuresimportLogMelSpectrogramfrompaddleaudio.datasetsimportESC50fromsklearn.metricsimportaccuracy_scoreimportpaddle.nnasnnfrompaddlespeech.cls.modelsimportcnnl4plt.r
16、cParamsfont,sans-serif=SimHeiplt.rcParamsaxes.unicode_minus=Falseget_ipython().run_line_magic(matplotlib,inline)warnings.filterwarnings(ignore)get_ipython().system(pipinstallpaddlespeech=1.2.0)get_ipython().system(pipinstallpaddleaudio=1.0.)get_ipython().system(test-f./data/dog.wavwgethttps:PaddleSP
17、eeCh.bj上CebOS.com/PaddleAUdiO/dog.wav)data,sr=Ioad(file=./data/dog.wav,mono=True,dtype=float32)#单通道,float32音频样本点PrintC音频形状:n.format(data.shape)Printc采样率:11.format(sr)#展水音频波形plt.figure()plt.titleC波形Mfontsize=14)plt.xlabel(间;fontsize=14)plt.ylabel(振幅,fontsize=14)plt.plot(data)plt.show()在代码7-1中,Paddlea
18、UdiO模块中的IOad函数能实现从文件中读取音频信号,其常用参数说明如表7-2所示。表7-2load函数的常用参数说明参数名称参数说明file接收str,表示音频文件的路径或URL。无默认值mono接收bool,表示是否将音频信号转换为单通道。默认为FalSedtype接收str,表示返回音频数据的数据类型,默认为foat37运行代码7-1,得到音频的形状和采样率如下,得到的波形图如图7-3所示。音频形状:(97280,)采样率:44100图7-3波形图从图7-3可以看出,波形图直观地展示了音频信号的振幅或强度,以及音频信号的频率信息。高度越高表示音频信号越强大,周期越短或密度越高表示音频信
19、号的频率越高。4.2提取音频特征并可视化在音频信号处理中,为了获得音频在时间和频率上的变化特征,通常会将整段音频进行分帧处理。分帧处理方法能够有效地处理音频信号中的时变性,即信号在时间轴上的变化。因为音频信号在不同时间上的频率成分是变化的,所以使用分帧的方法可以将这种时变性分解成若干个静态的频域特征,从而方便后续处理。本项目中主要提取音频数据的傅里叶变化特征和梅尔频率特征,如图7-4所不。图7-4提取音频特征常用的分帧长度为25ms,即将一秒钟的音频信号分成40段长度为25ms的小段,每段信号叫做一帧,帧与帧之间的移动距离称为帧移,通常使用IOmS的帧移。这样做的目的是为了保证相邻帧之间有重叠
20、的部分,使得音频信号的变化更加平滑。分帧后,每一帧信号数据会乘上一个窗函数,常用的窗函数有汉明窗、海宁窗等,窗函数的作用是为了在进行傅里叶变换之前,将帧信号边缘的波形平滑化,避免在进行傅里叶变换时产生频谱泄漏的现象。接下来,对每一帧信号数据进行傅里叶变换,得到该帧信号的频谱信息。将每一帧的频谱信息拼接起来,即可获得该音频在不同时刻的频率特征一一Spectrogram,也称作为语谱图。语谱图通常以灰度图的形式呈现,横轴代表时间,纵轴代表频率,颜色深浅代表该时刻该频率成分的强度大小。Spectrogram是一种常用的音频特征表达方式,因为它可以提取出音频在不同时间上的频域特征,从而为音频信号分析、
21、处理和分类提供了有力的工具。读取音频文件后,设置快速傅里叶算法的相关参数,对音频数据提取快速傅里叶特征,然后输出特征的形状和类型,并绘制快速傅里叶特征频谱图,如代码7-2所示。代码7-2提取音频的快速傅里叶特征# 从dog.wav文件中加载音频数据并指定采样率、声道数和数据类型data,sr=load(file=./data/dog.wav,sr=32000,mono=True,dtype=float32)# 将音频数据转换为PaddleTensorx=paddle.to_tensor(data)# 设置STFT所需的参数n_fft=1024#FFT窗口大小WinJength=1024#窗口长
22、度hopjength=512#帧移大小# 计算音频数据的STFT,得到频谱图spectrogram=paddle,signal,stft(X,#输入信号n_fft=n_fft,#FFT的大小WinJength=WinJength,#每一帧音频都由WiiLIength个样本点组成hopjength=hopjength,#帧与帧之间的步长Onesided=True#如果为TrUe,那么返回的是FFT的一半结果以及对应的频率值)PrintC对数功率谱图形状:11.format(spectrogram.shape)PrintC对数功率谱图类型:11.format(spectrogram.dtype)#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自然语言处理技术 自然语言处理技术实训19 基于PaddleSpeech实现智能安防系统环境音识别 自然语言
