lixy123 / ESP32-AUDIO-REC

ESP32 语音识别 (ESP32 Calls Baidu Service for Speech Recognition)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

ESP32 语音识别 (ESP32 Calls Baidu Service for Speech Recognition)


Languages

Language:C++ 97.2%Language:C 2.8%