导读:
使用过凌阳SPCE06A板的朋友们应该都知道,凌阳有两种语音识别模式:SD(特定人语音识别) 和SI(非特定人语音识别)。有的朋友可能也想过将这两种控制模式连接起来放在一个工程里面,以达到“双控”的目的。但是,这样就会出现一个问题:就是这两种语音识别模式要用到两个不同的库bsrv222SDL.lib和bsr061v311.lib(本文只用这两个库来说明,其他不同版本的库也可能会有所不同),如果把他们放在一个工程里面就要把两个库都要加进去,但是这样编译的时候就出现问题了,会出现错误提示,说函数__gIsStopRecog定义了两次。这时如果你用凌阳IDE下的Libmaker工具打开这两个库,比较一下就可以发现,两个库里面都有这样的一个函数。
开始的时候我试着更改其中的一个库,但是当稍微有改动之后,再编译的时候,编译工具就不再识别这个库了,所以这样就行不通了。我也试着自己建立一个库,把bsr061v311.lib里没有的函数,而特定人语音识别要用到的函数放在这个库里面,想通过这个建立的库间接的调用 bsrv222SDL.lib,虽然编译连接都通过了,没有错误,但是当运行的时候,运行到要调用我建立的库里的函数的时候,程序就死了,最后这个方法也没有成功。看来在一块61板上同时实现SI和SD两种语音识别模式是行不通了,我就想能否让两块61板通过它们之间的通信来实现呢?于是我就有着手研究,最后,终于实现了。
硬件连接:
硬件连接很简单,把一块61板的IOB7(Rx)和IOB10(Tx)分别与另一快61板的IOB10(Tx)和IOB7(Rx)连接起来,同时需要注意的是还要把两块板子的地连接起来,使它们具有相同的地。
4. 控制流程图
(1) 特定人语音识别流程图(主)
(2) 非特定人语音识别流程图(从)
开始
语音提示,训练两条命令:特定人语音识别和非特定人语音识别
训练成功
自动存储到内部flash
命令提示:
请选择控制模式
特定人
训练五条命令:返回,前进,倒车,左拐,右拐
训练成功
自动存储到内部flash
开始识别
自动装载五条命令
返回命令
非特定人
发送
“I”
接收到“D”
第一次
操作说明:
(1) 开始训练特定人和非特定人两条命令,训练成功后如果听到两声ok,说明自动存储成功。然后出现语音提示:请选择控制模式。
(2) 此时若发布命令:特定人。将进入特定人语音识别。如果是第一次使用特定人语音识别,将会提示训练:返回,前进,倒车,左拐,右拐五条命令,训练成功后如果听到两声ok后,则说明自动存储成功,然后进入识别状态,此时发布命令,小车就会执行相应的动作,若发布返回命令,则会听到:请选择控制模式,可以继续选择控制方式。若不是第一次使用特定人语音识别,则会自动加载以前训练的五条命令,直接进入识别状态。
(3) 若发布命令:非特定人。将进入非特定人语音识别模式。以前进命令为总的触发命令,发布命令,小车就会执行相应的动作,若发布自我介绍命令,将会出现语音: THIS IS SI MODEOL,I AM A SMART CAR,NICE TO TALK TO YOU,GOODBYE!.返回。然后出现语音提示:请选择控制模式,可以继续选择控制方式。
5. 结语
本设计通过两块SPCE061A之间的通信,达到了控制同一个小车的目的,获得了较好的效果。读者可以发挥自己的想象增加训练的命令,使小车能够完成更多的动作,也可以根据自己的爱好更改控制对象。
本文转自
http://blog.21ic.com/user1/3180/archives/2006/24297.html
使用过凌阳SPCE06A板的朋友们应该都知道,凌阳有两种语音识别模式:SD(特定人语音识别) 和SI(非特定人语音识别)。有的朋友可能也想过将这两种控制模式连接起来放在一个工程里面,以达到“双控”的目的。但是,这样就会出现一个问题:就是这两种语音识别模式要用到两个不同的库bsrv222SDL.lib和bsr061v311.lib(本文只用这两个库来说明,其他不同版本的库也可能会有所不同),如果把他们放在一个工程里面就要把两个库都要加进去,但是这样编译的时候就出现问题了,会出现错误提示,说函数__gIsStopRecog定义了两次。这时如果你用凌阳IDE下的Libmaker工具打开这两个库,比较一下就可以发现,两个库里面都有这样的一个函数。
开始的时候我试着更改其中的一个库,但是当稍微有改动之后,再编译的时候,编译工具就不再识别这个库了,所以这样就行不通了。我也试着自己建立一个库,把bsr061v311.lib里没有的函数,而特定人语音识别要用到的函数放在这个库里面,想通过这个建立的库间接的调用 bsrv222SDL.lib,虽然编译连接都通过了,没有错误,但是当运行的时候,运行到要调用我建立的库里的函数的时候,程序就死了,最后这个方法也没有成功。看来在一块61板上同时实现SI和SD两种语音识别模式是行不通了,我就想能否让两块61板通过它们之间的通信来实现呢?于是我就有着手研究,最后,终于实现了。
硬件连接:
硬件连接很简单,把一块61板的IOB7(Rx)和IOB10(Tx)分别与另一快61板的IOB10(Tx)和IOB7(Rx)连接起来,同时需要注意的是还要把两块板子的地连接起来,使它们具有相同的地。
4. 控制流程图
(1) 特定人语音识别流程图(主)
(2) 非特定人语音识别流程图(从)
开始
语音提示,训练两条命令:特定人语音识别和非特定人语音识别
训练成功
自动存储到内部flash
命令提示:
请选择控制模式
特定人
训练五条命令:返回,前进,倒车,左拐,右拐
训练成功
自动存储到内部flash
开始识别
自动装载五条命令
返回命令
非特定人
发送
“I”
接收到“D”
第一次
操作说明:
(1) 开始训练特定人和非特定人两条命令,训练成功后如果听到两声ok,说明自动存储成功。然后出现语音提示:请选择控制模式。
(2) 此时若发布命令:特定人。将进入特定人语音识别。如果是第一次使用特定人语音识别,将会提示训练:返回,前进,倒车,左拐,右拐五条命令,训练成功后如果听到两声ok后,则说明自动存储成功,然后进入识别状态,此时发布命令,小车就会执行相应的动作,若发布返回命令,则会听到:请选择控制模式,可以继续选择控制方式。若不是第一次使用特定人语音识别,则会自动加载以前训练的五条命令,直接进入识别状态。
(3) 若发布命令:非特定人。将进入非特定人语音识别模式。以前进命令为总的触发命令,发布命令,小车就会执行相应的动作,若发布自我介绍命令,将会出现语音: THIS IS SI MODEOL,I AM A SMART CAR,NICE TO TALK TO YOU,GOODBYE!.返回。然后出现语音提示:请选择控制模式,可以继续选择控制方式。
5. 结语
本设计通过两块SPCE061A之间的通信,达到了控制同一个小车的目的,获得了较好的效果。读者可以发挥自己的想象增加训练的命令,使小车能够完成更多的动作,也可以根据自己的爱好更改控制对象。
本文转自
http://blog.21ic.com/user1/3180/archives/2006/24297.html