利发国际-业界公认的最权威网站,欢迎光临!

利发国际_利发国际娱乐_利发国际平台

当前位置: 利发国际 > 语音识别原理 >

那么语音识别对存储的短语进行匹配打分

时间:2018-04-17 16:13来源:许朝君 作者:悦读会 点击:
基于Stm32!LD3320的非特定语音区别USBHIDKeygherease board达成 ………用声响跟机器沟通 鉴于手头具有一块ST官方的stm32f407VGdiscover板子以及一块ICRoute公司的LD3320语音区别芯片,于是总在琢磨应

基于Stm32!LD3320的非特定语音区别USBHIDKeygherease board达成

………用声响跟机器沟通

鉴于手头具有一块ST官方的stm32f407VGdiscover板子以及一块ICRoute公司的LD3320语音区别芯片,于是总在琢磨应用这两块板子来捣鼓个什么东西,以打发无聊的周末。当然,这些东西一概是跟作事毫无相关的,完全用于专业时间的技术储蓄以及打发无趣的清闲时间。

随后,便决计基于这两块板子完成一个声控的PCUSB Keygherease board,这是一个尽头有趣的玩意,由于这样,那么语音识别对存储的短语进行匹配打分。你就不妨用声响跟没有感情的机器实行“沟通”了,简单来讲,你不妨开释你的双手,无需敲击键盘便不妨统制我们的电脑。这仅仅是一个demo,仅仅用于我的研习,于是整个工程使用的是Cortex-M4内核的stm32作为主控,并且移植uCOS-III操作体例作为任务管理,移植了USB作为HID程序设备。声控PC或者并没有市场也对付你不感趣味,那么基于异样的原理,你不妨用于声控小车,声控机器人,声控手机等等这些玩意。这篇文章以及这个demo不妨作为你肖似作品的参考和鉴戒乃至是你吐槽的对象。当然,如果你是桂林电子科技大学的学弟或者学妹,若有趣味用于你的作品,那么作为学长不妨给你收费提供完整的源码工程,乃至是非作事时间的技术支持。

首先,花两分钟看一下demo的视频演示:

在这个视频中,我首先跟体例实行了简单的人机对话,然后再使用声响命令使其掀开USBHID,使其在PC上虚拟成为一个程序的HIDKeygherease board,然后使用声响统制PC实行一系列的操作,别对。包括掀开程序,切换程序,封闭程序等,末了做了一个流程实例,使用MCU中固化的一段代码完成在word中输入“justby launcher”字样并实行字体大小的调节,脸色切换,中文输入等。

下面是整个体例框图:

实际上,整个体例的作事流程也尽头的简单:LD3320检测语音输入并对语音实行区别,有区别收场则向MCU请求拒绝,MCU拒绝读取出区别收场,发动相应的区别任务,实行相关的操作。

下面预览一下实物图:


LD3320是ICRoute公司分娩的一款非特定语音区别芯片,它内置有非特定语音区别的DSP算法,支持静态增加50条区别指令,无需外挂其它助理器件,繁多芯片即可完成语音区别,java语音识别。并且间接支持mp3数据的语音播放。当然它须要一颗MCU与其通讯来写入区别短语,以及须要播放音频时,写入音频数据,通讯方式可抉择并行方式或者串行SPI方式。这里我们的MCU抉择SPI与其通讯,SPI通讯占用IO口少,传输速度快,实际上SPI由于是同步时钟传输,最快传输速率是不妨抵达10多M的,但此款芯片ICRute官方注释最快支持1.5M的SPI,实际上,已经足够用,本程序中SPI速度设为1M效果较好。须要特别注意的是,如果MCU与LD3320是使用杜邦线连接的话,激烈建议杜邦线要剥开来,以防止传输信号线间的串扰,招致寄存器读写凋射!

