随着各种AI助手的普及,把聊天记录喂给AI进行总结、检索甚至分析,已经成了很多搞机党的日常习惯。对于文字消息,像 wx-cli 这类开源工具已经能做得很好,能批量导出数据库并解析成可读文本。

但是,大家聊得嗨的往往是语音条。长篇大论的语音消息,不仅无法直接复制,更别提导出给AI处理了。很多人都在问:文字能导,那语音音频咋办?

今天就来聊聊这个痛点,并给出几种可行的解决方案。

核心难点在哪里?

微信语音之所以难搞,主要有两个“拦路虎”:

  1. 私有音频格式:Android端的微信语音通常采用 SILK 格式(一种窄带音频编码),播放器直接放不了,需要先转码。
  2. 数据库混淆:语音文件在存储时,文件名通常经过哈希处理,与数据库中的记录对应关系虽然存在,但直接找文件比较费劲,而且文件往往散落在 MicroMsg/[Hash]/Audio 目录下的一大堆乱码文件夹里。

解决方案一:批量转码 + 本地Whisper识别

如果你不想处理复杂的数据库逻辑,只想把手机里的语音文件转成文字,可以走“曲线救国”路线。

Whisper模型运行截图

使用Whisper模型批量处理音频文件的代码演示

第一步:转码 SILK 为 WAV/MP3

网上有不少 SILK 解码器,比如在 GitHub 上搜索 silk-v3-decoder,这是一个很经典的工具。你需要从手机里把那个 Audio 目录整体拷出来(通常需要Root或者使用混迹机圈的各种文件传输助手),然后批量处理。

  • 环境准备:Python 环境。
  • 操作思路:写个简单的脚本,遍历所有 .silk.amr 文件,利用解码库将其转为通用的 .wav 格式。这样你就得到了一堆普通的音频文件。

第二步:使用 Whisper 进行本地转录

有了 WAV 文件,剩下的就简单了。OpenAI 开源的 Whisper 模型是目前处理语音转文字的神器,而且支持中文。

你可以直接安装 openai-whisper 库:

pip install openai-whisper

然后写个脚本批量跑:

import whisper
import os

model = whisper.load_model("base") # 根据显存选 medium 或 large

def transcribe_folder(folder_path):
    for filename in os.listdir(folder_path):
        if filename.endswith(".wav"):
            file_path = os.path.join(folder_path, filename)
            result = model.transcribe(file_path, language='zh')
            print(f"文件: {filename}\n内容: {result['text']}\n---")
            # 这里可以写入txt文件保存

transcribe_folder("你的音频文件夹路径")

这种方法的优点是完全本地化,隐私安全,免费。缺点是需要一定的动手能力,且无法直接关联“谁发的这条语音”,只能得到一堆纯文本。

解决方案二:结合数据库与云端API(高阶玩法)

如果你想做类似 wx-cli 那种结构化导出(带时间、带发送人、带内容),那就得动数据库了。

1. 提取数据关联

微信数据库(通常是 MSG0.db 等文件)里,Messages 表中记录了每一条消息。对于语音消息,会包含指向音频文件的路径或哈希值。通过 SQL 查询可以将“聊天对象、时间戳、音频文件路径”提取出来。

2. 自动化流程构建

构建一个自动化脚本(Python 最合适):

  • 读取数据库,筛选出类型为 34(微信语音类型)的记录。
  • 找到对应的 SILK 文件。
  • 调用转码工具转为 WAV。
  • 调用转录 API(这里可以接本地 Whisper,也可以接阿里云、腾讯云或 OpenAI 的 Whisper API 以提高速度)。
  • 将转回的文字写回数据库记录,或导出为 JSON/Markdown。

方案优势:信息完整,能还原聊天上下文。 方案劣势:数据库加密是最大难题(新版本微信加密逻辑复杂),且开发成本较高。

现成的开源工具推荐

如果不想完全自己造轮子,可以在 GitHub 上关注以下关键词的项目,这类工具通常在迭代中:

  • WeChatMsg:这是一个非常热门的项目,虽然主打图文导出,但也集成了语音转文字的功能(通常调用的是本地模型)。它会自动帮你处理数据库解密和SILK转码,大大降低了门槛。
  • PC微信解密工具:配合数据库查看工具(如 SQLite Expert),先手动解密数据库,提取音频文件,再套用方案一。

总结与建议

  • 小白用户:直接找已封装好的图形化工具(如 WeChatMess 相关衍生工具),界面操作,一键导出。注意导出时选择包含语音识别。
  • 极客玩家:建议研究 wx-cli 的扩展,或者写 Python 脚本对接 Whisper。先搞定 SILK 转 WAV,再搞定 Whisper 调用,分步实施。
  • 隐私党:务必选择本地 Whisper 模型,不要把语音上传到不知名的云端接口,毕竟聊天记录可能包含敏感信息。

技术本身不难,难的是在于微信的封闭性。只要迈出“提取文件”和“格式转换”这两步,把语音变成喂给 AI 的语料,就是水到渠成的事情了。

标签: none

评论已关闭