Files
Obsidian/项目文档/徐工/语音唤醒异常问题分析.md
2026-11-05 14:35:04 +08:00

174 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 语音唤醒异常问题分析
## 概述
本文档记录从日志文件推断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*