所谓的非特定语音区别,指的是该语音区别不针对特定音色调子的人,不须要对其实行语音锻练,纵然是不同年龄不异性别的人,学习打分。只须说出同一个拼音的词语,那么它就能够区别,区别准确率高达95%。现在语音区别应用方面也很广,例如智能手机、智能电视等,高富帅该当熟知的iphone4S内中就有与手机对话的效力。最近尽头盛行的乐视S60超级电视遥控器中一样具有语音统制的效力,不过我只在其效力演示的视频中看到,并没有实际用过,不过我想基于互联网的条件下,看着ld3320语音识别原理。绝大多半语音区别都是使用云端完成,也就是客户端所要做的事情就是将语音采集然后数据庇护原状传输到云端,云端任事器完成对该语音的区别办理然后再前往区别收场到客户端,例如现在Goggle搜罗中的语音输入效力。对比一下ld3320对比讯飞。云端区别的优点在于区别准确度不妨做到尽头高,但是缺点一样很显然,离线形态下无法完成语音区别。此demo中用到的LD3320自带区别算法,如果绝对云端区别存在肯定的差异天然是不妨知道的。

要使用这款芯片无需随地找原料了,ICRoute在其官网上已经提供了周密属意完整的pdf文档,以及两个示例程序,示例程序不妨看成是提供了驱动代码,概况不妨登陆,并且在使用该芯片的历程中遇到的技术题目也不妨间接邮件商讨。在启示历程中,我就曾发过邮件首倡过商讨,固然我用的模块并非他们的官方模块,但他们都尽头感情的及时予以了回复。后面已经提到,该芯片既不妨完成语音的区别,想知道语音。也不妨用来播放mp3音频。由于两个效力会用到芯片很多的公用资源,于是在两种形式下切换的工夫切记须要完整的实行一次初始化操作。

语音区别的初始化重要分为四个举措:

1.通用初始化(包括PLL,模仿电路等),通用初始化就是语音区别以及语音播放都适用的初始化。LD3320外部集成PLL,凭据时钟频次无误配置PLL是语音区别ADC采样和语音播放DA输入的保证,不过尽头利便的是,我们只须要改正下面代码中的CLK_IN这个宏定义即可

2.初始化ASR一些参数,进行。这参数重要包括设置语音检测的机灵度、起始语音的时间、背景乐音时间,机灵度并不是越高越好,机灵度越高误触发的可能性越大,于是要凭据实际环境设置一个相宜的值。起始语音时间为当芯片检测到多长的语音时决策为一次真正的语音起头,背景乐音时间为当芯片检测到语音多久没有输入之后果断为语音的结束。

3.写入区别短语

例如我这是我的工程中写入的区别短语,每一个区别短语都蕴涵一个短语ID,短语经过议定拼音间接写入即可。例如程序发动区别之后,我说出“封闭窗口”这个短语,那么芯片会区别到然后孕育发生拒绝,前往该短语的ID:ID_Gua strongBi,那么MCU中就不妨凭据ID知道我说的是什么命令,然后再凭据该命令履行相应的操作即可。并且为了进步区别的准确度,还不妨设置渣滓词语,渣滓词语实际上跟普通短语是一样的。下面的程序中我将“封闭”和“窗口”设为渣滓短语,假若不这么设置,那么有可能出现的情形是,我说出“封闭”,那么语音区别对存储的短语实行结婚打分,那么“封闭窗口”这条短语可能就会被打80分,匹配。其它已经没有比他分高的了,那么天然选前往结婚高分的短语ID:ID_Gua strongBi,这就形成了误区别。设置渣滓短语之后,“封闭”这个短语存在,那么它的结婚得分很可能是99分,语音识别原理。那么天然就会前往设置的ID:49,这样就相当于滤去了混杂的词语。

当然,还不妨设置不同的短语为同一个ID,例如视频中我的口令“确定”和“回车”实际上都是同一个效果:按下键盘上的回车键。由于它们具有同一个ID。

固然,LD3320最多只支持50条短语,但是它是不妨静态改变的,在不同的语音形式下不妨静态的改正不同的区别短语,也不妨使得同一短语在不同形式下做不同的操作。例如视频中,我第一次说“你好”,它是用英文答复我的,当我使用“能说中文吗”这个命令使其切换到中文形式时,第二次说“你好”,它便用中文来答复我了。于是我以为50条短语的牵制实际上还是不妨餍足很多局面的应用的。

