下面的文字先用一段总览阐明关键结论,再分节细述:在 Android 文件系统里,微信语音消息实际保存在 Tencent/MicroMsg/<32 位哈希>/voice2
目录下,文件扩展名常见为 .silk
或 .aud
。只要把这些文件复制到电脑端,再用 silk-v3-decoder
或者直接调用 ffmpeg
即可批量转成 wav/mp3
。全程无需 root,但在 Android 11 及以上需要借助 adb pull
或微信 PC 端的“备份与恢复”功能。转换脚本可以用不到五十行的 Python 完成,并支持一次性扫描、重命名和格式转换,方便归档或后期声音分析。
文件到底藏在哪
-
微信会把所有多媒体内容集中放进
sdcard/Tencent/MicroMsg
₁,然后再用用户 Uin 的 MD5 哈希当子目录名。语音对应的具体路径是voice2
₂。 -
早期版本路径固定;7.0.17 之后微信把同名目录移动到了应用专属沙盒,但通过
adb pull /sdcard/Android/data/com.tencent.mm/...
依然可访问₃。 -
如果不想走 ADB,官方桌面版微信也能“备份聊天记录到电脑”,备份完成后在 PC 的
Documents\WeChat Files\<微信号>\Backup\<日期>\voice2
找到同样的.aud/.silk
文件₄。 -
每一段语音文件名形如
msg_18fd53c1b1a7c8f1.silk
,时间戳包含在 SQLite 消息数据库里,所以需要后续脚本来把“文件→时间”对照补齐₅。
(Fireebok, My Assignment Help, XDA Forums, MobileTrans, GitHub)
为什么不能直接播放
-
.silk
和.aud
都是基于 Skype Silk v3 的语音编码格式,体积小、延迟低,但系统播放器没有对应解码器₆。 -
少数
.aud
其实是裁掉 AMR 文件头 (#!AMR\n
) 的宽带 AMR,只要在文件头补回 6 字节即可直接播放₇。 -
更通用的方法是用开源
silk-v3-decoder
将 Silk 转成 PCM,再交给ffmpeg
或sox
封装为wav/mp3
₈。
(Forensic Focus, GitHub, Stack Overflow)
把语音拷出来:三种途径
1. USB 大容量存储或文件管理器
把手机连到电脑,允许 MTP;在手机存储器“内部共享存储”里按上一节的路径直接复制。简单直观,但 Android 11 开始微信目录被 SAF 隐藏,需要借助电脑端“文件管理”应用才能看到。
2. ADB 命令行
开发者模式下执行
adb shell "ls /sdcard/Android/data/com.tencent.mm/MicroMsg"
adb pull /sdcard/Android/data/com.tencent.mm/MicroMsg/<hash>/voice2 ./wechat_voice
这种方式不受系统版本限制;复制速度也最快₉。
3. PC 端备份聊天记录
微信 Windows/Mac 客户端 → 三条横线 → 备份与恢复
→ 备份聊天记录到电脑
,结束后在备份目录拿到语音文件₄。
(GitHub, MobileTrans, Reddit)
批量转换脚本(Python 版本)
下面脚本示例兼顾三件事:
-
遍历
voice2
目录找出所有.silk
/.aud
。 -
通过 hashed 文件名关联 SQLite 消息数据库,把语音重命名为“聊天对象_时间戳.wav”。
-
调用
silk-v3-decoder
+ffmpeg
输出wav
。
运行准备:
安装 Python 3.x、
ffmpeg
₁₀,并把silk-v3-decoder
编译好的decoder
放到 PATH。复制
MM.sqlite
(微信消息数据库)到同一目录;或者去掉与数据库有关的几行,让脚本只做格式转换。
#!/usr/bin/env python3
import subprocess, sqlite3, pathlib, re, shutil, datetime
SRC_DIR = pathlib.Path('wechat_voice') # voice2 源目录
OUT_DIR = pathlib.Path('exported_voice') # 导出目录
DB_PATH = pathlib.Path('MM.sqlite') # 消息数据库
OUT_DIR.mkdir(exist_ok=True)
conn = sqlite3.connect(DB_PATH) # 读取消息记录
cur = conn.cursor()
def silk_to_wav(src: pathlib.Path, dst: pathlib.Path):
tmp = src.with_suffix('.pcm')
subprocess.run(['decoder', src, tmp], check=True) # Silk→PCM
subprocess.run(['ffmpeg', '-y', '-f', 's16le', '-ar', '24000',
'-ac', '1', '-i', tmp, dst], check=True) # PCM→WAV
tmp.unlink()
for f in SRC_DIR.rglob('*.silk'):
# 通过文件名里的 md5 查找聊天对象 & 时间
md5 = f.stem.split('_')[1]
row = cur.execute("SELECT talker, createTime FROM message WHERE msgSvrId=?",
(md5,)).fetchone()
if row:
peer, ts = row
ts_str = datetime.datetime.fromtimestamp(ts/1000).strftime('%Y%m%d_%H%M%S')
target = OUT_DIR / f"{peer}_{ts_str}.wav"
else:
target = OUT_DIR / f"{f.stem}.wav"
silk_to_wav(f, target)
print('全部完成!')
需要跨平台?把
ffmpeg
的调用改成pydub.AudioSegment.from_file
也行,只是速度会慢一些。
(GitHub, FFmpeg, Ask Ubuntu)
批量转换的命令行一键式方案
如果你更习惯 Bash:
find ./voice2 -type f -name '*.silk' -print0 | \
while IFS= read -r -d '' f; do
b=$(basename "$f" .silk)
decoder "$f" "$b.pcm"
ffmpeg -y -f s16le -ar 24000 -ac 1 -i "$b.pcm" "out/${b}.wav"
rm "$b.pcm"
done
-
上面假设
decoder
与ffmpeg
已经加入 PATH。 -
如果遇到
.aud
文件,把find
的匹配后缀改为-name '*.aud'
,并在循环顶部mv "$f" "$f.silk"
把后缀先统一₇。
(Stack Overflow, forensenellanebbia.blogspot.com)
转换质量与格式选择
-
Silk 原始采样率 24 kHz,位深 16 bit 单声道。
ffmpeg
默认为pcm_s16le
,可以保留原品质直接封装成wav
,体积 ~200 KB/s₁₁。 -
若需更小体积,例如发送邮件,可追加
-codec:a libmp3lame -qscale:a 5
得到每分钟不到 100 KB 的mp3
。 -
长期归档推荐保留无损
flac
:ffmpeg -i in.wav -c:a flac out.flac
₁₂。
(FFmpeg, Super User)
隐私、合规与后续处理建议
-
导出聊天语音一定要征得所有对话参与者同意,尤其在个人信息保护法实施地区。
-
若打算做后期降噪或语音识别,转换为 16 kHz/16 bit PCM 可直接喂给常见 ASR 模型。
-
重要纪念语音可再用 iTunes、云盘双重备份,并定期校验 MD5。
参考文献与资源索引
-
Fireebok 教程展示路径
Tencent/MicroMsg/.../voice2
(Fireebok) -
Forensic 论文对 WeChat 媒体文件夹的描述 (My Assignment Help)
-
XDA 讨论 Android 7.0.17 之后路径变化 (XDA Forums)
-
Wondershare MobileTrans 讲解微信桌面备份功能 (MobileTrans)
-
wechat-dump 项目说明如何从 SQLite 映射文件名 (GitHub)
-
StackOverflow: Silk → AMR 转码需求 (Stack Overflow)
-
ForensicFocus 通过补 AMR 头即可播放 (Forensic Focus)
-
silk-v3-decoder 仓库与用法示例 (GitHub)
-
Reddit 经历备份/复制语音经验分享 (Reddit)
-
ffmpeg 官方文档示例命令 (FFmpeg)
-
AskUbuntu 对
pcm_s16le
默认输出的说明 (Ask Ubuntu) -
SuperUser 讨论如何无损提取音频 (Super User)
这篇指南覆盖了路径定位、文件复制、格式解码与批量脚本自动化等关键环节,并特别强调了隐私与合规注意事项。按文中步骤操作,即可把安卓微信里的所有语音消息安全、高效地导出为通用 wav/mp3
文件。祝顺利。