在哪里启用可语音打断的实时对话模式
在哪里启用可语音打断的实时对话模式,在配置menuconfig里面哪个选项,echoear的板子
Use Device AEC 设置为 true
使用设备 AEC 设置为 true
这个使用小问题,每次当我说话打断的时候,前面几个字不会被录入
使用设备 AEC 设置为 true
这个使用小问题,每次当我说话打断的时候,前面几个字不会被录入
可以在后台历史对话里查看音频,分析具体原因。
怎么打开Use Device AEC,我在menuconfig中没有这个配置,只有server aec
diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild
index 45adc39..7b98a7a 100644
--- a/main/Kconfig.projbuild
+++ b/main/Kconfig.projbuild
@@ -508,7 +508,7 @@ config USE_AUDIO_PROCESSOR
config USE_DEVICE_AEC
bool "Enable Device-Side AEC"
default n
- depends on USE_AUDIO_PROCESSOR && (BOARD_TYPE_ESP_BOX_3 || BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_LITE || BOARD_TYPE_LICHUANG_DEV || BOARD_TYPE_ESP32S3_KORVO2_V3 || BOARD_TYPE_ESP32S3_Touch_AMOLED_1_75 || BOARD_TYPE_ESP32S3_Touch_AMOLED_2_06 || BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_4B || BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_XC || BOARD_TYPE_ESP_S3_LCD_EV_Board_2)
+ depends on USE_AUDIO_PROCESSOR && (BOARD_TYPE_ESP_BOX_3 || BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_LITE || BOARD_TYPE_LICHUANG_DEV || BOARD_TYPE_ESP32S3_KORVO2_V3 || BOARD_TYPE_ESP32S3_Touch_AMOLED_1_75 || BOARD_TYPE_ESP32S3_Touch_AMOLED_2_06 || BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_4B || BOARD_TYPE_ESP32P4_WIFI6_Touch_LCD_XC || BOARD_TYPE_ESP_S3_LCD_EV_Board_2 || BOARD_TYPE_ECHOEAR)
help
因为性能不够,不建议和微信聊天界面风格同时开启
这样修改,然后 clean,重新 menuconfig,就能看到 Device AEC 选项
@78 我是用的v1.9.2版本,看Kconfig.projbuild已经是上面的调整后的代码了,但是idf.py menuconfig出来的配置界面还是没有Use Device AEC这个选项
你选择的 BoardType 为 面包板,不支持 Device AEC
@78 好的,虾哥, 已经解决了,应该是上面选择的开发板需要在depend on条件里面,目前用的立创s3开发板,有一些问题请教一下: 1 如果开了AEC,周围环境嘈杂一点,很容易就打断了,这个有啥好的解决方案没,调整云端VAD阈值吗?
2 现在新加了一个线程,定时往云端发送图片,发现websocket协议发送23k图片数据需要180ms,加上图片的转换格式和编码,整个发送流程500-600ms, 用mqtt协议比较麻烦,分片发送23k数据,但是耗时快了很多,发送时间28ms,两个协议的差距太大了,无法解释,请问有遇到过类似问题吗, 是mqtt协议占用资源多吗,因为使用mqtt明显感受到afe fetch数据的线程慢了很多,导致buffer溢出,请问如果是我这种情况,建议使用mqtt还是websocket呢?
- 参考这个配置:https://github.com/78/xiaozhi-esp32/issues/1292#issuecomment-3402367406
- 如果频率高,首选 websocket,如果频率低,考虑 HTTP。mqtt 适合低频数据包小的场景
@78 开启AEC容易被打断的情况是,设备处于speaking状态,本来收到TTS数据准备播放或者正在播放的,收到一点外界语音就马上被打断,切换到聆听状态,如果外界有嘈杂的声音,一直被打断,一直聆听,这种情况有啥好的解决方法吗,对这块的知识不太了解,
目前针对吵杂环境没有解决办法,可以想象一下把自己关在房子里,外面很多人在说话,有些是在跟你说的,有些不是,但是跟你说的时候不会提及你的名字,只能靠上下文猜测,目前的模型还不具备这方面的能力。
@78 好的,理解了,非常感谢虾哥的耐心回复。
目前针对吵杂环境没有解决办法,可以想象一下把自己关在房子里,外面很多人在说话,有些是在跟你说的,有些不是,但是跟你说的时候不会提及你的名字,只能靠上下文猜测,目前的模型还不具备这方面的能力。
现在有没有办法做到唤醒词打断呢?就是当设备说话的时候,再次说唤醒词打断设备说话
大部分S3芯片的开发板设备都支持,你可以拿面包板来测试唤醒词打断。
大部分S3芯片的开发板设备都支持,你可以拿面包板来测试唤醒词打断。
好的,我刚刚看了一下,目前只有afe唤醒词支持在说话的时候被打断
// Only AFE wake word can be detected in speaking mode
audio_service_.EnableWakeWordDetection(audio_service_.IsAfeWakeWord());
大部分S3芯片的开发板设备都支持,你可以拿面包板来测试唤醒词打断。
好的,我刚刚看了一下,目前只有afe唤醒词支持在说话的时候被打断
// Only AFE wake word can be detected in speaking mode audio_service_.EnableWakeWordDetection(audio_service_.IsAfeWakeWord());
是的,没有AEC的话,可能需要比较大声才能被mic听到
大部分S3芯片的开发板设备都支持,你可以拿面包板来测试唤醒词打断。
好的,我刚刚看了一下,目前只有afe唤醒词支持在说话的时候被打断
// Only AFE wake word can be detected in speaking mode audio_service_.EnableWakeWordDetection(audio_service_.IsAfeWakeWord());是的,没有AEC的话,可能需要比较大声才能被mic听到
研究了一阵 感觉 AFE 这一套个人开发者还是太难调试了, 麦克风和音箱在一起的情况下, 录到的喇叭声音比人声大好多, 还有震动问题, 而且这种小喇叭再经过外壳震动 声音很可能已经失真 和参考音乐又差了一截. 然后 AEC 和 VAD 协同还是个问题, AEC 不完美的话 VAD 又收影响. 这个个人要调试实在太麻烦了, 软硬件条件都不具备.
市场上的开发板只是简单的集成个麦克风 好一点儿的可能位置啥的参考了乐鑫建议, 我感觉根本没有声学实测. 最好还是乐鑫或者有实力点儿的开发板商, 出一两种形态的单独的麦克风子板, 以及配套的隔音 导音 和安装附件 全面测试 给出全面建议的参数.
项目配置里有一个 audio test server 可以打开 USE_AUDIO_DEBUGGER 的选项可以打开,然后把板子录制的 PCM 音频通过 UDP 发送到本地的电脑上,本地电脑通过启动 scripts/audio_debug_server.py 来采集音频,自动转成 wav 文件,可以用 Audacity 音频软件或者 https://editor.audio 之类的软件打开。
项目配置里有一个 audio test server 可以打开 USE_AUDIO_DEBUGGER 的选项可以打开,然后把板子录制的 PCM 音频通过 UDP 发送到本地的电脑上,本地电脑通过启动 scripts/audio_debug_server.py 来采集音频,自动转成 wav 文件,可以用 Audacity 音频软件或者 https://editor.audio 之类的软件打开。
谢谢! 没注意到这个选项, 之前看乐鑫的例程 AEC debugger 存在 SD 卡里 好麻烦....
另外 请教有什么提高调试效率的工具和方法吗? 我想把所有可能修改调试的参数统统写到 nvs 里, 用那个 advanced console 改. 否则一编一遍效率太低了.
你可以启动的时候通过局域网 HTTP 拉取一下参数来配制,要先连接 Wi-Fi
项目配置里有一个 audio test server 可以打开 USE_AUDIO_DEBUGGER 的选项可以打开,然后把板子录制的 PCM 音频通过 UDP 发送到本地的电脑上,本地电脑通过启动 scripts/audio_debug_server.py 来采集音频,自动转成 wav 文件,可以用 Audacity 音频软件或者 https://editor.audio 之类的软件打开。
谢谢! 没注意到这个选项, 之前看乐鑫的例程 AEC debugger 存在 SD 卡里 好麻烦....
另外 请教有什么提高调试效率的工具和方法吗? 我想把所有可能修改调试的参数统统写到 nvs 里, 用那个 advanced console 改. 否则一编一遍效率太低了.
我不是很确定 但这个应该一路是mic 一路是playback参考对吧 无论是否打开 AEC 参考应该都在 mic录到的喇叭声音比用户声音大10倍以上 但是用户声音分辨率仍然够用 录到的喇叭声音可能已经有点儿clipping 可以调小一点音量 但mic增益应该不用改 两者也是同步减小 感觉没有什么意义 playback部分和用户声音音量大小类似, 听起来是清楚的, 这个是内部的, 感觉不存在增益的概念吧 有也只是计算用途?
所以我理解 AEC 应该做的大概是 mic_clean = mic - playback*10 或者 mic_clean = mic/10 - playback 我看文档说这个比例是自动调整的 只要录清楚就行 (但是不知道我现在这个情况是否超过了极限) 另外有个 AGC 感觉是后面的事情 其他看起来只有几个类型选择 没提供太多可调整的参数
虽然用户声音和喇叭差10倍 但听起来都是清楚的 AEC应该还是有条件做好吧. 不知道有没有办法录 AEC 之后的声音?
你可以启动的时候通过局域网 HTTP 拉取一下参数来配制,要先连接 Wi-Fi
好 这个更方便