徐清钏 赵彦钧 张丹露 弓 创 杨 光
(黄河科技学院,河南 郑州 450000)
随着信息时代的发展,语音识别技术在生活中的应用越来越广泛,国内有很多机构都在研究这方面的工作。“听音识曲”研究是当前的热门领域,本文通过研究原有的听音识曲系统,掌握识别的基本原理,并使用Matlab程序搭建一个简易的听音识曲系统。
整体流程分是:运行GUI界面,然后择曲库的路径导入曲库,在导入曲库后可以选择识别方式,最后点击开始识别等待识别输出结果即可。图1即为整体流程。
图1 整体流程
整个提取的过程是:添加曲库的音乐文件、对转换过格式的文件进行预加重、分帧、加窗、快速傅里叶变换、梅尔滤波器设计、输出梅尔系数。音频指纹提取整体流程如图2所示。
图2 音频指纹提取整体流程
音频信号处理之前要进行截短处理[7],通过函数来完成分帧效果。
加窗分帧操作通过窗函数实现,每移动一次窗函数就得到一帧的音乐片段。把音频段分割成大小为20 ms的帧,音乐片段之间需要重叠1/3,并使用相同长度的窗函数对每一帧平滑处理。时域波形和频谱图如3所示。
图3 时域波形和频谱图
本系统使用汉宁窗,用ωN(n)表示窗函数,用N表示窗函数的长度,其表达式如式(1)所示:
将经过FFT变换的音频信号,按照帧长、帧移和峰值幅度进行分帧,每一帧都是音频指纹的特征,将其划分为30个不同的子代可以更好更准确地提取指纹信息。若音频匹配比较粗糙的话,可以分割更多帧长,以达到后期更好的匹配效果。音频指纹划分的公式如式(2)所示:
式中,Fmin为最小频率值,即310Hz,Fmax为最大频率值,即2100 Hz,M表示子带个数,f(m)表示第m子带的起始频率,同时也是第m-1子带的终止频率。
梅尔倒谱系数[6],这个参数的计算首先就要对语音信号通过一个高通滤波器预加重处理,然后对音频信号进行分帧,以及梅尔滤波器、窗函数的设计和傅里叶变换的应用。
待识别片段与曲库中的音乐片段绝大多数不一致,一首完整的音乐大概300 s,而识别过程中,识别过程在15 s左右,两段音频长度不同,因此在一定程度上需要特殊的算法,对特征参数序列(见图4)重新进行时间的校准。所以可以选用DTW算法[3]。
图4 特征参数序列
此拟合算法首先生成一个i×j的矩阵,i是矩阵的行数,j是矩阵的列数,人们称它为似然距离,用p表示,似然系数用q表示,因为系数矩阵的特征值具有独特性,所以每一帧音频的似然系数是不同的,分别对每一首待识别的音频进行计算,求出似然系数,并将与所建立音乐库里的歌曲的似然系数值作差再取绝对值,能得到一个最小值,这个最小值就是最小似然距离(见图5),并通过此算法筛选出这个最小值,它对应的歌曲就是识别的结果。原理公式如式(3):
图5 最小似然距离
式中,p为;q为;i为;j为。
GUI界面是该系统的操作界面(见图6),可以根据界面上的文字提示来逐步完成对音乐的识别:打开MATLAB平台,点击运行即可。
图6 GUI界面
点击曲库路径按钮,可以自行跳转到所建立的音乐库路径,任意点击音乐库里的一首歌,可以将全部歌导入到检索曲库里。
点击选择音乐,选择一首待识别的音乐对该首音乐提取特征,生成索引值,与最初的模板库里多个索引信息建立的索引库进行匹配。
由于“听歌识曲”系统主要针对歌曲进行设计,因此,随机挑选出当下较热门的5首流行歌曲进行测试。为了避免误差以及确保验证系统的稳定性,每首歌曲分别进行十次测试,记录下正确次数并且取平均值,计算正确率,系统在音乐文件识别上的正确率可以达到100%,在录音文件的识别上正确率达50%~60%。具体识别结果见表1、表2。
表1 音乐文件识别率
表2 录音文件识别率
本文所设计的“听音识曲”系统,可以帮助人们识别一首不知名的音乐片段,使人们不再为错失一首好听的音乐而烦恼。系统主要完成了将音频信号转化成音频特征、乐库的建立、特征匹配系统的搭建和GUI页面的生成等工作;基本达到了预期的要求,能够满足人们的需要。当然,系统在设计方面还存在一些缺陷,譬如说,通过录音的方式进行识别的准确率还不够高,如果需要提高准确率,还要用一些更专业的录音设备和对滤波除噪声算法进行更深层次的研究,对MFCC、DTW以及最小似然距离拟合匹配算法的优化,减少其他噪声的干扰;本文中的曲库做得还不够丰富,只有一少部分的音乐,能够识别的乐曲有限。今后,可以从增加乐库歌曲信息与反应时间两方面进行优化,尽可能多地增加乐曲,尽可能少地缩短识别时间,尽量使用更加专业的录音设备,将录音识别方式识别歌曲的准确率上再做一些提升。