esp32s3文心一言/豆包(即火山引擎)大模型实现智能语音对话--流式语音识别

一、引言

        在之前的帖子《Esp32S3通过文心一言大模型实现智能语音对话》中,我们介绍了如何使用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、扬声器:

        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接口定义

                SCK:I²S接口的串行数据时钟。
                WS:用于I²S接口的串行数据字选择。
                L/R:左/右声道选择。设置为低电平时,麦克风在I²S帧的左声道输出信号。设置为高电平时,麦克风在右声道输出信号。
                SD:I²S接口的串行数据输出。
                VDD:输入电源,1.8V至3.3V。
                GND:电源地。

        1.3、实物图

                                 

        1.4、接线
Esp32S3  INMP441
GPIO 8引脚 WS
GPIO 46引脚 SCK
GPIO 9引脚 SD
GND引脚 L/R 和GND
3.3V引脚 VDD

2、MAX98357与Esp32S3接线

        2.1、max98357介绍 

       这是一个采用标准的I2S作为数字音频输入,内置解码器,可将数字音频信号解码为模拟信号,并拥有内置放大器,可以直接驱动扬声器的D类放大器。因其工作效率高,可以以2.7V~5.5V的直流电压运行,因此非常适合便携式及电池供电的音频播放项目

       2.2、max98357接口定义

                VIN:电源正(2.5V-5.5V)。
                GND:电源地。
                SD:关机和频道选择。SD MODE拉低以将器件处于关断状态。
                GAIN:增益和频道选择。在TDM模式下,增益固定为12dB。
                DIN:数字信号输入。
                BCLK:位时钟输入。
                LRC:I2S与LJ模式的左/右时钟。同步时钟用于TDM模式。

        2.3、实物图

                                


        2.4、接线
Esp32S3 MAX98357
GPIO 19引脚 DIN
GPIO 20引脚 BCLK
GPIO 21引脚 LRC
GND引脚 GND
3.3V引脚 VIN


3、ASRPRO与Esp32S3接线

        3.1、ASRPRO语音模块介绍

        ASRPRO是一款高性能、低功耗的语音识别芯片,在使用过程中可以设置唤醒词和命令词。唤醒词用于将模块从待机状态切换到工作状态,防止误触发;命令词则用于执行具体的语音指令。本文中主要是借用了唤醒词的功能,使得esp32s3板子可以依赖语音唤醒。

        3.2、接口定义        

                该模块接口可自行查资料了解。

        3.3、实物图

                           

         3.4、接线               
Esp32S3     ASRPRO
GPIO 10引脚 PA_2
GPIO 11引脚 PA_3

4、扬声器与MAX98357接线

        这个接线比较简单,自己看着接就行。

六、源码-模块化开发

文件目录如下:

1、ASRPRO语音模块上的代码

1.1、拖拉式编程如下:

### ESP32 智能语音助手实现方案开发教程 #### 项目概述 ESP32 是一款功能强大的微控制器,支持 Wi-Fi 和蓝牙连接。通过集成语音识别模块和其他传感器设备,可以构建一个智能语音助手来执行各种任务,如控制家电、查询天气等。 #### 硬件准备 为了创建基于 ESP32智能语音助手,需要以下硬件组件: - ESP32 开发板 - 麦克风模块(例如 I2S 数字麦克风) - 扩展板(如果适用) 这些材料可以从电子元件供应商处购买到[^1]。 #### 软件环境配置 对于 Windows 用户来说,在开始编程之前要先安装 Arduino IDE 或 PlatformIO 来编写并上传代码至 ESP32 上;另外还需要下载特定库文件以便于后续操作。具体步骤如下: - 安装最新版本的Arduino IDE; - 添加 ESP32 支持包地址 `https://dl.espressif.com/dl/package_esp32_index.json` 到首选项中的附加 Boards Manager URL 字段内; - 使用 Board Manager 安装 esp32 平台; - 下载 Espalexa 库用于Alexa兼容性的实现。 #### 编写程序逻辑 下面是一个简单的 Python 示例脚本,展示了如何利用 Ollama+ESP32 构建本地对话助手的功能框架。此部分主要涉及到了语音采集、语义理解以及响应生成三个核心环节。 ```python import ollama_api # 假设这是处理ollama接口的一个自定义库 from deepseek import DeepSeekModel def capture_voice(): """模拟捕获音频数据""" pass def process_command(audio_data, model=DeepSeekModel()): text = model.transcribe(audio_data) intent = model.parse_intent(text) return { 'text': text, 'intent': intent } audio_input = capture_voice() result = process_command(audio_input) print(f"Recognized command: {result['text']}") print(f"Determined action: {result['intent']}") # 进一步根据意图采取行动... ``` 上述代码片段仅作为一个概念验证,并未给出完整的实现细节。实际应用时还需考虑更多因素,比如错误处理机制的设计等等[^2]。 #### 测试与优化 完成初步编码之后就可以将其部署到目标设备上进行测试了。可以通过串口监视器观察运行状态,必要时调整参数直至达到满意效果为止。此外还可以尝试接入其他第三方服务扩展其能力范围,像智能家居平台或者云存储API之类的资源都可以成为不错的选择。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值