核心流程:转录音频 → 整理实录与纪要 → 提取待办 → 输出结果。
首次使用时安装(后续跳过):
pip install faster-whisper --break-system-packages 2>/dev/null || pip install faster-whisper
> --break-system-packages 用于容器/沙箱环境。如果环境不允许,回退到不带此参数的安装。
from faster_whisper import WhisperModel
import os
audio_path = '<音频文件路径>'
# 根据文件大小选择模型:< 5MB 用 small,否则用 medium
file_size_mb = os.path.getsize(audio_path) / (1024 * 1024)
model_size = 'small' if file_size_mb < 5 else 'medium'
try:
model = WhisperModel(model_size, device='cpu', compute_type='int8')
segments, info = model.transcribe(audio_path, language='zh')
transcript = [seg.text for seg in segments]
full_text = '\n'.join(transcript)
except Exception as e:
# 转录失败时,告知用户具体原因并停止后续流程
print(f"转录失败:{e}")
# 常见原因:音频格式不支持、文件损坏、内存不足
# 向用户说明错误并建议:检查文件格式、尝试转换为 mp3/wav 后重试
raise
支持的音频格式:mp3, m4a, wav, ogg, amr, mp4, flac, webm
模型选择参考:
small(~500MB):电话录音、短对话,速度快medium(~1.5GB):会议录音、多人讨论、口音较重,准确率更高medium从文件名中尽量提取元数据:
| 文件名模式 | 提取内容 |
|---|---|
| ------------------------------- | ------------------- |
XX_20260323.m4a | 来源:XX,日期:2026-03-23 |
Record_20260323_143022.mp3 | 日期:2026-03-23 14:30 |
CallRecord_+8613912345678.m4a | 来源:+8613912345678 |
| 其他 | 用文件名原文作为来源 |
拿到转录原文后,做三层加工:
将转录原文整理为可读的对话实录:
我 和 [对方姓名/身份]我: 或 XX: 开头用连贯段落概括通话内容(3-5 句话),包含:
纪要简洁精炼,不用列表格式。
从通话内容中识别具体的待办事项:
如果没有明确的待办事项,标注"本次通话未提取到明确的待办事项。"
根据环境配置选择输出方式。优先检测飞书凭证,有则输出飞书文档,无则输出本地文件。
无论哪种输出方式,内容结构统一:
# 通话录音转写
**来源**:[从文件名提取,或标注"未知"]
**时间**:[YYYY-MM-DD HH:MM,无法提取则标注"未知"]
**时长**:[MM:SS,从转录 info 中获取]
---
## 实录
**我:** [说话内容]
**XX:** [说话内容]
...
---
## 纪要
[连贯段落,3-5句话]
---
## 待办
[待办事项,或"本次通话未提取到明确的待办事项。"]
检测到 FEISHU_APP_ID 和 FEISHU_APP_SECRET 环境变量时:
feishu_doc action=write
使用上述模板内容创建飞书文档,markdown 标题会自动转换为飞书文档标题格式。
不要用 update_block,必须用 action=write。
输出失败时降级为本地文件输出(见 3.3)。
未配置飞书凭证,或飞书输出失败时:
将内容保存为 Markdown 文件,文件名格式:通话纪要_[来源]_[日期].md
# 示例路径
output/通话纪要_XX_20260323.md
飞书输出成功时:
📄 [飞书文档链接]
待办事项:
1. [待办内容]
2. [待办内容]
确认计入工作待办?(是/否/修改)
本地文件输出时:
📄 已保存:通话纪要_XX_20260323.md
待办事项:
1. [待办内容]
2. [待办内容]
确认计入工作待办?(是/否/修改)
无待办时,只发文档/文件链接,附注"本次通话未提取到明确的待办事项。",不需要确认。
用户确认后才将待办写入 memory/todo.md(相对于当前工作目录):
todo.md 格式:
## [日期]
- [ ] [待办内容](来源:[通话来源])
未收到确认前,不写入 todo.md。
| 场景 | 处理方式 |
|---|---|
| ------------------- | ------------------------------------ |
| 音频格式不支持 | 告知用户,建议转换为 mp3/wav 后重试 |
| 转录结果为空或乱码 | 提示音频质量可能不足,建议换 medium 模型重试 |
| faster-whisper 安装失败 | 提示用户检查 Python 环境和网络连接 |
| 飞书文档创建失败 | 自动降级为本地 Markdown 文件输出,告知用户 |
| 模型下载超时 | 提示首次使用需下载模型(small ~500MB),建议在网络稳定时重试 |
共 1 个版本