大家好,我是阿布

前几天翻了翻我手机里的各种录音,有通话录音、开会录音、播客录音足足几百条。

这些录音录完以后呢?基本就躺在那了,再也没打开过。

但 AI 时代,我们可以让这些宝贵的数字资产持续的为我们提供价值,为我们做复盘、做规划、挖掘线索、辅助学习、辅助识别知识盲区等等,这都是以前不可想象的。

因此我就开始找了一下解决方案。

最开始想到的就是飞书妙计平台,这个产品也确实优秀,日常飞书会议都是直接转录好,AI 分析后直接生成待办事项。

但奈何免费版本每个月只有 300 分钟转录时间,而且想使用 AI 分析功能每个月需要 69 元。

于是我就和我的 Claude Code 共创出了 Whisper + Pyannote 的解决方案。

经过实际测试,效果还不错,并不输飞书妙计,而且本地搭建还有更多玩法,比如结合 emotion2vec 工具可以为每句对话的情绪打标。

通过 AI 分析后,可以推断你的某个判断或者想法,是在什么样的心情及状态下产生的,可以丰富更多的场景分析,这个是飞书妙计没有的。

先看效果

我用一段电话录音测试,最终输出长这样:

586b5e562894d157ba767bdcb0913790_MD5 2

AI帮我总结了通话核心结论、待办项、以及完整的对话内容。

其实输出的样式并不重要,只要你把关键信息提取出来了,你可以让大模型给你整合输出各种形式的内容。

用了什么工具

这里说一下需要用到的工具:

whisper-cpp:OpenAI 开源的语音识别模型,负责把语音变成文字,C++ 重写版本,针对苹果 M 系列优化比较好,运行速度还不错。(但是这里也强烈建议可以把whisper替换为线上豆包ASR,云端大模型文字识别更准确)

ffmpeg:负责格式转换,因为 Whisper 只能识别 wav 音频,像苹果手机的录音文件都是 m4a 的,所以需要通过 ffmpeg 工具转换一下。

pyannote:专门做说话人分离的模型,负责标注"这段话是谁说的",这个识别是靠说话人的音频来识别的,这样后面分析就比较准确了,不然只靠单纯的音频转文字,可能会不够精准,一定要把人声区分开。

Claude Code:把上面两个工具串起来,自动执行转换、转录、分离、合并,最后输出整理好的对话记录。

whisper 管"说了什么",pyannote 管"谁在说",Claude Code 管"串起来并整理输出"。

而且 Claude Code 还能做一件额外的事:根据上下文修正 whisper 的错别字,比如 whisper 可能会把"石英石"识别成"适应式",让 Claude 根据语境再自动纠正过来。

这里还要提及一个工具是 emotion2vec,它可以识别说话人的情绪,这个玩法就更多了,比如我们在开会、或者通话中,你的这个决策是在什么情绪下做的,是否冲动等等,这个是飞书妙计也不具备的。

不过 emotion2vec 对内存的依赖比较高,我这里只是做了简单的尝试,如果资源足够,其实跑起来也是完全没有问题的,整个流程如下:

2aecc27c0a69b227b39713cd36aba43c_MD5

完整安装步骤

前置条件

  • macOS 系统(Intel 或 Apple Silicon 都行,M 芯片会更快)
  • 能打开终端(应用程序 > 实用工具 > 终端,或者用 Spotlight 搜索"终端")
  • Windows 系统我没有尝试,但思路应该都差不多

第一步:安装 Homebrew

Homebrew 是 Mac 上的软件包管理器,后面装工具都要用它。

打开终端,粘贴这行命令回车:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装过程中会提示你输入电脑密码(输入时屏幕不会显示字符,正常现象),然后等它跑完。

安装完成后,如果你是 Apple Silicon(M1/M2/M3/M4),终端会提示你执行两行命令把 brew 加到环境变量里:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/opt/homebrew/bin/brew shellenv)"

验证是否成功:

brew --version

看到版本号就说明装好了。

如果 GitHub 访问慢导致安装失败,可以用国内镜像:

/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

