/TTGO_T_Watch_Baidu_Rec

用 TTGO_T_Watch 手表做的百度语音识别终端

Primary LanguageC

一.程序功能:

1.声音监听器。声音监听器。监听周围的声音,并识别成文字。识别的文字经过配置可以转发到其它设备,如树莓派,分发给其它设备联动。 每次识别最长10秒录音并识别。平均一次录音文字识别时间1-10秒不等

2.硬件: TTGO_T_Watch 主板自带有8M PSRAM, 扩展板有多种,有一种扩展板集成了INMP441 I2S 麦克风录入芯片, 可以处理语音.

     源码硬件资料: https:github.com/LilyGO/TTGO-T-Watch         
     介绍指南:    https:t-watch-document-en.readthedocs.io/en/latest/index.html         
     玩家介绍:   https:www.instructables.com/id/TTGO-T-Watch/

二.ESP32编译环境:

1.Arduino 1.8.9    
2.扩展板引用地址配置成: https:dl.espressif.com/dl/package_esp32_dev_index.json    
3.安装: 安装esp32的官方开发包 esp32 by Espressif Systems 版本 1.03-rc1    
         引用库            
         TFT_eSPI:  https://github.com/lewisxhe/TFT_eSPI
         lvgl:      https://github.com/lewisxhe/lvgl
        
4.开发板选择: TTGO T-WATCH, PSRAM选择Enabled
  esp32只有512K内存,保存不了20秒的声音文件,在声音识别前必须存到一处地方,最合适的是用PSRAM.
  SPIFFS写入速度不够快, 达不到边录音边存效果,失音严重
  10倍速sd卡速度虽然可以达到,但检测静音期间SD卡需要反复写入,容易写废      
5.Arduino选择正确端口号后开始烧写固件

已提供编译好的固件:           
1.下载固件:
https://github.com/lixy123/TTGO_T_Watch_Baidu_Rec/releases
2.解压后共4个文件,readme中有烧写软件的下载地址,下载执行后按图设置好参数,特别是4个文件的烧写地址
3.点击START

三.树莓派服务端python代码

1.用于收集esp32识别到的文字和声音(识别到文字才会上传声音). 也可以不配置服务器地址,但如果配置后,上报识别出文字可经由树莓派当作指令转发给其它设备联动.
2. 安装:把raspberry目录中的两个py代码拷入树莓派

  1. 运行:python ttgo_watch_server.py 1990

  2. TTGO_T_Watch 配置地址指向此树莓派的IP,建议树莓派设置固定IP

四 .使用说明:

1.配置: TTGO T-WATCH 开机运行,首次运行时初始化内置参数,自动进入路由器模式,创建一个ESP32SETUP的路由器,电脑连接, 输入 http://192.168.4.1 进行配置

A.esp32连接的路由器和密码    
B.百度语音的账号,和校验码
  baidu_key, baidu_secert 这两个参数需要注册百度语音服务,在如下网址获取 http://yuyin.baidu.com
  个人免费账号每天调用次数不限,但并发识别数只有2个,所以此账号建议一机一号,不适合一号多机。      
C.图灵服务器对话配置
  配置了会对识别的文字与图灵对话, 不填图灵的账号就没有这功能      
  tulin_key: 一个账号字串      
  http://www.turingapi.com/ 上注册获取账号,账号必须身份证认证后才可用      
  个人免费账号每天调用次数1天100次,基本够用      
D.树莓派上报配置
  配置了上报识别的文字和声音树莓派或其它中心服务,可处理关灯,开灯等指令, 不填服务器地址就没有这功能      
  参考配置:
       report_address: 192.168.1.20
       report_url: http://192.168.1.20:1990/method=info&txt=           
   使用前在树莓派上先运行服务端程序       
E.其它音量监测参数: 默认是在家里安静环境下,如果周围较吵,需要将值调高

2.运行:上电即运行

演示视频地址 https://github.com/lixy123/TTGO_T_Watch_Baidu_Rec/blob/master/VID_20190811.avi

五.软件代码原理:

1.esp32上电后实时读取I2S声音信号,检测到周围声强是否达到指定音量,达到后立即进入录音模式
2.如发现3秒内静音录音停止,否则一直录音,直到10秒后停止录音
3.将i2s采集到的wav原始声音数据按http协议用前面配置的百度账号传给百度服务,进行语音转文字
4.如果百度识别出文字,将文字http方式传给服务器,现在用的是树莓派
声源在1-4米内识别效果都不错,再远了识别率会低.

六.其它技巧

1.wav采集的数字声音有点像水波振动,以数字0不基线上下跳动. 静音时采集到的数值为0.
2.程序会预存2秒的声音,这2秒不仅用于检测声强,也会用于文字识别。这样对于监听二个字的短语不会丢失声音数据.

七.工作用电:

5v 70ma电流
TTGO_T_Watch 自带的180 mAh电池理论上可以工作2小时.