Files
Obsidian/项目文档/徐工/语音唤醒异常问题分析.md
T

174 lines
4.2 KiB
Markdown
Raw Normal View History

2026-11-05 14:35:04 +08:00
# 语音唤醒异常问题分析
## 概述
本文档记录从日志文件推断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*