ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ES8389三步集成:xiaozhi-esp32

ES8389三步集成:xiaozhi-esp32 ES8389三步集成xiaozhi-esp32【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32全双工语音交互ES8389的听说场景设备需要同时听和说时语音交互才真正成立。xiaozhi-esp32 里这件事由 ES8389 音频编解码器完成一路 I2S 总线上同时跑麦克风采集与扬声器输出采样率 24kHz全双工运行。先把它的核心能力过一遍再谈怎么接、怎么调。ES8389能力速览全双工与双总线全双工音频链路输入输出共用一条 I2S采集与播放互不阻塞duplex_在构造函数中直接置为 true。双总线分工I2C 负责控制寄存器配置I2S 负责 16bit 立体声数据传输主控侧作 Master、MCLK 倍频 256。按需开闭通路输入/输出设备独立使能空闲时可只关一路配合功放使能引脚降低整机功耗。音量与增益分离软件音量 0-100 无级调节麦克风输入增益单独配置默认 40dB。硬件链路理清之后看代码侧怎么落地。ES8389接线示意I2C与I2S双总线以仓库中 ATK-DNESP32S3-BOX2 的 config.h 为例关键信号线I2C 控制SDA GPIO48 / SCL GPIO47挂 I2C0I2S 时钟MCLK GPIO38 / BCLK GPIO40 / WS GPIO42I2S 数据DOUT GPIO41到 codec/ DIN GPIO39从 codec功放使能可选该板经 TCA9555 扩展器控制构造函数传 GPIO_NUM_NC不同板卡引脚不同照抄板级 config.h 即可PA_EN 没接就传 GPIO_NUM_NC。ES8389初始化流程拆解三步集成板级代码只需把引脚和地址交给构造函数I2S 双工通道、I2C 控制接口、输入输出设备都在构造阶段建好virtual AudioCodec* GetAudioCodec() override { static Es8389AudioCodec audio_codec( i2c_bus_, I2C_NUM_0, AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE, AUDIO_I2S_GPIO_MCLK, AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN, GPIO_NUM_NC, AUDIO_CODEC_ES8389_ADDR, AUDIO_CODEC_USE_MCLK); return audio_codec; }音量走的是基类统一接口内部透传到 esp_codec_devvoid Es8389AudioCodec::SetOutputVolume(int volume) { ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, volume)); AudioCodec::SetOutputVolume(volume); }完整实现见 main/audio/codecs/es8389_audio_codec.cc。ES8389调参与实测音量、增益与硬件电压输出音量0-100默认 70板键以 10 为步进加减拉到 100 前听感变化明显100 时小功放容易削波。输入增益dB默认 40构造后通过esp_codec_dev_set_in_gain写入调高后远场拾音更清楚过高会带底噪。硬件电压5.0V / 3.3Vpa_voltage与codec_dac_voltage按功放和 DAC 实际供电填写写错会直接决定声音大小上限。采样率24kHz输入输出必须一致构造函数里有 assert 兜底换 16k 记得两侧同步改。调完参剩下的就是在真机上排查问题。ES8389常见坑与排查无声、杂音与再次变哑完全无声→ 先查功放是否真的被使能。该板 PA_EN 走 IO 扩展器XIO_SPK_EN确认其输出电平直连 GPIO 的板子确认 PA_EN 拉高。播放一阵后再次播放变哑→ IDF 6 的 ESP32-S3 双工通道重新 open TX 会失败。源码用静音代替关闭输出设备见 EnableOutput 注释自定义时别改成 close。杂音或断断续续→ 检查输入输出采样率是否一致、MCLK 是否稳定立体声输出时单声道 PCM 需复制到 L/R 两路否则 I2S 欠载。拾音小声、远场听不清→ 先把输入增益从 40 往上试同时确认麦克风偏置电源正常。I2C 扫不到 ES8389→ 核对地址宏ES8389_CODEC_DEFAULT_ADDR与 SDA/SCL 上拉I2C 总线挂错端口也常见。延伸探索更多源码与开发板示例main/audio/codecs/es8389_audio_codec.h接口定义看懂构造参数与虚函数全貌main/boards/alientek/atk-dnesp32s3-box2-wifi/4G/WiFi 双版本的完整接线实例main/audio/README.md编解码器之后PCM 如何流进唤醒与 Opus 链路如果你在自己的板子上接 ES8389 遇到了音频问题欢迎在评论区贴出现象一起排查。【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表