【脑洞大赛】语音识别模拟键盘设备
项目背景之前和朋友做AI训练街霸游戏,想加入人工语音识别输出特定技能或者连环招式,以增加游戏的趣味性。也联想到目前某些游戏按键技能太多,经常操作跟不上思想。于是就想着开发一个 输出全靠吼的硬件。说盘就盘。
本帖最后由 Jeff2 于 2019-9-5 14:01 编辑
上面代码测试
开灯 口令能点亮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("1111");
break;
case 14:
;
break;
case 15:
Keyboard.press(KEY_RETURN);
break;
default:
break;
delayMicroseconds(20000);
}
Keyboard.releaseAll();
Keyboard.end();//结束键盘通讯
} 很好的想法,不过以有没有考虑以现有的技术来看,语音识别的响应速度是个大问题,用于智能家居尚可接受,用于格斗游戏嘛,你这不是在提醒对手嘛,只怕是大招还没来及放出来人早就已经隔屁了... 本帖最后由 Jeff2 于 2019-6-21 17:47 编辑
LYon 发表于 2019-6-21 10:19
很好的想法,不过以有没有考虑以现有的技术来看,语音识别的响应速度是个大问题,用于智能家居尚可接受,用 ...
哈哈哈,智能家居也顺便做了。游戏主要是远程竞技。喊出来更有意思 来更新下
----------------------------------------------0630
boom表
LD3320
arduino leonardo
杜邦线
面包板
软件要求:
先下载ld3320 库文件,并复制到arduino的libraries文件夹下。地址
http://www.waveshare.net/study/portal.php?mod=attachment&id=37
http://www.waveshare.net/study/data/attachment/portal/201504/27/163547ml3sv360hzi6cich.jpg
连接 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;
}
}
以上代码烧录arduino后就可以通过麦克风语音控制arduino成虚拟键盘,真正实现硬件黑客。 本帖最后由 Jeff2 于 2019-7-5 14:08 编辑
更新下实物图 你这boom表怕不是要boom,哈哈 https://v.youku.com/v_show/id_XNDM0OTYzNzI3Mg==.html?spm=a2h3j.8428770.3416059.1
上视频
页:
[1]