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* |