第二步:安装 ffmpeg 和 whisper-cpp

brew install ffmpeg whisper-cpp

都有输出就说明装好了。

第三步:下载 Whisper 中文语音模型

先创建存放模型的目录:

mkdir -p ~/.local/share/whisper

然后下载 medium 模型(推荐,中文效果和速度平衡):

curl -L -o ~/.local/share/whisper/ggml-medium.bin "https://hf-mirror.com/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin"

第四步:测试 Whisper 转录

先准备一段测试音频。如果你有苹果语音备忘录,可以打开语音备忘录 app,右键一条录音,选"共享" > "存储到文件",保存到桌面。

然后用 ffmpeg 转格式(whisper-cpp 只接受 wav):

ffmpeg -i ~/Desktop/你的录音.m4a -ar 16000 -ac 1 -c:a pcm_s16le /tmp/test.wav -y

运行 whisper 转录:

whisper-cli -m ~/.local/share/whisper/ggml-medium.bin -l zh -f /tmp/test.wav

如果看到带时间戳的中文文字输出,说明 whisper 这部分搞定了。

第五步:安装 Python 3.11

pyannote 需要 Python 3.10 以上版本,macOS 自带的是 3.9,所以要装一个新的:

brew install python@3.11

第六步:创建 Python 虚拟环境并安装 pyannote

创建一个独立的 Python 环境(不会影响系统其他东西):

/opt/homebrew/bin/python3.11 -m venv ~/.local/share/whisper/venv

激活这个环境:

source ~/.local/share/whisper/venv/bin/activate

激活后你会看到终端前面多了个 (venv) 标记。

安装 pyannote(这步比较慢,会下载很多依赖包):

pip install pyannote.audio

等它跑完,看到 Successfully installed 就行。

第七步:配置 HuggingFace 账号和 Token

pyannote 的模型需要从 HuggingFace 下载,需要走一个免费的授权流程。

  1. 1. 打开 https://huggingface.co 注册一个账号(免费)

  2. 2. 登录后,打开下面两个链接,点页面上的"Agree and access repository"按钮:

  • https://huggingface.co/pyannote/speaker-diarization-3.1
  • https://huggingface.co/pyannote/segmentation-3.0
  1. 3. 打开 https://huggingface.co/settings/tokens ,点"Create new token"
  • 名字随便填,比如"whisper"
  • 权限勾选"Read access to contents of all public gated repos you can access"
  • 点创建,把生成的 token 复制下来(格式是 hf_ 开头的一串字符)

第八步:测试 pyannote 说话人分离

确保你还在虚拟环境里(终端前面有 (venv) 标记),如果没有就先激活:

source ~/.local/share/whisper/venv/bin/activate

然后运行测试(把 你的token 替换成第七步拿到的 token):

export HF_TOKEN=你的token
python3 -c "
from pyannote.audio import Pipeline
print('正在加载模型...')
pipeline = Pipeline.from_pretrained('pyannote/speaker-diarization-3.1')
print('正在分析说话人...')
result = pipeline('/tmp/test.wav')
for turn, _, speaker in result.speaker_diarization.itertracks(yield_label=True):
print(f'[{turn.start:.1f}s - {turn.end:.1f}s] {speaker}')
print('完成!')
"

第一次运行会自动下载模型文件(几百 MB),需要等一会。如果下载失败,检查:

  • Token 是否正确
  • 是否已经在 HuggingFace 上同意了两个模型的协议

运行成功后会看到类似这样的输出:

[3.8s - 5.2s] SPEAKER_00
[6.4s - 12.2s] SPEAKER_01
[12.7s - 14.6s] SPEAKER_00

到这里说明说话人分离也搞定了。

第九步(可选):安装 emotion2vec 情绪识别

如果你还想识别说话人的情绪,在同一个虚拟环境里继续装:

pip install funasr modelscope

测试:

python3 -c "
from funasr import AutoModel
print('正在加载情绪模型...')
model = AutoModel(model='iic/emotion2vec_plus_base')
print('正在分析情绪...')
result = model.generate('/tmp/test.wav', granularity='utterance', extract_embedding=False)
for r in result:
print(r)
print('完成!')
"

