一、语音模块以及硬件模块开发的行情
硬件模块的开发——常用:语音模块
语音模块STC11L08XE
比如
- 人脸识别打卡器——虹膜识别(购买方式)
- 语音识别(购买方式)
- 车牌识别(购买方式)
- 华为手机(购买方式)
拿到硬件开发,首先要资料
一、语音识别模块参数
- 型号:YS-LDV7
- 名称:一体化语音识别模块
- 规格:43*29.7MM
- 供电电压:5V (内部工作电压 3.3V)
- 待机电流:30MA
- 识别时电流:45MA
- IO 口输出:高电平为 3.3V
- 通信方式:串口通信(5V TTL 电平,不可直接接 RS232、RS485)
- 单片机参数:型号 –>
STC11L08XE
、flash–>8k、SRAM–>1280、eeprom–>32k - 识别词条个数:50句
- 工作温度:-20 至 60℃
单片机参数:STC11L08XE
二、模块结构介绍
本模块实际原理为 1 片 STC11 单片机+1 片 LD3320 组合形成的一款语音识别模块,语音识别部分已写好驱动程序,用于只需要对 STC 单片机进行编程加入自己的识别语句和控制程序即可,语音识别部分无需理会和做编程处理。
本模块具备 1 个 5V TTL 串口和 16 个单片机 IO 口的引出,可与外部单片机进行通 信交互信息亦可控制继电器等设备。
三、串口连接图
本模块的串口如下图所示,从下至上的 5 根针
分别为 GND、RXD、TXD、 5V、3.3V
,其中 RXD 和 TXD 为实际内部单片机的串口接收和发射端口,故与 外部串口设备连接时要注意 RXD 接 TXD 的交叉接法。3.3V 的口为输出口, 可用于外部设备的供电利用,一般未用上直接忽略不用即可。
下图为 USB 转 TTL 与语音模块的连接方法,如与其他单片机 或者其他设备的连接时注意串口电平需要为 5V,与语音模块电平一致,如电平不一致可加入串口电平转换模块否则将导致通信异常甚至损坏设备端口。
四、验货测试方法
本模块在出厂前已经下载了口令模式版本的程序,收到货后可进行初步的测试。
口令模式需要先按一级口令,识别成功后才能继续喊二级口令以此循环。
内部默认的口令如下:
一级口令:小杰
二级口令:代码测试
-
开发板验证
-
开灯
-
关灯
-
北京
-
上海
-
广州
详细测试流程如下:
- 首先在电脑上安装“USB 转 TTL 驱动”
- 根据以上串口连接图将 USB 转 TTL 模块与语音模块连接好
- 插入电脑 USB 口(注意不要加 USB 延长线直接插到主机的 USB 口)
- 打开“STC-ISP 下载软件”里面的串口助手
- 根据下图选择好各个选项:其中串口号可通关查看–我的电脑–设备管理器–端口)
(另外我们打开软件串口后,我们可以拔下 GND 再把 GND 插上,这样重新上电可以看到接收串口会打印出相关的识别口令。)
- 以上步骤都准备好后,我们距离模块的麦克风 50cm 左右,以正常的发音速度和音量进行识别,
- 第一句喊口令为:小杰 如识别正确,则模块 D1 指示灯将亮起,软件也将输出”收到”二字。
- 如没有 任何反应可以尝试再次发音,注意手不要碰到模块的线路。可以夹 住板边
二、语音识别模块代码分析
语音识别模块资料包
链接:https://pan.baidu.com/s/1xkwbDIDrUeOck4Q6E4bC2w
提取码:jkdj
我们要想让语音模块识别我们想要的命令,就要改变固件代码。或者AT指令
总结主函数
void ExtInt0Handler(void) interrupt 0 中断处理函数
当LD3320识别成功后,会引发IO口中断
nAsrRes = LD_GetResult(); /*获取结果*/
User_handle(nAsrRes);//用户执行函数
main{
Led_test(); 开机闪灯3次
MCU_init(); 单片机本身初始化,开启中断
LD_Reset(); ld3320初始化
UartIni(); /*串口初始化*/
}
while(1){
RunASR(); 启动识别
LD_AsrStart();
LD_Init_ASR();厂家提供的启动时序代码
LD_AsrAddFixed(); 向LD模块添加关键词
LD_AsrRun(); 运行ASR 启动ASR运算(“开始识别”)
ProcessInt0(); 判断识别是否有结果
}
1. LD_AsrAddFixed(); 向LD模块添加关键词 在LDchip.c
2. 识别出结果后,把数据从语音模块发出来!void User_handle(uint8 dat) main
修改代码
1.修改 LD_AsrAddFixed(); 向LD模块添加关键词 在LDchip.c
2. 修改 识别出结果后,把数据从语音模块发出来!void User_handle(uint8 dat)
在main.c里
然后编译成功,我们插入模块,打开STC进行烧录代码,(记得烧录时候,拔开GND,在插入,重新上电),打开串口助手,进行测试。