找回密码
 立即注册
搜索

Arduino语音模块-ASR Board 语音辨认控制板

ororo 2019-2-17 14:31:22 显示全部楼层 阅读模式
外观




概 述
    ASR Board 是一块基于Arduino的开源语音辨认控制板,该模块只需求经过上位机软件发送指令即可设定要辨认的关键词,不需求用户事前训练和录音,是一个高效的非特定人语音辨认控制模块。该模块每次辨认可以设置35项候选辨认句,每个辨认句可以是单字,词组或短句,长度为不超过10个汉字或者38个字节的拼音串,可由一个系统支持多种场景。(注:关键词的条数和关键词的长度是对立的,若用户二次开发也可修正为50项候选辨认句,每个辨认句可以是单字,词组或短句,长度为不超过10个汉字或者79个字节的拼音串)。ASR Board不但可以语音辨认还支持播放AD4音频格式的语音文件,可完成语音交互功能,模块经过串口可以和Arduino或其他单片机通讯。模块将Arduino闲暇的数字口和模拟口预留出来方便停止二次开发,模块还支持xbee和APC220无线模块,可完成远程语音控制。该产品适用于智能家居、远程语音点歌系统,远程语音机器人控制等。

留意:该产品运用时需求外接供电才能正常工作。

功能描画

ASR Board V2
    硬件选择:Arduino LeonardoDigital I/O 数字输入/输入端4~7(支持外部电源供电)。Analog 模拟输入0~3。采用USB线直接下载程序。支持XBee无线数传模块。支持APC220无线数传模块。支持外部麦克风输入和线路输入。支持SD卡存放语音文件。支持播放AD4音频格式。输入电压:6~12V DC,引荐运用7.5V电源适配器或7.4V锂电池。尺寸:长57mm× 宽47mm。

ASR Board V1.1
    硬件选择:Arduino UNODigital I/O 数字输入/输入端3~7(支持外部电源供电)。Analog 模拟输入4~7。采用Arduino USB Serial Light Adapter程序下载器下载程序。

引脚阐明




ASR Board如何运用

A.ASR Board AT指令集

1.添加关键词:AT+KW=001,cheng du
    【001】:对应SD卡中语音文件的称号(留意:SD卡中的语音命名为4位的,均为十进制数),取值范围:001-254(十进制)。【cheng du】:需求辨认的词语或者句子,文字的拼音用空格键隔开。【指令的功能】:辨认到人讲的“成都”两个字时,播放SD卡中以“0001.AD4”命名的语音文件,同时从串口输入数据“cheng du”。

2.查询关键词:AT+KW?
    【行】:第一列表示关键词的的行数。【值】:第二列表示模块辨认到关键词之后将播放SD卡中以此值命名的语音。【关键词】:第三列需求辨认的词语或者句子,文字的拼音用空格键隔开。

3.播放SD卡音频文件:AT+PLAY=001
    【指令的功能】:播放SD卡中以“0001.AD4”命名的语音文件(留意:SD卡中的语音命名为4位的,均为十进制数),取值范围:000-999(十进制)。

4.波特率设置:AT+BAUD=9600
    【9600】:模块波特率。(可用波特率有:2400,4800,9600,19200,38400,115200)【指令功能】:波特率更改后立刻失效,重新选择波特率后才能再次发送和接收命令。

5.查询AT命令:直接点击此按钮则显示模块的一切AT命令。

6.播放语音能否关闭麦克风输入:AT+MIC=0(1)
    【0】:当为“0”时,语音播放过程中不允许检测。【1】:当为“1”时,语音播放过程中允许检测。

7.触发形式设置:AT+TM=CT(PT,BT)
    【CT】:当为“CT”时,为循环辨认形式(当触发形式为PT或者BT时需再次用命令AT+TM=CT才可进入循环辨认形式)。【PT】:当为“PT”时,为口令辨认形式(“预备”是口令触发的关键词)。【BT】:当为“BT”时,为按键辨认形式(需在D4口(老版为D3)外接按钮)。

