中文语音识别扩展板 v1.1
1.产品外观
2.性能描述
- Arduino兼容控制器:Arduino Uno、Arduino leonardo、Arduino MEGA
- 通过LD3320芯片做汉语语音识别,不需要用户事先训练和录音,识别准确率95%
- 每次识别最多可以设置50项候选识别句,识别句可以是单字,词组 或短句,长度为不超过10个汉字或者79个字节的拼音串
- 板载单声道麦克风以及3.5mm音频输入接口
- 板载mp3模块接口,可直接支持:DFPlayer MINI mp3模块、DFRduino Player module mp3模块
- 支持mp3模块UART/I2C两种通讯方式,并可通过拨动开关自由选择
- 板载AMS1117稳压器,可提供3.3V供电,兼容更多3.3V的元件。
- 板载芯片状态指示灯,可直观看到芯片工作状态。
- 尺寸:54mm×47mm
3.引脚图
特此说明:外接音频输入接口不是外置MIC,是线路输入口。
Arduino引脚占用:
MP3模块 D0 D1 A4 A5
语音模块 D2 D4 D9 D10 D11 D12 D13
4.Voice Recognition如何使用
语音控制LED灯实验
- 打开串口监控,设置好波特率,对着麦克风用标准的普通话说“开~~灯~~”,LED灯就会点亮,同时会通过串口推送指令标签“0”, 之后说“关~~灯~~”,LED就会熄灭,同时会通过串口推送指令标签“1”。 PS:不要把嘴巴凑在话筒上..
硬件清单:
Voice Recognition 语音识别扩展板
Arduino控制板
LED发光模块ps:你也可以使用D13引脚的板载指示灯~
连接线若干
工具软件清单:
- Arduino IDE
连线图:
演示代码:
- 代码所需库文件
voiceRecognition
/*============================================================
* Copyright: DFRobot
* name: VoiceLED.ino
* function: 通过语音控制LED灯亮灭
* Author: Kelvin
* Date: 2014-8-11
===========================================================*/
#include <avr/wdt.h>
#include <VoiceRecognition.h>
VoiceRecognition Voice;
#define Led 8 //定义Led引脚为8
void setup() {
Serial.begin(9600);
pinMode(Led,OUTPUT); //初始化LED引脚为输出模式
digitalWrite(Led,LOW); //LED引脚低电平
Voice.init();//初始化VoiceRecognition模块
Voice.addCommand("kai deng",0); //添加指令,参数1:指令内容,参数2:指令标签(可重复)
//如“北京”和“首都”代表同样含义,则可共用标签。无返回
Voice.addCommand("guan deng",1); //添加指令,参数(指令内容,指令标签(可重复))
Voice.start();//开始识别
wdt_enable(WDTO_1S);//打开看门狗(防止死机)
}
void loop() {
switch(Voice.read()) //判断识别内容,在有识别结果的情况下Voice.Read()会返回该指令标签,否则返回-1
{
case 0://若是指令“kai deng”
digitalWrite(Led,HIGH); //点亮LED
Serial.println("received'kai deng',command flag'0'"); //串口发送received"kai deng",command flag"0"
break;
case 1://若是指令“guan deng”
digitalWrite(Led,LOW); //熄灭LED
Serial.println("received'guan deng',command flag'1'"); //串口发送received"guan deng",command flag"1"
break;
}
wdt_reset();
}
语音控制mp3实验:
- 连接MP3模块,把MP3模块通讯选择开关拨到UART位置,用标准的普通话说“播~~放~~”,小喇叭里就会放出MP3模块SD卡中名称为“0004.mp3”的文件, 之后说“停~~止~~”就会停止播放。 PS:不要把嘴巴凑在话筒上..
硬件清单:
Voice Recognition 语音识别扩展板
Arduino控制板
DFPlayer MINI mp3模块
小喇叭
SD内存卡
连接线若干
工具软件清单:
- Arduino IDE
连线图:
演示代码:
代码所需库文件
DFPlayerMini
/*============================================================
* Copyright: DFRobot
* name: VoiceMP3.ino
* function: 通过语音控制MP3播放
* Author: Kelvin
* Date: 2014-8-11
===========================================================*/
#include <avr/wdt.h>
#include <VoiceRecognition.h>
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h> //加载MP3模块库文件
VoiceRecognition Voice;
void setup() {
Serial.begin(9600);
mp3_set_serial (Serial); //设置MP3模块通讯方式
mp3_set_volume (15); //音量调节
Voice.init(); //初始化VoiceRecognition模块
Voice.micVol(85); //麦克风放大增益,参数(10-100)默认85
Voice.speechEndpoint(15); //语音/背噪对比度,参数(10-50),默认15
Voice.speechStartTime(8); //背噪-语音辨别时间,参数(00~50)单位10MS,默认80ms
Voice.speechEndTime(15); //语音-背噪辨别时间,参数(00~200)单位10MS,默认150ms
Voice.voiceMaxLength(200); //最长语音段时间,参数(0~200)单位100MS,默认20s
Voice.noiseTime(2); //上电噪声忽略时间,参数(00~255)单位20ms,默认40ms
Voice.addCommand("bo fang",0); //添加指令,参数1:指令内容,参数2:指令标签(可重复)
//如“北京”和“首都”代表同样含义,则可共用标签。无返回
Voice.addCommand("ting zhi",1); //添加指令,参数(指令内容,指令标签(可重复))
Voice.start();//开始识别
wdt_enable(WDTO_1S);//打开看门狗(防止死机)
}
void loop() {
// put your main code here, to run repeatedly:
// Serial.println(Voice.ASR(2,80,sRecog));
switch(Voice.read()) //判断识别内容,在有识别结果的情况下Voice.Read()会返回该指令标签,否则返回-1
{
case 0: //若是指令“bo fang”
mp3_play (4);
break;
case 1: //若是指令“ting zhi”
mp3_stop ();
break;
}
wdt_reset();
}
5.库函数说明
6.更多应用技巧
- 在某些场合需要识别一些简单的外文或者纯方言发音的时候,可以用拼音标注的方法来实现。
例如,有些场合需要识别一些简单的英文单词,可以用拼音标注:
one → wan
two → tu
three → si rui
例如,有些场合需要识别一些纯方言发音的词汇,也可以用拼音标注:
- 在识别精度要求高的场景中,可以增添 “垃圾关键词语”——吸收错误识别
例如,某个应用场景中,需要识别的关键词语是 4 条,“前进”,“后退”,“开门”,“关门”。在把这 4 个关键词语设置进芯片后,可以再另外设置 10~30 个词语进模块芯片,比如“前门”,“后门”,“阿阿阿”,“呜呜”等等。
只有识别结果是 4 个关键词语之内的,才认为识别有效。如果识别结果是“垃圾关键词语”,则说明是其他的声音导致的误识别,程序会重新开始一次识别过程。
7.文档
本文整理于 DFwiki