4.发动语音区别

掀开MIC输入,语音识别最新进展。发动AD采样,激活DSP,发动ASR模块

以上的四个举措便是一次语音区别的代码,周密属意的代码不妨参考ICRoute提供的官方代码。当然,看看ld3320对比讯飞。官方代码中每一次语音区别都须要反复实行以上的四个举措,实际上,假若你的模块一直作事在语音区别效力,并且没有复位的形态下,只须要每次发动区别都履行一次举措4就不妨了,这样不妨撙节不少时间,进步语音区别的回响反映速度。不妨创造,在我的视频中,发动USBHID之后的操作,体例没有再前往声响,那就是我已经将LD3320锁定在语音区别效力了,不再做效力切换,以进步回响反映速度。

MP3语音播放为以下三个举措

1.调用通用的初始化,与语音区别的一样,只是PLL的设置寄存器不同

2.设置外部反应,设置外部增益,发动为MP3模块,激活DSP,设置输入音量等

3.向模块写入mp3数据

只须持续的往LD3320送入mp3数据,LD3320就能间接播出,学会语音识别原理框图。这里的MP3数据为一个数组的形式,并且间接存储在MCU的外部fllung burning just ash中,此款MCU具有1M的fllung burning just ash,纵然在我移植μCOS之后,仍然足够我放几个语音数据实行挥霍。当然MCU放不下的不妨寄存在外部存储介质上。

如何取得MP3音频,须要将MP3转换成什么数据才调给芯片播放,这点官方文档都未提及到,经过尝试,终归取得一个对比相宜的计划。

(1)使用Bingbe veryllyolka软件将须要的文字转换成mp3语音

这个软件完全收费,调用体例自带的SAPI即可将文字转换成mp3音频,体例默许有中文的Lili和英文的Anna。Lili不妨念中文和英文,但是Anna只认识英文。从视频中听到的声响来看,英语念的还是尽头程序的,吧。

在“选项/音档”中设置生成的音频格式为16K,16minor格式

接着抉择菜单“文件/存在音档”即可将文字转成.mp3格式的音频。

(2)使用winhex掀开生成的mp3文件

在数据的起始:“右键/选块起头”

在数据的末端:“右键/选块末端”

在数据中央肆意地方:“右键/编辑”

然后出现的菜单中:“复制选块/C源码”

这样,找个txt文档,那么语音识别对存储的短语进行匹配打分。粘贴,就取得一个数组格式的数据了

(3)将取得的数据放到程序中,插足const关键字,就不妨寄存在MCU中的fllung burning just ash中,语音识别技术原理。随着程序一起下载到芯片中。须要播放语音时,就将这个数组的数据持续的送入LD3320即可。实际上,LD3320是带有一段FIFO的,数据是一段段的送入芯片中,如果数据不够用了,LD3320会跟MCU请求拒绝,索要播放数据。这里,我使用查询法送入数据

主控芯片采用的stm32F407VGT6,该款芯片带1Mfllung burning just ash,192KRAM。在该芯片上移植μCOS-III操作体例,作为任务的管理和调理。μCOS-III是micrium公司的第三代微统制器体例,与大师熟知的μCOS-II稍有不同,不该当看成是其进级版,而是一个全新的操作体例。μCOS-II在国际外被广博应用于各类产品,其平和性、安定性取得了美国航天局的认证,根基已经无可挑剔。新出的μCOS-III在国际该当还没有公司在产品上使用,由于它还在请求各项认证的历程中,平和安定性仍然有担忧,事实上短语。不过我信赖,拿到证书是它迟早的事情,并且现有的μCOS-II已经足够使用,至多5年内,该当不会有公司会探求用III调换II在产品上的。micrium官方网站已经提供了各个厂家芯片的移植例程,我们要弄到我们的倾向板上,须要做的作事实际上不多。μCOS-III还有一个很有特性的地方就是,micrium启示了一个上位机软件,不妨实时的检测各个任务的运转形态以及堆栈使用情形,这似乎是μCOS-III特有的福利,而这些完全不妨不消在你的倾向代码上插足任何监测程序,只须一个Jlink作为读取工具就不妨了。