8.麦克风灵敏度设置:AT+MS=78
    【78】:可了解为MIC的音量,可以设置的为0-127(十进制),建议设置为64-85(十进制):值越大代表 MIC 音量越大,辨认启动越敏感,但能够带来更多误辨认;值越小代表 MIC音量越小,需求近间隔说话才能启动辨认功能,好处是对远处的干扰语音没有反应。

9.擦除一切关键词:AT+ERASE
    【指令功能】:除原有的“kai deng”“guan deng”“zhun bei”不会擦除外,擦除一切的关键词。

B.AT命令的运用

功能:运用AT指令,初步看法ASR Board。

材料:
    ASR Board 一个Micro USB数据线 一个

板子出厂曾经下载过代码,可以直接运用,假如需求另外完成功能可重新下载新代码。

运用过程:

(1)将小喇叭插在ASR Board的spk针脚上,红线接在正极,黑线接在负极(或者直接在LINE OUT处接上耳机)




(2)将材料中提供的AD4文件拷贝到SD卡中,将SD卡插在ASR Board的卡槽上(也可以本人录制音频文件,再运用AD4编码软件停止格式转换,运用方法见附件中的《AD4音频格式转换指南》);







(3)运用USB数据线衔接ASR Board和电脑,在工具选项外面选择正确的板卡和端口号,旧版板卡选择Uno,新版板卡选择Leonardo,打开Arduino IDE的串口监视器(端口选择错误将打不开串口监视器),在外面输入各种AT指令,观察串口监视器以及ASR Board。(板子上电后,会自动播报其波特率以及工作形式)【留意选择换行加回车形式】




比如:在串口监视器中输入AT+PLAY=001,点击回车,此时主控板会播放SD卡中编号为0001的音频文件,同时在串口监视器中输入“Now Playing …1”“OK”。




再比如:在串口监视器中输入AT+KW=001,chi fan,点击回车,此时监视器上会输入“OK”,同时,关键词“吃饭”曾经添加到板卡中去了,我们只需对着MIC说出“吃饭”,主板辨认当前就会播放相应的编号为0001的音频文件。




可以直接运用AT指令添加关键词,查询关键词,擦出关键词等等。AT指令列表都可以如此运用。ASR Board的指令集详解见下文相关章节。

C.语音控制开关灯

功能:ASR Board辨认到关键词“开灯”或“关灯”后,控制插在主控板数字阵脚四号口上的LED的亮灭。

材料:
    ASR Board 一个LED模块 一个SD卡 一个小喇叭 一个

运用过程:

(1)将小喇叭插在ASR Board的spk针脚上,红线接在正极,黑线接在负极

(2)将材料中提供的AD4文件拷贝到SD卡中,将SD卡插在ASR Board的卡槽上【留意SD卡最好运用1G的】

(3)将LED模块插在数字针脚4号下面,留意GND、VCC、信号口的接线次序。(每个板子在出厂前都曾经下载好程序了,可以在库文件ASRB_2exampleASRBled找到,也可以修正该代码或者自行设计代码来控制LED灯的亮灭),同时,拿出一个跳帽,将其插在ASR Board的VCC和5V之间,不然灯是不会亮的




(4)给ASR Board通电,运用外接电源或者衔接USB线都行。假如衔接USB,可以打开Arduino IDE的串口监视器,查看语音辨认时传回来的数据是什么

(5)对着MIC说出开灯或者关灯,观察发现,LED灯有了明灭的变化。不过亮灭状况跟语音提示正好相反,这是由于程序外面,检测到“开灯”关键词时,熄灭LED,检测到“关灯”关键词时,点亮LED。同时,小喇叭也会播放出相应的语音,而串口监视器中会传回252、253的数值,这是由于我们在运用AT指令添加关键词时将这两条指令编号为252和253了

