在之前的帖子《》中,我们介绍了如何使用Esp32S3微控制器与文心一言大模型实现基本的智能语音对话功能,但受限于语音识别技术,只能处理2-3秒的音频数据。为了提升用户体验,满足更长时间的语音聊天对话需求,本次优化采用了流式语音识别技术,并添加了语音唤醒模块,实现了语音关键词唤醒功能。
1、arduino开发平台;
2、所需设备:Esp32s3、inmp441、max98357、ASRPRO语音模块、ILI9488显示屏,杜邦线(接线);
3、大模型:百度的文心一言大模型,豆包的火山引擎大模型;
4、语音识别(STT)和语音合成(TTS):使用百度语音识别和语音合成;
5、使用语言:C/C++;

1、esp32s3:
2、inmp441:
3、max98357:
4、ASRPRO语音模块:
5、扬声器:文心一言 ERNIE Bot 教程
6、杜邦线:
7、ILI9488显示屏
1、INMP441与Esp32S3接线
1.1、inmp44介绍
INMP441是一款高性能,低功耗,数字输出,带底部端口的全向MEMS麦克风。该完整的INMP441解决方案由一个MEMS传感器,信号组成调节,模数转换器,抗混叠滤波器,电源管理和行业标准的24位I²S接口。I²S接口允许INMP441直接连接到数字处理器,如DSP和微控制器,无需使用用于系统中的音频编解码器。INMP441具有高信噪比,是一款出色的选择近场应用。 INMP441具有扁平宽带频率响应,导致自然声音高清晰度。
1.2、inmp441接口定义
1.3、实物图

1.4、接线
2、MAX98357与Esp32S3接线
2.1、max98357介绍
这是一个采用标准的I2S作为数字音频输入,内置解码器,可将数字音频信号解码为模拟信号,并拥有内置放大器,可以直接驱动扬声器的D类放大器。因其工作效率高,可以以2.7V~5.5V的直流电压运行,因此非常适合便携式及电池供电的音频播放项目
2.2、max98357接口定义
2.3、实物图

2.4、接线
3、ASRPRO与Esp32S3接线
3.1、ASRPRO语音模块介绍
ASRPRO是一款高性能、低功耗的语音识别芯片,在使用过程中可以设置唤醒词和命令词。唤醒词用于将模块从待机状态切换到工作状态,防止误触发;命令词则用于执行具体的语音指令。本文中主要是借用了唤醒词的功能,使得esp32s3板子可以依赖语音唤醒。
3.2、接口定义
该模块接口可自行查资料了解。
3.3、实物图
3.4、接线
4、扬声器与MAX98357接线
这个接线比较简单,自己看着接就行。
文件目录如下:

1、ASRPRO语音模块上的代码
1.1、拖拉式编程如下:


1.2、字符编程如下:
2、INMP441与MAX98357初始化接口
在my_inmp441_max98357.h文件中,实现初始化inmp441与max98357的接口。
2、STT和TTS(语音识别和语音合成接口)
在my_stt_tts.h文件中通过百度语音识别和语音合成API接口实现语音与文字互转功能。
3、通过API接口访问文心一言大模型
在my_ErnieBot.h文件中实现访问文心一言大模型API接口获取响应结果。
4、通过API接口访问豆包(火山引擎)大模型
在my_Doubao.h文件中实现访问文心一言大模型API接口获取响应结果。
5、WiFi模块
在my_wifi.h文件中初始化wifi功能。
6、common文件
在my_common.h文件中定义各个模块共同调用的参数。
7、核心逻辑代码文件
在esp32_ai_llm.h文件中编码实现调用各个模块接口代码,把各个模块功能串联起来实现最终语音唤醒以及连续对话的功能。
流式语音识别逻辑目前在该文件中,后续会摘出来单独作为一个模块。
整体流程已经基本调通,效果展示后面拍好视频后补上来。
各模块源码无保留在第五章节,loop()函数各位老铁自己调用模块接口实现。
从无到有实现目前的效果,有参考其他大佬的帖子,也有自己摸索实现的部分,知识劳动成果,实属不易。
如果需要技术支持,欢迎骚扰(+v:Sw-striving)!
文章来源于互联网:esp32s3文心一言/豆包(即火山引擎)大模型实现智能语音对话–流式语音识别
相关推荐: ESP32开发进阶:1.接入文心一言
一、百度智能控制台 网址:百度智能云控制台 (baidu.com) 首先,创建应用 其它什么都不要点,就把“应用名称”和”应用描述”填了就行,然后“确认” 接着,选API文档 弹…
发布者:Ai探索者,转载请注明出处:https://javaforall.net/266896.html原文链接:https://javaforall.net
