audio_sr_vc_switch

Example of the component jason-mao/av_processor v0.6.0
# 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"

or download archive (~14.63 KB)