说道作品的互动性,有什么能比语音控制更加炫酷呢?
今天介绍一款免编程非特定人声, 串口 语音识别模块LD3320
接线图:
调试:TXD/RXD通过串口模块连接电脑,将麦克风连接模块。打开上位机串口调试软件,
上电时观察识别模块上的电源指示灯(红灯)常亮。若不亮,请立即断电,并
仔细检查电源连接是否有错误;
把识别模块放到桌上(身体任何部位不要接触模块电路板,线和麦克风),说
话人距离MIC 大概30 至50 公分;
说“左转”,模块上的识别指示灯(绿灯)会快闪1 次,表示识别正常,并且
上位机软件得到相应的返回值“00”;
说“右转”,ICR 指示灯也快闪1 次,并得到返回值“01”。如下图所示。
我们可以通过单片机来完成语音指令的执行。
void setup(){ Serial.begin(9600); pinMode(13,OUTPUT); } void loop(){ if(Serial.available()){ int inByte = Serial.read(); switch(inByte) { case 0x00: digitalWrite(13, HIGH); break; case 0x01: digitalWrite(13, LOW); break; } } }
是不是很简单?
那么指令如何设置呢?
上位机发送给模块的所有命令和数据都需要用“命令”方式进行封装后传输。命令
结构由命令起始符,命令,动作分隔符,动作和命令结束符五部分组成,其中,动作分
隔符,动作可选。
每条命令以{ 开头,以 } 结束,命令起始符{和命令结束符}不占空间;
命令字,命令参数,各占1 字节;
命令内容如果为识别语句(汉语拼音),则每个完整拼音文字占2 字节,最多
不超过9 个字(比如:ni jiao shen me ming zi 是6 个字)。如果是其他内
容,每字符占1 字节;
命令内容的汉语拼音前后与命令起始符、结束符和间隔符间均不能出现空格,
拼音与拼音间只能有一个空格,必须保证拼音的拼写规范准确,不符合拼写规
则的拼音将使语句表无法加载;
动作分隔符|,动作字,动作参数,各占1 个字节;
动作内容每字符占一个字节;
动作内容可包含数字“0~9”,字母“a~z,A~Z”及下划线等;
动作内容中不可出现命令起始符“{”,命令结束符“}”,命令分隔符
“|”。
该模块有一套专用的上位机程序
先按测试的条件连接电脑和模块,
启动上位机软件、
A.打开调试模式:{d1}
首先打开模块调试模式,这样就可以看到模块执行命令的结果。在上位机软件上输
入命令“{d1}”,点发送,上位机软件会显示返回值“D” (Done,表示命令完成)。如
清除原有语句表:{c0}
在上位机软件上输入命令“{c0}”,点发送,即可将模块上所有的语音指令全部清
除掉。如图:
清空语句表后,如果模块再次加载语句表,将出现加载失败,模块绿灯不停闪烁,并得在
{d1}模式不断的返回“0”,表示加载语句表失败,直到添加了任意一条正确的语句为止。
C.添加识别指令:{a0 ...}
现在给模块添加一条识别语句。以“你好”为例,在上位机软件输入“{a0ni hao}”,
点发送,如果添加成功,模块会反回“DA D”,表示接受了命令并且完成写入。如图:
继续在上位机软件上输入命令“{a0zai jian}”,点发送,如果添加成功,模块会
反回“DA D”,表示接受了命令并且完成写入。如图:
D.测试识别结果
按下图重新设置上位机软件的选项:
前面我们添加了“你好”“再见”两条语句,现在我们对着MIC 说“你好”,会得到
相应返回值“FF 00 FF”,然后对着MIC 说“再见”会得到另一个返回值“FF 01 FF”,
如图:
E.关闭调试模式:{d0}
在上位机软件上输入命令“{d0}”,点发送就可以关闭调试模式,如图:
关闭调试模式后,模块的识别结果将恢复正常,不再出现标记符FF。现在再测试
一下识别语句,对着MIC 说“你好”,“再见”,返回值前后不再有FF,模块进入正常工
作状态。如图:
注意事项:千万不要在机械作品上用这个模块,因为机械运动产生的噪音,会让该模块不停的识别语音,反倒无法识别你发送的命令了。适于用在比较安静的作品上。
,