加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

语音识别模拟键盘设备

2019/08/19
210
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

本文首发于DF创客社区,作者:Jeff2

原文链接:http://mc.dfrobot.com.cn/thread-289776-1-1.html

项目背景

之前和朋友做AI训练街霸游戏,想加入人工语音识别输出特定技能或者连环招式,以增加游戏的趣味性。也联想到目前某些游戏按键技能太多,经常操作跟不上思想。于是就想着开发一个 输出全靠吼的硬件。说盘就盘。

boom表
LD3320
arduino leonardo
杜邦线
面包板

软件要求:
先下载ld3320 库文件,并复制到arduino的libraries文件夹下。地址
http://www.waveshare.net/study/portal.php?mod=atta...

连接 LD3320 语音模块到arduino leonardo
3.3V -- VCC
GND -- GND
MISO -- D12
MOSI -- D11
SCK -- D13
NSS -- D4
RST -- D9
IRQ -- D2
WR -- GND

先做个简单测试

#include <ld3320.h>

VoiceRecognition Voice; //声明一个语音识别对象

#define Led 8 //定义LED控制引脚

void setup()

{

pinMode(Led,OUTPUT); //初始化LED引脚为输出模式

digitalWrite(Led,LOW); //LED引脚低电平

Voice.init(); //初始化VoiceRecognition模块

Voice.addCommand("kai deng",0); //添加指令,参数(指令内容,指令标签(可重复))

Voice.addCommand("guan deng",1); //添加指令,参数(指令内容,指令标签(可重复))

Voice.start();//开始识别

}

void loop() {

switch(Voice.read()) //判断识别

{

case 0: //若是指令“kai deng”

digitalWrite(Led,HIGH); //点亮LED

break;

case 1: //若是指令“guan deng”

digitalWrite(Led,LOW);//熄灭LED

break;

default:

break;

}

}

上面代码测试
开灯 口令能点亮LED说明LD3320通了
接下研究下KEYBORAD代码
arduino leonardo可以直接用arduino的keyboard实例

我这边经过修改后代码如下

#include <Keyboard.h>

#include <ld3320.h>

#include <PinMap.h>

VoiceRecognition Voice; //声明一个语音识别对象

bool lastCapsLockState;

void setup() {

// initialize control over the keyboard:

Keyboard.begin();

TIMSK0 = 0;

Voice.init(); //初始化VoiceRecognition模块

//add fun

Voice.noiseTime(0x10);

Voice.voiceMaxLength(0x14);

Voice.micVol(0x55);

Voice.addCommand("zhuo mian", 0); //添加指令,参数(指令内容,指令标签(可重复))

Voice.addCommand("hong", 0);

Voice.addCommand("tui chu", 1);

Voice.addCommand("xia ye", 2);

Voice.addCommand("shang qu", 3);

Voice.addCommand("di bu", 4);

Voice.addCommand("zui shang", 5);

Voice.addCommand("liu lang qi", 6);

Voice.addCommand("guan bi", 7);

Voice.addCommand("xian shi", 8);

Voice.addCommand("qie huan", 9);

Voice.addCommand("shui jiao", 10);

Voice.addCommand("fang da", 11);

Voice.addCommand("bi ge", 11);

Voice.addCommand("suo xiao", 12);

Voice.addCommand("si mou", 12);

Voice.addCommand("mi ma", 13);

Voice.addCommand("en", 14);

Voice.addCommand("oh", 14);

Voice.addCommand("pi", 14);

Voice.addCommand("kiu", 14);

Voice.addCommand("wu", 14);

Voice.addCommand("a", 14);

Voice.addCommand("ei", 14);

Voice.addCommand("si", 14);

Voice.addCommand("jie suo", 15);

Voice.start();//开始识别

}

void loop() {

switch (Voice.read()) //判断识别

{

case 0: //若是指令“ei”

Keyboard.press(KEY_LEFT_GUI);//左win

Keyboard.press('d');

break;

case 1: //若是指令“B”

Keyboard.press(KEY_ESC);

//Keyboard.print("You pressed the button ");

// Keyboard.print(counter);

// Keyboard.println(" times.");

break;

case 2:

Keyboard.press(KEY_PAGE_DOWN);

break;

case 3:

Keyboard.press(KEY_PAGE_UP);

break;

case 4:

Keyboard.press(KEY_END);

break;

case 5:

Keyboard.press(KEY_HOME);

break;

case 6:

Keyboard.press(KEY_LEFT_GUI);//左alt

Keyboard.press('2');

break;

case 7:

Keyboard.press(KEY_LEFT_ALT);

Keyboard.press(KEY_F4);

break;

case 8:

Keyboard.press('f');

break;

case 9:

Keyboard.press(KEY_LEFT_ALT);//左alt

Keyboard.press(KEY_TAB);

break;

case 10:

Keyboard.press(KEY_LEFT_GUI);//左win

delay(500);

Keyboard.press('l');

Keyboard.release(KEY_LEFT_GUI);

Keyboard.release('l');

break;

case 11:

Keyboard.press(KEY_RIGHT_CTRL);

Keyboard.print('+');

break;

case 12:

Keyboard.press(KEY_RIGHT_CTRL);

Keyboard.print('-');

break;

case 13:

Keyboard.println("12312311");

break;

case 14:

;

break;

case 15:

Keyboard.press(KEY_RETURN);

break;

default:

break;

delayMicroseconds(20000);

}

Keyboard.releaseAll();

Keyboard.end();//结束键盘通讯

}


  • 140802o75mmkdk7x6dddvx.jpg
    描述:图片

相关推荐

电子产业图谱