语音查找歌词大作业报告文档格式.docx
《语音查找歌词大作业报告文档格式.docx》由会员分享,可在线阅读,更多相关《语音查找歌词大作业报告文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
5.调试与测试10
5.1调试10
5.2测试10
结束语10
参考文献11
附录-用户手册12
1.绪论
为了能让用户更容易的使用计算机,微软公司开发了speechSDK这款软件。
意义就是可以让用户通过嘴来控制计算机,而不是手。
这种人性化的设计受到了广大用户的喜爱。
但是软件对于人声的识别率还有待提高。
我们的题目是语音查找歌词,并带有保存功能。
这个题目是用于实现通过说出歌曲名称来显示对应的歌词。
其实还可以说出其他专有名词,将其解释存在数据库中,以备使用者随时提问调用。
对于一些在工作中比较忙的人来说,还可以将其设计成语音读出对应内容的模式。
但这样就需要大量的数据,实现起来也会相对比较麻烦。
2.系统分析
2.1功能需求
我们的题目所需要完成的功能有以下两点:
1、用户语音输入歌曲名称,系统自动显示该歌曲的歌词信息;
2、将用户的查询结果保存到指定的位置。
2.2数据需求
由于是歌词查找,所以需要用到的数据有歌曲的名称、歌手名称、作词作曲人。
如果要拓展还可以加国籍,性别等数据。
3.总体设计
3.1功能模块设计
图1功能模块图
1、语音识别模块的功能是可以识别使用者所说的话,并转换成计算机可以理解的语言。
2、歌曲查找歌词显示模块的功能是通过语音模块识别出的结果,将其与已存歌曲名称进行对比查找,将识别出的汉语通过程序关联到MFC界面的静态文本框中显示。
3、保存歌词模块的功能是将当前显示的歌词以TXT文本格式保存到任意磁盘路径下。
3.2系统设计方案
1、系统所用到的控件有静态文本框、组框、编辑框和按钮。
静态文本框分为两类,一种是是显示可选择的歌曲和提示训练标语,另一种是关联程序,显示歌词和歌手。
编辑框用来显示作词作曲,并且是只读状态。
框组是用来对其进行分类,使界面看上去更加规整有序。
2、本程序用到了查找算法,是将使用者的语音存到一个变量中,将其与程序中已存可识别的歌曲名与歌手名进行对比。
如果发现对比结果一样,就将其歌词或歌手名显示在主界面的静态文本框中。
3、保存算法分两种,一种是将当前显示的歌词存入一个字符串中,然后将其存到TXT文档中;
另一种是将从程序开始运行起所显示的歌曲名和歌手名累加到一个字符串中,到保存时刻为之,将历史显示记录全部保存下来。
3.3文法设计
<
GRAMMARLANGID="
804"
>
<
RULENAME="
SONG"
TOPLEVEL="
ACTIVE"
L>
P>
爱的供养<
/P>
p>
柴米油盐酱醋茶<
北京北京<
借口<
不弃不离<
小酒窝<
刀剑如梦<
安静<
稻香<
滚滚长江东逝水<
后来<
三国杀<
搁浅<
大城小爱<
爱在西元前<
冻结<
十年<
就是我<
天路<
花田错<
/L>
/RULE>
SINGER"
林俊杰<
周杰伦<
王力宏<
/GRAMMAR>
4.详细设计
4.1语音识别模块
语音识别模块主要是对使用者所说的孤立词进行暂存识别。
建立语音识别模块时,要先建立一个独占的识别引擎。
然后建立一个RecoContext对象,并且本应用程序中只使用一个Recocontext对象。
之后设置识别的事件机制,与语音相关的消息都以Msg消息通知应用程序。
应用程序关心什么样的消息,在这里当引擎开始识别用户输入时,我们只关心正确识别和不能识别两个事件。
随后建立默认的音频输入对象,一般为声卡的声音输入设备,将建立的音频输入对象,作为引擎的音频输入源。
之后从一个XML文件中加载规则,建立一个规则语法对象。
将使用者所发出的孤立词语音存入一个字符串变量中,最后将ANSI码转换为Unicode码。
4.2歌曲查找歌词显示模块
本模块的功能是将查找使用者所查询的歌曲或者歌手,并由静态文本框显示出来。
本模块需要用到语音模块所识别的结果,使用者所说的孤立词被暂存到一个字符串变量中,本模块需要获得变量中的孤立词与已存的歌曲名和歌手名逐个进行对比。
若找到了就将其歌词通过指针和字符串变量在静态文本框中显示,并且将作词作曲者在编辑框中显示。
若搜索了一遍之后并没有找到不做任何反应。
具体实现流程如图2图3。
图2歌曲查询歌词显示模块1
图3歌曲查询歌词显示模块2
4.3保存歌词模块
保存模块的功能是既可以保存当前所显示的歌词,又可以保存历史上所选择过的歌曲名称。
建立此模块时,首先构造一个CFileDialog的对象fileDlg,要建立保存对话框,所以要传递FALSE。
设置文件保存对话框的标题,设置文件保存过滤器,设置文件保存过滤器的缺省值。
弹出保存文件对话框。
构造要保存的文件CFile对象file,文件名由用户输入的文件名作为参数,模式为:
建立模式或者写入模式。
写入文件内容,内容为m_str_computer变量(当前显示的歌词)内容,长度为m_str_computer的长度。
最后关闭文件。
具体流程见图4图5。
图4保存当前歌词
图5保存历史记录
5.调试与测试
5.1调试
由于使用的都是以前完成的模板,只是在主界面上添加了一些控件,所以并没有遇到什么特别的困难。
5.2测试
在运行的时候识别率是一个问题,我们只能采用多训练的方式来解决。
而当外围环境比较嘈杂的时候,程序无法准确的识别孤立词。
这个我们暂时无法解决。
在保存的时候,无法锁定当前歌词显示的内容,对于这一点,我们定义了一个变量,来加锁,查询时都需要对其进行判断,是否为1,如果是的话就不改变内容,如果不是则开始查找。
结束语
通过这次试验,我们对语音识别有了更加深入的了解。
对于软件语言的兼容性等也有了新的认识。
而且也让我们更有了团队性。
每个人做自己相对擅长的事情,可以更好的发挥团队的力量。
参考文献
附录-用户手册
显示出来的首先是主界面
如图6所示。
图6主界面
当有语音开始识别时就显示歌词,如图7所示。
图7显示后的主界面
当保存历史记录时,弹出保存界面,如图8所示。
图8保存历史记录界面
当保存当前歌词时,弹出保存界面,如图9所示。
图9保存当前歌词界面