D.ASR Board点歌系统

材料:
    ASR Board 一个SD卡 一个小喇叭 一个

运用过程:

(1)将小喇叭插在ASR Board的spk针脚上,红线接在正极,黑线接在负极

(2)将喜欢的歌曲运用AD4格式转换器转成AD4格式,同时给歌曲以编号的方式命令,比如0006.ad4(SD卡中的语音命名为4位,都是十进制数,取值范围是001-254)

(3)给ASR Board通电,运用外接电源或者衔接USB线都行。假如衔接USB,可以打开Arduino IDE的串口监视器,查看语音辨认时传回来的数据是什么

(4)打开Arduino IDE的串口监视器,在外面输入AT指令,添加关键词,比如输入AT+KW=006,qing hua ci,指令添加成功后,会在串口监视器上前往OK

(5)对着MIC说:“请播放青花瓷”(只需有青花瓷三个关键字,ASR Board就可以检测到),主控板会播放编号为006的AD4文件,串口监视器中会前往数值“6”。我们也可以修正库文件外面的样例程序example——>ASRBled(这个也是板子出厂时分下载的出厂程序)让主控板唱歌的同时,LED亮起来,只需求修正下列程序
/**************************************语音控制LED****************************/void ASR_monitor(){if(res==252) digitalWrite(led,LOW);else if(res==253) digitalWrite(led,HIGH);}
将其改成如下:
/**************************************语音控制LED****************************/void ASR_monitor(){if(res==6) digitalWrite(led,HIGH);else digitalWrite(led,LOW);}
【友谊提示,该出厂代码运用了ASRB的库,假如下载出现错误,可以检查一下能否把ASRB库放到库文件libraries外面】

E.语音控制小车

功能:ASR Board辨认到关键词“行进”或“后退”后经过蓝牙传到 4WD小车的板子上,来控制小车运动。

材料:
    ASR Board 一个蓝牙模块 两个4WD小车 一辆Uno R3板卡 一个

运用过程:

(1)配置两个蓝牙,详细教程见两个蓝牙通讯部分。

(2)将小喇叭插在ASR Board的spk针脚上,红线接在正极,黑线接在负极,插上蓝牙;(不插也可以,减少语音播报功能)

(3)找到或者制造“行进”、“后退”、“左转”、“右转”等AD4音频文件,将其按照十进制4位的规范编好编号,放入SD卡根目录中;(没有AD4文件也可以,减少语音播报功能)