输出会显示情绪标签和置信度,比如 neutral 99%。

注意:emotion2vec 对内存要求较高,超过 2 分钟的音频建议分段处理,否则可能被系统杀掉。

日常使用

装好以后,日常使用就很简单了。

方式一:让 Claude Code 帮你跑(推荐)

我在 Claude Code 里配了一个 Skill,跟它说"帮我转录今天的录音",它就会自动去找语音备忘录文件,跑完整个流程,输出带说话人标注的对话记录。

方式二:手动执行

# 加载 brew 环境
eval "$(/opt/homebrew/bin/brew shellenv)"
# 激活 Python 虚拟环境
source ~/.local/share/whisper/venv/bin/activate
# 设置 HuggingFace Token
export HF_TOKEN=你的token
# 转格式
ffmpeg -i "你的录音.m4a" -ar 16000 -ac 1 -c:a pcm_s16le /tmp/work.wav -y
# 转文字
whisper-cli -m ~/.local/share/whisper/ggml-medium.bin -l zh -f /tmp/work.wav
# 说话人分离
python3 -c "
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained('pyannote/speaker-diarization-3.1')
result = pipeline('/tmp/work.wav')
for turn, _, speaker in result.speaker_diarization.itertracks(yield_label=True):
print(f'[{turn.start:.1f}s - {turn.end:.1f}s] {speaker}')
"

最后把两个结果按时间轴对齐合并就行,这步让 Claude Code 来做最省事。

和飞书妙记对比

飞书妙记 本地方案
费用 免费额度有限,超了付费 完全免费
隐私 录音上传云端 数据不出本机
说话人分离 支持 支持
中文效果 好 好(同音错字可被 Claude 修正)
使用门槛 零门槛 需要装几个工具(一次性)
速度 快 还行(取决于电脑性能)

常见问题

whisper 同音错字

中文口语同音词多,whisper 经常搞混,比如"基数"变"技术","指标"变"纸标",解决办法就是让 Claude Code 在输出时根据上下文自动修正。

语音备忘录文件位置

苹果电脑语音备忘录存在这个路径:

~/Library/Group Containers/group.com.apple.VoiceMemos.shared/Recordings/

如果开了 iCloud 同步,本地可能看不到文件,需要在系统设置里关掉语音备忘录的 iCloud 同步。

终端权限问题

macOS 对这个目录有沙盒保护,需要在"系统设置 > 隐私与安全性 > 完全磁盘访问权限"里给你的终端或 IDE 加权限。

pyannote 首次下载模型

第一次跑会从 HuggingFace 下载模型,国内网络可能不稳定,可以用 hf-mirror.com 镜像。

让你的 Claude Code 帮你搞定一切

如果你感觉上面的安装步骤执行起来比较痛苦,强烈推荐让你本地的 AI 工具来搞定。

是否能代替飞书会议转录?

这个方案本质上是对本地录音文件进行的转录 + AI 分析,如果是飞书在线会议录音或录像,需要下载至本地再做分析,不过这一步也可以结合飞书 CLI 工具做自动化处理。

写在最后

以上就是整个的搭建思路及过程,这里更多的是想和大家分享一些 AI 时代我自己的感受。

经常有朋友问我 AI 除了日常用豆包对话外,还有啥用处,我给了他一些启发。

我们平时和他人的微信聊天、电话语音、和客户的生意谈判、日常看到的朋友圈、微信文章、好的短视频等等的一切,其实都可以称之为数字资产。

这些数据都与你自己有关,在没有 AI 的时代,我们白白的浪费了这么多好的资源。

但今天不一样,AI 可以让我们实现很多以前无法做到的事情。

你可以把日常的录音、笔记、收藏的内容都整理起来,通过 AI 工具来搭建一套属于自己的内容资产系统,持续沉淀,持续输出,这不就是一个 AI 实际的应用场景吗?

所以这篇文章也算是 AI 应用场景的一个最佳实践吧,希望对你有所帮助和启发。