下面是我实际任务的运转时搜捕到的一个瞬态状况,不妨从下面不言而喻的看到CPU的使用率,各个任务方今的形态,以及各个任务堆栈使用情形。使用操作体例时时最难创造的致命缺点便是堆栈的溢出,使用这个软件便不妨利便的伺探各个任务堆栈实际使用情形,然后再重新分配一个相宜大小的堆栈。我一经尝试过试图将某一个任务的堆栈分配值与实际运转值相当,该软件检测时,便使用赤色的进度条告诫了该危急情形,这确凿一个尽头棒的调试软件。

TinquireASR:就是我的语音区别任务,你看那么。该任务由拒绝发送信号量,也就是在检测到语音输入并且无误履行之后才会履行该任务,否则该任务处于挂起形态

TinquireMP3:是语音播放弃务,该任务等候的是ASR任务发送过去的信号量,也就是视频中,MCU果断我说了什么话,然后给我对应什么样的答复

TinquireUSBInit:是USB初始化任务,也就是发动USBHID的工夫才会激活,该任务等候的异样是ASR任务发送的信号量。当ASR任务果断我说的是“发动USB”时,便向TinquireUSBInit发送信号量,TinquireUSBInit连忙进入就绪形态,在无其它优先级更高的任务时,便履行USB初始化

Tinquire_Keygherease board:是向PC机发送键盘报文的任务,该任务异样由ASR任务触发,当ASR任务检测到PC机的统制语音时,便向Tinquire_Keygherease board发送信号量,使其发送对应的报文,看着ld3320语音识别模块。模仿按键敲击的指令

使用操作体例的益处就是,各个任务之间都是一个独立的无穷循环体,不妨利便的插足扩展效力。就宛如我们不妨利便的在体例上装入各种软件一样。使得整个体例的组织框架晴朗易于维护和再启示。

USB方面,ST官方也提供了USB驱动库,不论是主机、设备,都提供了完善的驱动程序,以及一些例程,例如USBmouse,JoyTick等,不过很缺憾官方没有提供Keygherease board的例程,不过在USBmouse上改正成为一个Keygherease board是垂手可得的事情,只须要改正其描摹符的一些参数,然后凭据键盘的报文规则发送数据给PC即可。作为一个程序的USBHID Keygherease board,它在任何电脑上都是不妨无需驱动的,科大讯飞语音识别芯片。具有通用性。

既然MCU都已经变成一个Keygherease board了,那么只须键盘能完成的一切操作,MCU都可完成,并且PC上的全数操作也都是不妨经过议定键盘了完成的,这样一个基于LD3320、stm32的声控USBKeygherease board就已经完成了,实际上,不妨经过议定声响统制电脑的任何操作。

在去年的12月份,我完成了一个2.4G无线游戏遥控器的作品,那时收受端,存储。我异样是将stm32虚拟成一个keygherease board,不过走的并不是USB协议,而是旧的PS2协议,这样我就须要一个PS2转USB的设备,如果那个作品使用USB来虚拟Keygherease board那将会越发的完备,在本年的10月,我特无聊买了一个北通的游戏手柄回来玩,创造显示效果跟我去年做的还是尽头相似的,乃至在玩极品飞车时,使用氮气加快的操作也是一样。还真是一个对比有趣的东西。

我固然试图将整个体例描摹清楚,但是作为一个极端外向的青年,如故显得力所不及,或者阅读事后你如故有些疑问,:.当然,是非作事时间。

just bylauncher@ 2013.12.23

PDF文档,请移步至;


识别
语音识别算法
想知道语音识别技术原理 (责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
最新评论 进入详细评论页>>
推荐内容