ESP32-AUDIO-REC
ESP32-AUDIO-REC copied to clipboard
ESP32 语音识别 (ESP32 Calls Baidu Service for Speech Recognition)
1.程序功能:
声音监听及文字识别,esp32不太适合做存储设备, 可将识别的文字可转发到其它设备上,如树莓派,连接有speaker的esp32等 开发后发现 ESP Dev Module 版本又升级了,可能有函数需要微调整,懒得重新编译跟进。相信花1-3天调试下就能配置好本程序。
2.硬件要求:
自带4M psram esp32 淘宝上约55元左右 + INMP441全向麦克风模块 淘宝上约18元左右
编译时需要 PSRAM 设置成 enabled ,否则运行时会无限重启!!!
一般的esp32会有4M SPISSF, SPIFFS因为读写速度的原因,在录制声音文件时会拖慢声音文件50%的速度,无法达到足够的声音识别率
如果外接sd卡,必须至少10倍速.软件代码需要修改,不难,识别出的文字信息也可写在SD卡,但失去了隐蔽性.
3.硬件连接
INMP441-ESP接线定义见I2S.h
SCK IO26
WS IO33
SD IO34
L/R GND
LED指示灯-ESP32接线定义
用于对路由器连接,声音识别状态显示,可以不接
正极 IO27
负极 GND
4.使用说明:
1.arduino1.8.7软件,安装esp32的官方开发包,开发板选择 ESP Dev Module, PSRAM 设置成 enabled 连接esp32烧写固件
2.将INMP441 麦克风模块按上面的配置用线连接到esp32
3.上电运行,首次运行时需要配置esp32连接路由器的参数,esp32会自动进入路由器模式创建一个ESP32SETUP的路由器,电脑连接此路由输入http:192.168.4.1进行配置
4.第3步的路由器配置好后,语音识别才可以正常运行
5.baidu_key baidu_secert 这两个参数用到了百度语音服务,需要到如下网址注册获取 http://yuyin.baidu.com
5.软件运行原理
esp上电后开始读取声音信号,当检测到声音后自动转入录音模式
当检查到无声音或声音达到20秒后停止录音,将声音数据传给百度服务进行语音转文字
如果识别到文字,将文字传给配置好的外部设备
esp32受限于内存和库的原因,这里只开发了语音转文字,并将文字发送出去的功能,更多的功能不适合在esp32上直接处理
6.其它
1.软件编写中照抄了网上很多别人代码,一般尽量原样引用,因为是自已练习用,应该不会有太大问题
2.英文不好,代码注释中文为主
3.偶尔会发现esp32自动重启,发生时一般在esp32连接wifi的代码附件,怀疑是电流不够造成
供电充足时出现机率较低,很快恢复录音状态,影响不大
4.受限于算法,没法支持唤醒词,采用声音高峰值及声音平均值做为判断声音开始,调用百度语音服务次数较多
好在目前百度文字识别服务不限次数,问题不大。
5.为避免程序死掉,使用了看门狗技术,如果15分钟卡在某处,自动重启。
6.esp32连续上电连续运行1个月左右,未发现问题,使用中路由器断网等均能自动恢复
便携式伪智能音箱照片 实测效果: 1米内语音识别成功率90% 2米内语音识别成功率70% 5米内语音识别率50% 更适合短语动词识别处理,比如开灯,关灯等词.



演示视频地址 https://github.com/lixy123/ESP32-AUDIO-REC/blob/master/VID_20190714_105940.avi