| name | audio-interview-minutes |
| description | 将中文电话或面试录音整理为结构化纪要与最终汇总文档。当用户提供一批音频文件,希望完成 FunASR 转写、说话人区分、结合 database 修正术语和项目表述、按问题与回答重写成纪要,并最终汇总成一个文档时使用。适用于本仓库当前的 FunASR 工作流,也适用于相同目录结构的新批次录音。 |
| argument-hint | [音频文件路径、音频目录或机构名称] |
| user-invocable | true |
Audio Interview Minutes
何时使用
当用户希望把一批中文电话录音、面试录音或沟通录音整理成可复盘的文字材料时,使用本技能。
典型目标包括:
- 将音频转写为逐句文本
- 区分面试官和候选人
- 结合
database/ 修正姓名、学校、项目名、技术词和岗位信息
- 把碎片化口语整理成自然对话
- 按
岗位/部门介绍、项目问题、技能问题、求职意向与背景、流程与其他 等类别重写成纪要
- 将多通电话汇总为一个最终文档
当前仓库约定
优先沿用当前仓库里的脚本与目录,不要重新发明一套结构。
相关脚本:
tools/transcribe_interviews_funasr.py
tools/funasr_transcribe_interviews.py
tools/refine_funasr_transcripts.py
tools/generate_interview_minutes.py
输出目录约定:
- 原始转写:
transcripts/funasr/intermediate/raw_funasr/
- 二次整理:
transcripts/funasr/intermediate/refined/
- 自动纪要草稿:
transcripts/funasr/intermediate/minutes_auto/
- 单通电话润色纪要:
transcripts/funasr/intermediate/minutes_polished/
- 最终汇总文档:
transcripts/funasr/<机构名或主题>电话面试纪要汇总.md
如果用户没有特别要求,保持这套目录,不要把中间产物散落到根目录。
输入检查
开始前先确认三类输入:
- 音频文件
- 简历数据库
- 目标机构或批次名称
优先检查这些位置:
- 音频:用户给出的绝对路径,或项目内约定目录
- 数据库:
database/personal.md、database/projects.md、database/positions.md
- 现有产物:
transcripts/funasr/
如果数据库缺失,可以继续,但要明确告诉用户:术语修正、项目还原和角色判断的可信度会下降,存疑项会更多。
模型与环境
中文电话面试默认使用 FunASR 方案,优先带说话人区分:
- ASR:
paraformer 或 seaco-paraformer
- VAD:
fsmn-vad
- 标点:
ct-punc
- 说话人区分:
cam++
开始转写前先检查:
- 虚拟环境是否可用,例如
.\.codex-asr\Scripts\python.exe
funasr、modelscope、torch、torchaudio 是否可导入
- 是否已有模型缓存目录
.model-cache/
如果缺少环境,先帮助用户检查和安装,再继续转写。
工作流
第一步:生成原始转写
使用现有 FunASR 脚本生成原始产物。默认目标是:
*.funasr.json
*.funasr.md
要求:
- 保留
sentence_info、时间戳和 spk
- 不要在这个阶段做重写
- 原始结果只做保存和最小格式化
如果脚本支持 --output 或 --limit,优先使用显式参数,避免覆盖其他批次数据。
第二步:建立语义参考
读取 database/ 中与用户本人相关的信息,至少提取:
- 姓名、学校、专业
- 项目名称
- 技术词和缩写
- 论文、专利、奖项、成果指标
- 投递岗位和部门方向
这一步的目标是形成“语义参考库”,而不是写死替换表。
不要把“错词 A 永远替换成 B”当作最终方法。数据库上下文和上下句语义,才是修正依据。
第三步:二次转写与角色校正
基于原始 funasr.json/md 逐句整理,输出到 intermediate/refined/。
需要做的事:
- 判断
SPK0/SPK1 谁是面试官、谁是用户
- 结合上下文纠正短句 speaker 跳变
- 删除无信息语气词,如“嗯”“啊”“那个”“就是”
- 合并连续碎句
- 修正明显的术语错识别
- 对无法确定的内容标记
[存疑]
这里可以使用 tools/refine_funasr_transcripts.py 生成草稿,但不要把脚本输出直接当最终稿。
最终目标是两层结果:
*.dialogue.md:适合阅读的自然对话稿
*.uncertain.md:需要人工回听核对的存疑句
第四步:生成纪要草稿
从 refined/ 生成结构化纪要草稿,输出到 intermediate/minutes_auto/。
每通电话至少整理出这些类别:
岗位/部门介绍
项目问题
技能问题
求职意向与背景
流程与其他
这一层不要追求文采,重点是把问题焦点和回答要点提炼出来。
第五步:人工语义重写
这是质量最关键的一步,不能完全依赖固定脚本。
对每通电话继续整理为 minutes_polished/ 下的 *.notes.md,要求:
- 问题不要照抄碎片句,而要改写成“面试官关注点”
- 回答不要逐句拼接,而要重写成逻辑连贯的自然段
- 项目描述以数据库事实为边界,不要凭空补内容
- 对明显识别错误但能从上下文确认的地方,直接修正
- 对仍然无法确认的地方,保留模糊表达或标注“录音处不清”
可参考的写法:
- 先写通话概览
- 再按类别整理问题和回答
- 最后补复盘建议
第六步:汇总成一个最终文档
将所有 minutes_polished/*.notes.md 整合为一个总文档,默认放在:
transcripts/funasr/<机构名或主题>电话面试纪要汇总.md
推荐结构:
# 电话面试纪要汇总
## 一、总体结论
## 二、各通电话索引
## 三、逐通电话纪要
## 四、统一高频问题
## 五、统一准备清单
如果这批电话都来自同一机构,标题直接用机构名;如果是混合批次,用更概括的主题名。
质量标准
完成后至少检查这些点:
- 音频数量和产物数量一致
- 每通电话都有纪要
- 角色没有大面积反转
RK3568、STM32、OpenCL、NPU、PE 燃气管道 等术语前后一致
- 不能确定的内容没有被硬编成确定事实
- 最终汇总文档能脱离原始转写独立阅读
如果 PowerShell 查看中文出现乱码,不要直接判断文件损坏;优先确认文件是否为 UTF-8,并用正常编辑器打开检查。
执行建议
优先顺序如下:
- 先保住原始转写
- 再做数据库对齐和说话人校正
- 再做纪要化重写
- 最后做跨电话汇总
如果用户只需要某一层结果,不必强行跑完整条链路。例如:
- 只要逐句稿:停在
raw_funasr/ 或 refined/
- 只要单通电话纪要:停在
minutes_polished/
- 要复盘总文档:继续汇总
该技能不该做的事
- 不要把二次转写简化成固定词典替换
- 不要在没有依据时补写用户没说过的经历
- 不要删除原始中间产物,除非用户明确要求清理
- 不要把所有阶段混在一个目录里
当前项目的默认落地方式
在这个仓库里,默认做法是:
- 用 FunASR 产出
intermediate/raw_funasr/
- 用数据库和语义修订生成
intermediate/refined/
- 生成
intermediate/minutes_auto/
- 人工整理到
intermediate/minutes_polished/
- 汇总到
transcripts/funasr/ 根目录
后续如果目录结构调整,先更新本技能中的路径约定,再更新相关脚本默认路径。