这篇写什么?
本文解读 DSPC 官方 TalkToSampleApp:讲清「TalkTo 洗麦 → Sensory 听词 → Playback 播与 duck」的标准挂法,并对照到 Android TV 产品里该由谁实现。
产品整机分层见 专栏③。
一、Sample 在解决什么问题?
远场语音的物理现实:
麦拾音 = 用户说话 + 喇叭漏音 + 环境噪声
若不先做前端,唤醒模型会误触或漏检。Sample 的分工是:
| 组件 | 职责 |
|---|---|
| TalkTo(vuiProcessor) | 多麦 + 播放 Ref → AEC/波束/降噪 → 干净单声道 |
| Sensory Spotter | 在干净语音上判唤醒词 / 命令词 |
| Playback AWE | 播音乐,并提供 Ref、支持 duck |
这与 TV 产品相同;差别只在 进程与系统服务怎么包一层。

实线:音频。虚线:控制。
二、双 AWE 实例:为什么拆开?
| 实例 | 图 | 作用 |
|---|---|---|
vuiProcessor |
vui_10x6.awb |
TalkTo 前端 |
playbackProcessor |
playback_2x2.awb |
回放 + duck |
原理:
- 采样率/通道/线程 与调参端口可独立(VUI 口 / Speaker 口)。
- Playback 出口必须 回灌 2ch Ref 给 TalkTo,否则 AEC 无参考。
- 业务上「播」和「听」生命周期不同,拆实例更清晰。
对照 Android:Playback 对应播放链(Track→HAL→EQ);TalkTo 对应采集前端(最终暴露给 Record 或只喂 WWE)。
三、音频通路(对着图读)
Mic 阵列 → audioStream → TalkTo(vui)
├─ 1ch → trigger Spotter(唤醒)
└─ 1ch → command Spotter(命令)
歌曲 → playbackProcessor → Speaker
└─ 2ch Ref 回灌 TalkTo(AEC)
要点:
- 多麦不进 Sensory,只进 TalkTo。
- Sensory 输入已是「像近讲一样」的单声道。
- Ref 与 Mic 时间对齐不好,AEC 会失效——产品上 LoopBack 要保证同源时钟。
四、控制通路:VRState 与 duck
| 信号 | 方向 | 含义 |
|---|---|---|
| VRState | Spotter → TalkTo | 已进入语音交互;前端改参数 |
| VAD freeze after trigger | 唤醒 Spotter → 命令 Spotter | 唤醒前不乱认命令 |
| duckPlayback | 业务 → Playback | 压低音乐,抬高可懂度 |
原理:唤醒不是「只改 App UI」,还要 改前端工作点。TV 上等价动作是:Event Proxy 通知 App 的同时,HAL 写 VRState(见 ④)。
五、映射到 Android TV(避免照搬错层)
| Sample | Android TV 产品 |
|---|---|
| 同进程 Spotter 回调 | HAL/DSP → Event Proxy → Voice App |
| 本进程读干净 PCM 播命令 | 唤醒后 AudioRecord → ASR |
| Seeed audioStream | ALSA PDM/TDM + LoopBack + HAL |
| 双 AWE 同 OS | Playback 可在 ARM HAL;TalkTo/WWE 常在 HiFi5 |
Sample 回答 算法如何串;产品回答 串在哪一层、事件如何跨进程。
小结
- 标准挂法:TalkTo 出干净语音,Sensory 只做识别,Playback 负责听感与 Ref。
- 产品必保留:Ref 回灌、VRState、事件与 PCM 分离。
下一篇:从 Android 栈拆 TV 整机架构图。
评论
还没有评论,来做第一个吧
读完了不评论,作者会以为你在沉思