Voice Recognition 语音识别扩展板

1.概述

注:此款模块仅适配arduino uno,推荐使用新款语音识别模块:https://www.dfrobot.com.cn/goods-3011.html

2.性能描述

  • Arduino兼容控制器:Arduino Uno、Arduino leonardo、Arduino MEGA
  • 通过LD3320芯片做汉语语音识别,不需要用户事先训练和录音,识别准确率95%
  • 每次识别最多可以设置50项候选识别句,识别句可以是单字,词组 或短句,长度为不超过10个汉字或者79个字节的拼音串
  • 板载单声道麦克风以及3.5mm音频输入接口
  • 支持mp3模块UART/I2C两种通讯方式,并可通过拨动开关自由选择
  • 板载AMS1117稳压器,可提供3.3V供电,兼容更多3.3V的元件。
  • 板载芯片状态指示灯,可直观看到芯片工作状态。
  • 尺寸:54mm×47mm

3.引脚图

特此说明:外接音频输入接口不是外置MIC,是线路输入口。

如果将外接音频音源接入MIC口,声音将出现失真。如果将MIC音源接入外接音频音源口,几乎没有声音。

麦克风输入信号是没有经过处理过的信号,电压一般在几毫伏到几百毫伏,而外接音频得电压通常是MIC信号电压的1000倍。

PS:如果外接MIC不能正常使用,可以尝试将3.5mm接头拔出一节

Arduino引脚占用:MP3模块 D0 D1 A4 A5
语音模块 D2 D4 D9 D10 D11 D12 D13

4.Voice Recognition如何使用

语音控制LED灯实验

打开串口监控,设置好波特率,对着麦克风用标准的普通话说“开~~灯~~”,LED灯就会点亮,同时会通过串口推送指令标签“0”, 之后说“关~~灯~~”,LED就会熄灭,同时会通过串口推送指令标签“1”。 PS:不要把嘴巴凑在话筒上..

硬件清单:

  • 连接线若干

工具软件清单:

  • Arduino IDE

连线图:

演示代码:

Arduino IDE, 点击下载Arduino IDE

语音识别库文件和示例程序

关于如何安装库文件,点击链接


    /*============================================================

     *  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:不要把嘴巴凑在话筒上..

硬件清单:

  • SD内存卡
  • 连接线若干

工具软件清单:

  • Arduino IDE

连线图:

演示代码:

代码所需库文件
voiceRecognition
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();
    }

更多关于MP3模块的应用,点这里

5.库函数说明

6.更多应用技巧

在某些场合需要识别一些简单的外文或者纯方言发音的时候,可以用拼音标注的方法来实现。

例如,有些场合需要识别一些简单的英文单词,可以用拼音标注:

one → wan

two → tu

three → si rui

例如,有些场合需要识别一些纯方言发音的词汇,也可以用拼音标注:

在识别精度要求高的场景中,可以增添 “垃圾关键词语”——吸收错误识别

例如,某个应用场景中,需要识别的关键词语是 4 条,“前进”,“后退”,“开门”,“关门”。在把这 4 个关键词语设置进芯片后,可以再另外设置 10~30 个词语进模块芯片,比如“前门”,“后门”,“阿阿阿”,“呜呜”等等。

只有识别结果是 4 个关键词语之内的,才认为识别有效。如果识别结果是“垃圾关键词语”,则说明是其他的声音导致的误识别,程序会重新开始一次识别过程。 更多应用技巧,点[这里]

7.历史版本

中文语音识别模块v1.0

8.文档

库文件v1.1

V1.1 原理图

演示视频

如有更多疑问,可登陆我们的论坛与我们进行交流,您的宝贵意见将我们不断进步的阶梯!点击进入论坛

DFshopping_car1.png 语音识别扩展板(SKU:DFRDFR0177)商城购链接