(4)衔接ASR Board与电脑,修正库文件外面的样例程序example——>ASRBled(这个也是板子出厂时分下载的出厂程序),在其中添加一句Serial1.begin(9600),修正后的set up()如下:
void setup(){ Serial.begin(9600);  Serial1.begin(9600); //添加了这条语句 ASRB.Initialise(SUM,sRecog,fDigit); attachInterrupt(0,ExtInt0Handler,LOW);  //pinMode(button,INPUT); pinMode(led,OUTPUT); digitalWrite(led,HIGH);}
程序的其他地方不需求作任何改动。(这是由于ASR Board运用的是leonardo的板卡,该板卡有两个串口,我们运用Serial1来与外部通讯)下载程序到板卡。【友谊提示,该出厂代码运用了ASRB的库,假如下载出现错误,可以检查一下能否把ASRB库放到库文件libraries外面】

(5)打开Arduino IDE,在串口监视器中输入添加行进、后退、左转、右转等指令,比如:AT+KW=004,qian jin(AT指令的基本运用方法可以参见后面的示例),点击发送。这个做完当前可以做个测试,对着ASR Board说“行进”,串口监视器会前往数值“4”(与下面输入的指令编号相对应)。







(6)在4WD小车端编写程序。在这里要留意的是,小车行进、后退、左转、右转等动作的发生是由于经过蓝牙接遭到了ASR Board传来你的数据,比如按照后面的设置,假如对着ASR Board说出“行进”,ASR Board会经过蓝牙向我们AWD小车上的UNO主板发出数据“4”,正是收到了数据“4”,我们的AWD小车才知道需求“行进”,所以在小车端的编程应该是当串口检测到有数据输入时,对读取到的数据停止判别,假如是“4”,就调用小车行进的函数,假如是其他的,就调用其他的函数,这个可以根据本人的设定作相应的调整。

【留意】:该模块中装备了SD卡,在材料中也给了很多需求拷贝到SD卡中的AD4音频文件,假如我们添加的关键词编号跟已有的冲突,可以自行录制AD4文件以覆盖原有的。(当然,开灯,关灯,预备这三个指令出厂代码中用到了,还是不要动它们三好了)

参考程序如下(该程序是下载在Uno R3板卡上,作为小车端的程序,而不是载在ASR Board上):
int E1 = 5; //M1 Speed Controlint E2 = 6; //M2 Speed Controlint M1 = 4; //M1 Direction Controlint M2 = 7; //M1 Direction Controlchar a;void stop(void) //Stop{ digitalWrite(E1,0);  digitalWrite(E2,0); } void advance(char a,char b) //Move forward{ analogWrite (E1,a); //PWM Speed Control digitalWrite(M1,HIGH);  analogWrite (E2,b);  digitalWrite(M2,HIGH);} void back_off (char a,char b) //Move backward{ analogWrite (E1,a); digitalWrite(M1,LOW);  analogWrite (E2,b);  digitalWrite(M2,LOW);}void turn_L (char a,char b) //Turn Left{ analogWrite (E1,a); digitalWrite(M1,LOW);  analogWrite (E2,b);  digitalWrite(M2,HIGH);}void turn_R (char a,char b) //Turn Right{ analogWrite (E1,a); digitalWrite(M1,HIGH);  analogWrite (E2,b);  digitalWrite(M2,LOW);}void setup(void) {  int i; for(i=4;i<=7;i++) pinMode(i, OUTPUT);  Serial.begin(9600); //Set Baud Rate}  void loop(){  if ( Serial.available()) { a = Serial.read(); { switch(a) { case '4': //SD卡中,行进指令的编号是0004 (可自行修正)  advance (255,255); break;  case '7': //SD卡中,后退指令的编号是0007 (可自行修正) back_off (255,255);  break; case '5':  turn_L (100,100);  break; case '6':  turn_R (100,100); ; break; case '3':  stop();  break; default:break;  } }  }}
(7)将配置好的蓝牙插在ASR Board下面。表示图如下:




(8)将另一块配置好的蓝牙插在4WD车XBee插孔处。表示图如下:




(9)插好蓝牙,等待一段工夫,两个蓝牙上的LINK指示灯亮起来了,表示两者正在通讯。此时,我们对着ASR Board说出行进、后退、左转、右转等指令,小车就会做相应的动作了。

F.出厂代码范例

ASR Board演示代码(在不同工作形式下语音控制LED):

运转样例程序前,请先安装ASRB Arduino库初始化ASR Board或者更新eeprom,先将asr_board_init.pde下载到ASR Board,再下载该演示代码。按键形式下,若运用的是外接按键,需运用到例程中被屏蔽的程序,并在D3口接上按钮模块。
#include <ASRB.h>#include <EEPROM.h>#include <SPI.h>#define SUM 35//int set=0,vall,res;char sRecog[SUM][38]={"kai deng","guan deng","zhun bei"};//unsigned int fDigit[SUM]={252,253,254};//AD4 void BT(int x,int y,char (*p)[38],unsigned int dd[],int set);void PT(int x,int y,char (*p)[38],unsigned int dd[],int set);void ASR_while(int x,int y,char (*p)[38],unsigned int dd[],int set);void ASR_BT(int x,int y,char (*p)[38],unsigned int dd[],int set);int button=3,led=4;void setup(){ASRB.Initialise(SUM,sRecog,fDigit);attachInterrupt(0,ExtInt0Handler,LOW); //pinMode(button,INPUT);pinMode(led,OUTPUT);digitalWrite(led,HIGH);}void loop(){ if(vall==111) PT(SUM,38,sRecog,fDigit,set); // else if(vall==112) BT(SUM,38,sRecog,fDigit,set); // else { while(1) { res=0; res=ASRB.Asr(SUM,38,sRecog,fDigit,set); ASR_monitor(); delay(10); ASRB.Busy_SD(); if (Serial.available() > 0) break; } } //ASRB.AT_command(SUM,38,sRecog,fDigit,set);// delay(100); }void ExtInt0Handler (){ ASRB.ProcessInt0(); }void ASR_while(int x,int y,char (*p)[38],unsigned int dd[],int set){ while(1) { res=0; res=ASRB.Asr(x,y,p,dd,set); ASR_monitor(); delay(10); ASRB.Busy_SD(); if(res<255&&res>0) break; if (Serial.available() > 0) break;  // else if(digitalRead(button)==LOW) break;  }}void ASR_BT(int x,int y,char (*p)[38],unsigned int dd[],int set){ ASRB.send_SD(260); delay(50); ASRB.Busy_SD();  ASR_while(x,y,p,dd,set);}/**************************************语音控制LED****************************/void ASR_monitor(){if(res==252) digitalWrite(led,LOW);else if(res==253) digitalWrite(led,HIGH);} /*******************************口令形式*************************************/void PT(int x,int y,char (*p)[38],unsigned int dd[],int set){ while(1) { set=1; if (Serial.available() > 0)  { set=0; break; } int h=ASRB.Asr(x,y,p,dd,set); delay(50); if(h==254) // { set=0;  ASRB.send_SD(260); delay(50); ASRB.Busy_SD();  ASR_while(x,y,p,dd,set);  }  }}/*******************************按键形式**************************************/void BT(int x,int y,char (*p)[38],unsigned int dd[],int set){char local[10]={0};char DD[1][16]={"asrbt"};while(1){ if (Serial.available() > 0)  {  local[0]= Serial.read();  delay(20); if(local[0]!=0x41)  { for(int i=1;i<8;i++) {  local= Serial.read();  if( local==0x0a) // { if( local[i-1]==0x0d) {  local=0; local[i-1]=0; if(strcmp(local,DD[0])==0) //AT {  ASR_BT(x,y,p,dd,set); break; }  } } } } else break; } /* else if(digitalRead(button)==LOW) { delay(100); if(digitalRead(button)==LOW) { ASR_BT(x,y,p,dd,set); break; } }*/ }}
ASR Board关键词的辨认

语音辨认,辨认的是“语音”。对于非特定人语音辨认来说,在描画关键词语时,是用音标标注出要辨认的关键词语。

对于ASR Board支持的中文辨认来说,就是用拼音来描画出关键词语。

也就是说,只需是拼音可以拼出的发音,都是可以停止辨认的。

因此,在某些场合需求辨认一些简单的外文或者纯方言发音的时分,可以用拼音标注的方法来完成。

例如,有些场合需求辨认一些简单的英文单词,可以用拼音标注:
one → wantwo → tuthree → si rui
例如,有些场合需求辨认一些纯方言发音的词汇,也可以用拼音标注:

上海话的“晚”发音是“ya”,那么“晚报”这个词汇,用普通话标注是“wan bao”,假如要标注成上海话发音,就是“ya bao”,这样上海话说的“晚报”也就可以被辨认了。

值得留意的是:ASR Board支持的是中文普通话,有些外文或者方言发音无法用拼音描画,所以模块不一定可以完成一切需求的外文或者方言义务。

ASR Board工作形式

ASR Board有三个工作形式:循环形式,口令形式和按键形式。工作形式经过ASR Board软件停止修正:
    循环形式:循环语音辨认。当D13灯亮起(ASR Board V1.1为D14)为进入语音辨认形状,用户可立刻说出设定好的关键词给控制板辨认。口令形式:例程中以“预备”为口令触发命令,若用户想修正为别的口令可在程序中的二维数组sRecog中将“zhun bei”交换即可(为口令触发形式的效果更好,建议口令触发命令的关键词设置为长一点或者添加渣滓关键词来降低误辨认率)。当口令触发后,有个提示语音来阐明口令曾经触发,当D14灯亮起(ASR Board V2.1为D13)为进入语音辨认形状,直到辨认到关键词加入语音辨认形状,再继续等待口令触发命令。按键形式:此形式需在控制板的D4端(ASR Board V1.1为D3)接上按钮模块(需求运用到程序中被屏蔽的程序段)按下按钮,当D14灯亮起(ASR Board V2.1为D13)为进入语音辨认形状,直到辨认到关键词加入语音辨认形状,再继续等待按键触发。

注:当ASR Board重新上电后和上电前运用的工作形式和波特率是相反的(当前的工作形式和波特率有语音提示,若刚上电未听到提示,可按以下控制板上“RST”的按钮),在按键形式时,需求应用ASR Board软件 “触发形式”按钮重新设置为按键形式使触发按钮起作用,或者运用程序中被屏蔽的程序再次下载到控制板,在D3口(ASR Board V2.1为D4)接上按键模块可正常运用。

在“模拟LED”功能中只设置了循环形式。

ASR Board控制器在辨认中的常见成绩

1.改变运用环境,或许在某些环境中的噪声或者回声会影响到判别说话结束。

2.说话人本人的音量,假如声响很低,也会导致判别人说话能否结束比较困难。

3.改变命令词语内容,比较好念,启齿音响亮等,方便运用者延续明晰念出语音命令。

4.当D13灯亮起(ASR Board V1.1为D14)时ASR Board才处于辨认中。

5.若D13灯(ASR Board V1.1为D14)不断不亮,建议检查设置的工作形式能否为“按键触发”形式,若灯亮起关键词无法辨认,建议检查设置的工作形式能否为口令形式。

6.串口衔接成功,发送AT命令出现“error”或者没有任何显示:建议用户重启ASR Board软件,当D14灯亮起后(ASR Board V2.1为D13)或者过几秒再操作。这是由于刚开启软件就发送命令会出现乱码形成的错误这是很多上位机都无法避免的。

7.串口衔接成功,D14灯亮起(ASR Board V2.1为D13),无法运用ASR Board软件(在模块未重启的状况下):建议将波特率修正为上次运用过的波特率。

8.在运用过程中接收区出现乱码:建议重新修正波特率。

9.当运用模拟LED和模拟MP3后,无法停止正常语音辨认,这是由于程序不断停留在“模拟LED”或者“模拟MP3”功能中,要加入这些功能需求发送其他功能的AT命令。或者用户在正在播放很长的音乐且播放语音过程中设置为不允许检测语音时,用户又想中止播放但无法发送其他功能的AT命令,在此建议用户点击控制板上的“RST”按钮。

10.因波特率的缘由当波特率为2400时“模拟MP3”功能能够无法运用,并非控制板的缘由。

ASR Board的辨认场景分析

在辨认精度要求高的场景中,运用“触发辨认”形式

在辨认精度要求高的场景中,应该采用“触发辨认”形式。缘由是:

1) 用户在每次按热键后,肉体处于最集中的形状,此时用户说的语音命令会比较仔细,明晰。避免了用户过于随意的发音导致的辨认误差。

