# Audio SR/VC 切换示例 ## 简介 本示例演示如何在同一个应用中同时创建两个 `audio_recorder` 实例: - 一个使用 `AFE_TYPE_SR` - 一个使用 `AFE_TYPE_VC` 程序启动后会同时打开这两个 recorder,但默认只让 `SR` 路工作,`VC` 路先暂停。用户可以通过 console 命令在 `SR` 和 `VC` 之间切换,底层使用的是 `audio_recorder_pause()` 和 `audio_recorder_resume()`。 ## 这个示例想解决什么问题 在一些同时需要以下能力的场景中,单独只用 `SR` 路并不一定最合适: - 需要唤醒功能 - 又希望拿到质量更严格的 AEC 后数据 这里需要特别强调一点: - `SR` 路通常用于带唤醒的语音识别场景 - 当 `SR` 工作在唤醒模式时,AEC 后输出的数据效果通常没有 `VC` 路那么理想 所以,如果你的应用对 AEC 之后的数据质量要求比较严格,同时又必须保留唤醒功能,可以考虑: - 在需要唤醒检测时使用 `SR` - 在更关注 AEC 后音频质量时切换到 `VC` 这个示例就是用来演示这种 `SR` / `VC` 切换方案的。 ## 示例实现方式 本示例内部同时创建了两路 recorder handle: - `sr`:`AFE_TYPE_SR`,开启 wakeup 相关能力 - `vc`:`AFE_TYPE_VC`,不使用 wakeup 切换方式不是重新 open / close,而是: - 先 `pause` 当前不需要的那一路 - 再 `resume` 目标路 这种做法的优点是: - 切换逻辑简单 - 避免反复 open / close 带来的开销 - 更适合做实时模式切换验证 ## Console 命令 示例启动后会进入 console,提示符为: ```text sr_vc> ``` 支持的命令非常简单: - `rec sr` 切换到 `SR` 路,暂停 `VC` - `rec vc` 切换到 `VC` 路,暂停 `SR` - `rec pause` 暂停两路 recorder - `rec status` 打印当前两路 recorder 的状态、AFE 类型和 handle ## 适合验证的场景 - 验证 `AFE_TYPE_SR` 和 `AFE_TYPE_VC` 的输出差异 - 对比唤醒模式下和非唤醒模式下的 AEC 后数据效果 - 验证应用中通过 `pause` / `resume` 做双路切换是否稳定 - 作为后续产品化方案的参考样例 ## 硬件要求 本示例基于带麦克风和扬声器的音频开发板,建议使用支持 AFE 的 ESP 平台开发板进行验证,例如: - ESP32-S3-KORVO2-V3 ## 使用说明 1. 执行 `. ./prebuild.sh`,按提示选择开发板 2. 编译并烧录示例 3. 打开串口 monitor,进入 console 4. 使用 `rec sr`、`rec vc`、`rec pause`、`rec status` 进行切换和观察 ## 关键结论 如果你的场景: - 既需要唤醒 - 又对 AEC 后数据质量要求比较高 那么可以考虑同时保留 `SR` 和 `VC` 两路 recorder,并通过 `pause` / `resume` 在两者之间切换使用,而不是只固定使用单一路径。
To create a project from this example, run:
idf.py create-project-from-example "jason-mao/av_processor=0.6.0:audio_sr_vc_switch"