[我的作品系列05]想唱就唱
导航目录
摘要
随着人们生活水平的提高,听歌、唱歌已经成为一些人日常生活中不可缺少的一部分。然而现在的MP3播放器、KTV歌厅里的点歌系统都存在找歌时需要在浩瀚的歌曲库中苦苦搜索、忘记歌名字时就不能点歌、即兴演唱时就只能清唱等缺点。“想唱就唱”就是专门针对这个问题的一个通过特征码以及歌词内容识别出演唱者演唱哪一首歌曲的智能点歌系统。它以类似搜索引擎建立索引的方式,以BF533为核心处理器,通过特征码提取与匹配、歌词识别、演唱进度跟踪等手段,实现当演唱者清唱数秒之后伴奏随之响起的效果。语音识别采用稳定小波滤除来去除环境噪音、基于声强检测的语音始终点检测、演唱特征值提取等技术来保证歌曲的识别的准确高效性。同时演唱过程中系统还可以对演唱者进行智能评分。本系统可以广泛的应用在KTV歌厅、随身MP3、MP4播放器、歌曲比赛现场等场合,具有广泛的应用前景。
Abstract:
With the improvement of living standards of people, listening to music and singing has become an indispensable part of some people’s daily life. The inconvenience of looking for the right song in vast sources does exist in the ordering system of MP3 players or KTV karaoke, not to mention when you forget the song name or the interest of showing something special comes to you in uncertain times. “To Sing As You Want” is invented to solve this problem, which identifies the song wanted according to its signature or lyrics. Some like establishing of indexes of searching engines, through the extraction and matching of the signature, identification of the song, tracking of the process, using BF533 as the core processor, the system will provide the accompaniment a few seconds after the singer starts. With the use of stable Band-pass filter to get rid of surrounding noises, the process tracking based on the detection of sound intensity, the technique of extracting singing features, voice recognition can guarantee accuracy and efficiency of identifying the songs. In the process of the performance, the system can give an intelligent score. The system can be widely used in the KTV bars , portable MP3 or MP4 players, scenes of singing competition and so on, which has a promising application prospect.
一、背景分析
随着经济的发展,人们越来越注重精神文化生活上的享受。我们看到,很多人在晚饭后、与朋友聚餐后、亲人团聚后往往选择去KTV包间里K歌的方式来度过那一段美好时光。我们发现,KTV歌厅里的点歌系统存在很多的不便之处,比如说唱歌之前还要先在浩大的歌曲库中费时费力的浏览才能找到自己想要唱的歌曲、当一时忘记歌曲名称的时候就难以找到歌曲、歌曲库虽然浩大但是仍然没有自己想要唱的歌曲、需要在PC机上运行点歌程序造成成本过高等。这就需要一台能在人们开始哼几句之后伴奏随之响起的嵌入式设备。
另外,MP3、MP4播放器已经逐渐成为人们生活不可或缺的一个随身物品。现在播放器的内置内存越来越大,存放的歌曲的数目也越来越多,但是随之而来的是找歌越来越麻烦。当使用者心情不好想听一首歌的时候却花很长时间找不到自己想听的歌曲,有可能导致心情更加烦闷。我们就希望有一个可以快速找到自己想听的歌的设备。这种人性关怀的设备一定会受到消费者的青睐。
二、系统方案
1 系统架构分析
作为核心处理部件的BF533具有良好的高速运算性能、丰富的接口与系统资源而作为本设备的核心处理部件。所有的语音预处理、软件滤波、环境声音滤除、FFT运算等都在BF533中进行。
微音器接受到声音之后,经过模拟开关、运放,与比较器的参考电平进行比较。当比较电压大于参考电压时给处理器一个中断信号。若此时DSP处于睡眠状态则退出睡眠状态,开始工作。若处理器长时间接收不到此中断信号则进入睡眠状态。由此做到系统尽可能的最低能耗。
当系统开始运行后,微音器开始将接受的声音送入AD转换器,ADC将转换之后的数据送入DSP进行处理。经过预处理、环境噪音滤除、FFT运算等处理之后DSP从中提取特征值与索引文件中的数据以及码表进行比较。如果辨认出歌曲之后则从存储介质中读取文件,经过音频解码之后送入DA转换器中,经过运放之后即可由扬声器将伴奏播放出来。
由于SD卡采用3.3V供电,与BF533恰好兼容,故不需要转换电平。我们可以采用在SD卡座的CD脚接上拉电阻的方法,SD卡插入后产生下降沿中断,随即初始化SD卡,即可实现SD卡的“热插”。当SD卡被拔出时产生上升沿中断,随即保存读取SD卡的信息,即可实现“热拔”。
键盘/触摸板/液晶屏作为本设备的输入输出部件起到了选择工作模式、改变设置、自助录制、缩小查找范围手工管理文件等功能。
此外,因为BF533开发平台具有丰富的接口,可以通过VGA接口连接到电视机、投影仪上,完全可以取代现有的PC机的点歌系统。
2 系统结构图
三、关键模块分析
1 声音采集与处理部分
声音采集部分由驻极体话筒与放大器D2822、滤波电路等组成。其中滤波电路采用基于双二次函数的2阶滤波电路专用芯片UAF42实现。利用UAF42提供的专用设计软件只需在外围电路中添加三个电阻即可可以很容易实现-3dB带宽为25kHz的二阶巴特沃斯低通滤波器。
通过驻极体话筒采集声音通过D2822放大声音信号,输出到比较器LM311的反向输入端,此时D2822的输出信号的均值为2.16V。在LM311的同向输入端输入可调电阻和固定电阻分压所得门限电压。
图 2
2 软件设计
2.1 软件架构
图 3
2.2 软件架构分析
主程序由以上8大部分构成:编码、译码程序,FAT32文件管理程序,索引文件生成程序,软件滤波程序,AD、DA驱动,IDE硬盘驱动程序,液晶、键盘驱动程序,语音识别程序等。
右侧的程序大部分属于底层驱动,左侧的程序大部分属于上层应用。通过模式的选择以及歌曲识别的情况分别在不同情况下执行不同的程序,实现处理器资源的合理调度。
3 语音识别
3.1 语音识别流程图
图 4
3.2 语音识别过程分析
当收到ADC传输过来的数据之后,经过外界的滤波与预处理,送入DSP内。首先DSP需要对其进行环境噪音的去除工作。因为外界的噪音振幅较小而且持续时间很长,所以我们可以从时域将持续不断的相同的小波滤除。语音起始点与终止点检测采用声强阈值检测的方法。当声强大于一定的值的时候系统就会认为是声音的开始。
预处理结束之后则开始对声音进行实时分析。一方面通过歌词的连续语音识别辨认出演唱者正在唱哪首歌曲,另一方面通过特征值提取来辨认出演唱者唱的歌的内容。特征值识别是我们系统的创新之处,相比传统的语音识别技术具有占用存储资源少,消耗系统资源少,识别快速准确等优点。具体实施步骤如下:将音乐进行时域与频域的分析,得出音乐的节奏是快是慢、声调低沉还是高亢、演唱者是男士还是女士、波形具有什么样的特征等信息,并将这些信息通过文件管理程序存放在索引文件中。然后通过匹配时的成功率计算相关度。如果歌词识别与曲调识别相关度都很高则认为识别成功,歌曲从演唱者当前唱的地方开始播放。如果相关度相差较大则认为此次识别失败,重新接受ADC送来的提取更多的数据进行进一步的分析,直至识别成功。
四、软件流程分析
1 软件流程分析
由于唱歌时人发音的特殊性,采用通常的单字识别算法很难胜任歌曲辨别的工作,因此我们采用了歌词与曲调同时识别的方式来增加识别的成功率。当识别出歌曲来之后系统会从演唱者当前所唱区域内开始播放伴奏。当外界长时间没有比较大的声音时系统自动进入睡眠模式,以达到低功耗的目的,直到高于设定值的声音响起。
2 软件流程图
图 5
五、测试方法与测试结果
1 测试方案与测试条件
测试仪器:EE1643C函数信号发生器,DF1731SL1ATA直流稳压电源,Tektronix TDS1002B双通道数字存储示波器, SA1030数字频率特性测试仪,FLUKE 15B数字万用表。
一般实验室条件,室温25摄氏度,采用普通50Hz 220V市电供电。
2 测试结果与数据
2.1 外部声音触发测试
当话筒采集的声音信号经放大后的强的超过门限电压时比较器就会输出低电平。给51一个下降沿。触发外部中断。测试数据如下:
表 1 外部声音触发测试表
测试组号 |
同相输入门限电压值 |
是否触发 |
1 |
2.56V |
环境噪音即可触发 |
2 |
2.81V |
3米外普通讲话声音即可触发 |
3 |
2.95V |
大声讲话即可触发 |
4 |
3.19V |
需对麦克风吹气方可触发 |
因此我们针对KTV歌厅的环境,将同相输入端的参考电压设置为2.95V,完全可以满足要求。
2.2 SD卡识别与索引建立时间测试
将具有数个文件夹与音乐文件的512MB的SD卡插入卡槽,记录从插入的瞬间至识别并遍历所有文件结束的时间。
表 2 SD卡识别与索引建立时间测试表
测试组号 |
文件夹数量 |
文件数量 |
所需时间 |
1 |
1 |
12 |
瞬间 |
2 |
0 |
23 |
瞬间 |
3 |
4 |
54 |
0.7秒 |
4 |
12 |
229 |
1.9秒 |
5 |
32 |
301 |
3.2秒 |
经过测试,文件系统完全可以满足一般需要。
2.3 语调识别效果分析
由FPGA控制蜂鸣器发出声音,由系统的驻极体话筒接受,测试音调识别的准确度。
表 3 语调效果分析测试表
测试组号 |
发声频率(Hz) |
FFT运算所得的基频(Hz) |
1 |
50 |
50 |
2 |
200 |
150 |
3 |
600 |
550 |
4 |
1K |
900 |
5 |
1.5K |
1450 |
6 |
5K |
4600 |
测试数据与实际值略有偏差,有待改进。
3 误差分析
语调识别的误差主要因为环境噪声的干扰。虽然经过经过二阶有源滤波之后30kHz以上的频率分量衰减20dB以上,但是因为因为环境中还存在大量低频噪声,某些时候其功率值甚至比蜂鸣器发声的频率的功率值还要大。
参考文献
[1] 康华光.电子技术基础–模拟部分(第五版).北京:高等教育出版社,2006
[2]李维偍,郭强.液晶显示应用技术.北京:电子工业出版社,2000.
作品实物图.摄于2009.11.9