2) 每次按热键后,产品应该给以一个分明的末尾信号,比如发出“当”的一声或者其他提示信号,可以给用户一个明白末尾的提示,方便用户掌握说语音命令的工夫。

3) 由于按键触发后,用户就会贴近麦克风并说出语音命令,避免了其他环境声响被录入模块芯片导致的误辨认。

另:这种方式还是一种省电的方式,在不辨认时,彻底不让芯片工作以省电。

口令触发形式
    在一些运用场合,希望辨认精度高,但是又无法要求用户每次都用手按键来“触发辨认”。此时,可以采用“口令触发形式”。产品定义一句短语,作为触发口令。比如,可以定义“芝麻开门”或者“预备”等作为触发口令。产品在等待用户触发时,启动一个“循环辨认”形式,把触发口令“芝麻开门”和其他几十个用来吸收错误的词汇设置进芯片。只要当检测到辨认出的结果是触发口令时,才以为是终端用户叫了这个口令。此时,给出提示音,并启动一个“触发辨认形式”,并且把相应的辨认列表设置进模块芯片,提示用户在提示音后几秒钟内说出要执行的操作。在等待用户的过程时,假如辨认的结果是那些用来吸收错误的词汇,则以为是误辨认,或者其他的声响干扰,而不停止任何的处理(注:ASR Board的程序设置的是直到辨认到结果才进入下次口令触发),直接再次进入“循环辨认”形式。这种口令触发形式,交融了其他两种形式的优点,并且结合提到的“渣滓关键词语”的方法,可以为产品提供愈加方便适用的语音操作特性。

