174 lines
4.2 KiB
Markdown
174 lines
4.2 KiB
Markdown
# 语音唤醒异常问题分析
|
||||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本文档记录从日志文件推断ADB命令的分析流程,用于语音唤醒异常问题的排查。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 分析案例
|
|||
|
|
|
|||
|
|
### 输入:log 录音分析.md
|
|||
|
|
|
|||
|
|
**文件特征:**
|
|||
|
|
- 文件大小:578KB
|
|||
|
|
- 行数:9001行
|
|||
|
|
- 无直接adb命令记录
|
|||
|
|
|
|||
|
|
### 分析步骤
|
|||
|
|
|
|||
|
|
#### 1. 查看文件开头内容
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
pid: 3211
|
|||
|
|
pid: 3294
|
|||
|
|
...
|
|||
|
|
Output thread 0xf2164c184c40, name AudioOut_D, tid 3103, type 0 (MIXER):
|
|||
|
|
I/O handle: 13
|
|||
|
|
Sample rate: 48000 Hz
|
|||
|
|
HAL format: 0x1 (AUDIO_FORMAT_PCM_16_BIT)
|
|||
|
|
Channel count: 8
|
|||
|
|
...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2. 识别日志类型
|
|||
|
|
|
|||
|
|
根据关键内容特征判断:
|
|||
|
|
|
|||
|
|
| 特征 | 内容示例 | 判断 |
|
|||
|
|
|------|----------|------|
|
|||
|
|
| 线程信息 | Output thread, Input thread | AudioFlinger dump |
|
|||
|
|
| 音频参数 | Sample rate, HAL format, Channel count | 音频系统状态 |
|
|||
|
|
| 设备信息 | AUDIO_DEVICE_OUT_BUS | 音频设备配置 |
|
|||
|
|
| 时间戳统计 | Timestamp stats, jitterMs | 性能数据 |
|
|||
|
|
|
|||
|
|
**结论:** 这是一份 AudioFlinger 服务 dump 日志
|
|||
|
|
|
|||
|
|
#### 3. 推断ADB命令
|
|||
|
|
|
|||
|
|
根据日志类型推断:
|
|||
|
|
|
|||
|
|
| 日志类型 | 推断命令 |
|
|||
|
|
| ----------------- | --------------------------------------- |
|
|||
|
|
| AudioFlinger dump | `adb shell dumpsys media.audio_flinger` |
|
|||
|
|
| AudioPolicy dump | `adb shell dumpsys media.audio_policy` |
|
|||
|
|
| 完整音频状态 | `adb shell dumpsys audio` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 常见音频Dump命令汇总
|
|||
|
|
|
|||
|
|
| 命令 | 说明 | 应用场景 |
|
|||
|
|
| --------------------------------------- | ---------------- | --------- |
|
|||
|
|
| `adb shell dumpsys media.audio_flinger` | AudioFlinger服务状态 | 录音/播放问题排查 |
|
|||
|
|
| `adb shell dumpsys media.audio_policy` | 音频策略服务状态 | 设备切换问题排查 |
|
|||
|
|
| `adb shell dumpsys audio` | 完整音频系统状态 | 全面音频问题排查 |
|
|||
|
|
| `adb shell dumpsys media.camera` | 摄像头服务状态 | 摄像头问题排查 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## AudioFlinger Dump关键字解读
|
|||
|
|
|
|||
|
|
### Output Thread(输出线程)
|
|||
|
|
|
|||
|
|
| 字段 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| Sample rate | 采样率(如48000Hz) |
|
|||
|
|
| HAL format | 硬件音频格式(PCM_16_BIT) |
|
|||
|
|
| Channel count | 通道数 |
|
|||
|
|
| Channel mask | 通道掩码 |
|
|||
|
|
| Output device | 输出设备(如AUDIO_DEVICE_OUT_BUS) |
|
|||
|
|
| Frames written | 已写入帧数 |
|
|||
|
|
|
|||
|
|
### Input Thread(输入线程)
|
|||
|
|
|
|||
|
|
| 字段 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| Audio source | 音频源(如AUDIO_SOURCE_MIC) |
|
|||
|
|
| Input device | 输入设备 |
|
|||
|
|
| Frames read | 已读取帧数 |
|
|||
|
|
|
|||
|
|
### Timestamp Stats(时间戳统计)
|
|||
|
|
|
|||
|
|
| 字段 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| jitterMs | 抖动(毫秒) |
|
|||
|
|
| localSR | 本地采样率 |
|
|||
|
|
| err | 错误计数 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 问题排查流程
|
|||
|
|
|
|||
|
|
### 语音唤醒异常排查步骤
|
|||
|
|
|
|||
|
|
1. **开启录音保存**
|
|||
|
|
```bash
|
|||
|
|
setprop persist.pcm.dump 9
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **触发语音唤醒**
|
|||
|
|
- 讲话唤醒同行者
|
|||
|
|
- 可多次尝试
|
|||
|
|
|
|||
|
|
3. **获取音频系统状态**
|
|||
|
|
```bash
|
|||
|
|
adb shell dumpsys media.audio_flinger > audio_flinger.log
|
|||
|
|
adb shell dumpsys audio > audio.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **关闭录音保存**
|
|||
|
|
```bash
|
|||
|
|
setprop persist.pcm.dump 0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
5. **提取录音文件**
|
|||
|
|
```bash
|
|||
|
|
adb pull /data/misc/audioserver/dump_audio_9.pcm
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 分析要点
|
|||
|
|
|
|||
|
|
| 问题类型 | 检查内容 |
|
|||
|
|
|----------|----------|
|
|||
|
|
| 无法唤醒 | Input thread状态、Frames read计数 |
|
|||
|
|
| 声音异常 | jitterMs抖动、err错误计数 |
|
|||
|
|
| 设备问题 | Input/Output device配置 |
|
|||
|
|
| 格式问题 | HAL format、Sample rate |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 从日志推断命令的方法总结
|
|||
|
|
|
|||
|
|
### 判断流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. 查看文件开头内容
|
|||
|
|
↓
|
|||
|
|
2. 识别关键特征字段
|
|||
|
|
↓
|
|||
|
|
3. 对照常见dump格式
|
|||
|
|
↓
|
|||
|
|
4. 推断具体adb命令
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 特征对照表
|
|||
|
|
|
|||
|
|
| 日志特征 | 对应命令 |
|
|||
|
|
|----------|----------|
|
|||
|
|
| Output/Input thread | dumpsys media.audio_flinger |
|
|||
|
|
| AudioPolicy相关 | dumpsys media.audio_policy |
|
|||
|
|
| ActivityManager | dumpsys activity |
|
|||
|
|
| PackageManager | dumpsys package |
|
|||
|
|
| SurfaceFlinger | dumpsys SurfaceFlinger |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 参考文件
|
|||
|
|
|
|||
|
|
- [[项目文档/徐工/log 录音分析.md]] - 原始日志文件
|
|||
|
|
- [[项目文档/徐工/语音.md]] - 语音模块开发文档
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*文档整理日期: 2026-05-27*
|