增添 “渣滓关键词语”——吸收错误辨认
    在设定好要辨认的关键词语后,为了进一步降低误辨认率,可以再添加一些其他的恣意词汇进辨认列表,用来吸收错误辨认,从而达到降低误辨认率的目的。可以把这些关键词语称之为“渣滓关键词语”。比如,某个运用场景中,需求辨认的关键词语是 4 条,“行进”,“后退”,“开门”,“关门”。在把这 4 个关键词语设置进芯片后,可以再另外设置 10~30 个词语进模块芯片,比如“前门”,“后门”,“阿阿阿”,“呜呜”等等。只要辨认结果是 4 个关键词语之内的,才以为辨认有效。假如辨认结果是“渣滓关键词语”,则阐明是其他的声响导致的误辨认,产品应该重新末尾一次辨认过程。这样,可以非常非常有效地降低误辨认率。极大地提高终端用户的客观运用体验。“渣滓关键词语”的选取,最好可以选择一些字数和关键词语一样的词语,用来吸收能够发生的错误辨认。

运用场景

电磁炉/微波炉/洗衣机/智能家电操作,导航仪,MP3/MP4,数码像框,机顶盒/彩电遥控器,智能玩具/对话玩具,PMP/游戏机,自动售货机,地铁自动售票机,导游机,楼宇电视的广告点播,照明系统的声控 …

小技巧
    如何提高“语音辨认shield”的呼应速度

在语音辨认中,或许感觉呼应速度慢,处理方法:
打开库文件中“Voice.cpp”,将void VoiceClass::LD_WriteReg和unsigned char VoiceClass::LD_ReadReg函数中的delay(10)屏蔽。看个人习气:减少串口打印。比如:运用中串口显示的“MIC”,"ASR_FOUN ONE:.."等。
ASR Board辨认到关键词后,串口输入特定“值”的修正方法

在不同的场合,ASR Board辨认到关键词后串口输入的“值”假如不符合我们的需求,该怎样修正呢?
    特定值的修正,在库文件“ASRB.CPP”中找到int ASRBClass::finally函数,其中:
if(n>=0){ Serial.println(dd[n]); //打印音频文件名 t=dd[n]; send_SD(t);//播放音频文件的内容 return t; }
相关材料

ASR Board V2原理图

Arduino库

ASR Board V2 相关材料

本文整理于 DFRobot wiki

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

kelvin1698 2019-2-17 14:37:33 显示全部楼层
分享了
回复

使用道具 举报

Magic_wang 2019-2-17 14:40:55 显示全部楼层
分享了
回复

使用道具 举报

叶赫那拉静 2019-2-18 07:31:29 显示全部楼层
高手云集 果断围观
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies