关于 transcript-fixer
transcript-fixer 是用于修正自动语音识别(ASR)转录稿的技能,适合处理会议等文本的人工或 Agent 工作流。它以确定性词典修正为起点,再要求进行原生 AI 审阅,并将确认过的重复修正沉淀为规则。
主要功能
- 01分阶段修正转录稿
- 02原生 AI 全文审阅
- 03不确定项进入待审队列
- 04将重复修正沉淀为规则
- 05支持批量与无 Agent API 流程
适用场景
- 01修正会议转录中的 ASR 错误
- 02审阅人名和专业术语
- 03处理未能确认的转录片段
- 04在自动化流程中运行转录修正
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ daymade/ claude-code-skills --skill transcript-fixer安装后在 Claude Code 中输入/transcript-fixer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreCHANGELOG.mdreferences/advanced_correction_evidence.mdarchitecture.mdbest_practices.mddatabase_schema.mddictionary_guide.mddictionary_identity_and_context.mddomain_context_guide.mdexample_session_dji_minutes.mdexample_session.mdfalse_positive_guide.mdfile_formats.mdglm_api_setup.mdinstallation_setup.mditeration_workflow.mdnative_action_details.mdnative_ai_full_workflow.mdnative_correction_application.mdnative_entity_triage.mdnative_historical_evidence.mdnative_metadata_provenance.mdnative_queue_finalization.mdnative_review_packets.mdnative_second_pass.mdnative_transcript_comparison.mdnative_upstream_provenance.mdpending-continuation.mdquick_reference.mdreview_queue_dashboard.md详细介绍
转录文本修正器
使用以下修正循环:
- 第 1 阶段应用确定性的已知修正。
- 原生 AI 修正会读取完整转录文本,修复偶发错误、核实不确定的实体,并累积可复用的修正。
**原生 AI 修正是默认方式。仅使用第 1 阶段是不完整的。**第 3 阶段 API 仅适用于无法使用 Claude/Codex Agent 的自动化场景。
运行约定
- 完成 Stage 1 → 原生 AI 校正 → 合并已确认的重复修正。仅完成 Stage 1 后,不要报告转录文本已清理完毕。
- 只有当用户明确将本次任务限定为仅进行词典检查,或带日期的产物证明原生 AI 已针对这份确切的转录文本运行过时,才跳过原生 AI。
- 在 Claude Code 或 Codex 中,不要运行 Stage 3。使用 Stage 1 加原生工作流。
- 绝不要为了让语音更流畅而改写内容。修正必须能解释一种合理的 ASR 错误,并保留说话者各自说了什么。
- 其他地方出现的标准术语或已知参与者只能作为可能来源,并不能证明此次出现的内容。首轮检查和冷审查时,使用 原生审查资料包 中针对具体出现内容的对比证据;缺少判别依据时保留原始形式。
- 接受姓名变体匹配前,检查完整的公司/姓名字段;遵循最少出现次数检查。名称形态防护规则拒绝的普通措辞,只能采用有界的书面措辞路径,绝不能伪造用户/音频引用。
- 默认情况下,绝不推断或重新分配说话者身份。保留说话者标签行;经人工确认的标签和用户裁定具有权威性。只有用户明确授予限于本任务的身份推断权限,才可启用单独的派生读者分支:行动前先阅读限范围的说话者推断。该授权仅允许推断,不代表身份已确认,也不适用于其他转录文本。
- 更正任何人名之前,必须直接阅读已配置的全局人员名单,以及所属项目明确的身份名单或别名台账。Stage 1 只会自动加载全局
ASR 变体条目;它不会加载项目名单,也不会显示已抑制、已禁用或未列出的条目。如果缺少预期来源或来源之间存在冲突,请保留原姓名不变,并将其加入待处理队列或询问一次。绝不能将出现频率作为身份依据。确定姓名前,请阅读 references/dictionary_identity_and_context.md。 - 升级处理前,先依据现有证据解决疑点。音频下载只是证据渠道之一,并非进行原生校正的先决条件。无法下载时,请遵循证据选择与升级处理;不要要求用户更改下载权限,也不要把每一条待处理记录都当作只有用户才能回答的问题。
- 保留确实无法解决的文本原样,并将其加入待处理队列。显而易见的乱码比流畅但错误的猜测更安全;待处理记录表示存在不确定性,并不意味着要自动交给人工处理。
- 将陌生词条视为未知,而不是错误。先穷尽本地证据链。对于仍未解决且会影响关键含义的词条,只有在源音频和获准使用的第二个引擎都已可用时,才使用片段级跨识别器环节;否则根据上述升级处理策略,继续使用现有证据。来自真正不同的识别器系列的一致结果能有力佐证语音内容,但绝不能用于决定同音异形词,也不能绕过人名审核门槛。使用前请阅读原生工作流的步骤 4、第 7 环节。一批已穷尽证据的待处理记录,就是这一环节的批处理形式:原生检查后若仍有一批本地无法解决的记录,不要把整批交给用户——使用
verify_queue_audio.py进行检查(一个转录文本、一份源音频、一个第二引擎、每条记录两个片段窗口)。该脚本可以附加声学证据,但绝不会记录裁定;片段相同,或识别结果无法支持有争议的词边界时,记录仍须保持待裁定状态。操作员矩阵和时间戳映射陷阱见 advanced_correction_evidence.md § 批量待处理记录裁定。 - 将单行
asr_note值视为修正来源记录:其中会有意引用旧形式,且不会参与匹配。多行 YAML 台账值不会被屏蔽;关键词、标题、其他源自 ASR 的元数据以及正文仍属于修正范围。 - 执行原生检查前,请完整阅读 references/native_ai_full_workflow.md。可通过连续且不重叠的读取覆盖整个文件;如果响应被截断,继续读取缺失部分后再进行下一步。执行了
cat并不能证明已收到完整输出。执行相应操作前,请阅读下文中针对该任务的参考资料;这些文件也必须使用有界且不截断的方式读取。
运行上下文
所有入口点都通过 uv run 运行;需要第三方 Python 包的入口点会通过 PEP 723 声明这些依赖,而仅使用标准库或内部模块的实用工具可以省略元数据块。从调用此技能时输出的技能目录中执行命令,或在每个脚本路径前加上该目录。不要依赖 $CLAUDE_SKILL_DIR;并非所有运行环境都提供它。
如果确实不知道工具包的位置,请使用 references/installation_setup.md 中的安装位置解析流程。不要从宽泛的 find 结果中选择第一项:缓存、备份和旧版本可能同时存在。
快速开始
在填写下方明确的文件参数之前,请先通过上下文位置解析 <domain-context.md>。
# Initialize once
uv run scripts/fix_transcription.py --init
# Stage 1 for one project domain. --apply-domain trusts that explicitly
# selected, human-curated project domain at every risk level.
uv run scripts/fix_transcription.py \
--input meeting.md --stage 1 \
--domain myproject --apply-domain --json
# Several sibling domains may be loaded as one union.
uv run scripts/fix_transcription.py \
--input meeting.md --stage 1 \
--domain myproject,myproject-alt --apply-domain --json
# Preview without writing the Stage 1 output.
uv run scripts/fix_transcription.py \
--input meeting.md --stage 1 --domain myproject --dry-run
# Scan all documented context traps after the native read-through.
uv run scripts/fix_transcription.py --scan-traps \
--context-file "<domain-context.md>" \
--input meeting.md
安全模式是 Stage 1 的默认模式:应用低风险规则;中高风险匹配项将转交给 *_needs_review.md 和持久化审核队列。Applied: 0 是有效结果,并不能证明转录内容没有问题。
Stage 1 的 JSON 契约如下:
{
"applied": 0,
"deferred": 0,
"output_path": null,
"needs_review_path": null,
"input_unchanged": true,
"review_enqueued": 0,
"stage1_only_incomplete": true,
"stage2_total_chunks": 0,
"stage2_failed_chunks": 0,
"stage2_degraded": false,
"boundary_refused": 0,
"boundary_check_active": true
}
请读取结果中的每个字段。boundary_refused 统计本次运行中被词边界检查拒绝的词典匹配项;这些匹配项既未应用,也未转交审核,因此调用方在比较运行结果时可以看出某个待审核项为何消失;--apply-all 会关闭此检查。stage1_only_incomplete 是对原始调用方契约的补充,在运行 Stage 1 脚本时必须保持为 true;只有调用方运行 Native AI,或明确选择无 Agent 的 Stage 2/3 路径,才能将其关闭。stage2_* 遥测字段始终存在:Stage 1 会将它们报告为 0、0 和 false;Stage 2/3 则会将其替换为实际 API 结果。不要根据是否存在 sidecar 来推断是否未执行操作或是否成功。
原生端到端示例请参阅 references/example_session_dji_minutes.md。
选择路径
| 路径 | 适用情况 | 必读内容 |
|---|---|---|
| 延续待处理项 | 带日期的 Native/审核证据涵盖此确切文件;只剩不确定的行,或用户提供了判定 | pending-continuation.md;沿用未更改的已完成覆盖范围 |
| 快速原生路径 | 转录内容较短或较简单、说话人已知、风险较低 | 本文件 + native_ai_full_workflow.md |
| 完整原生路径 | 领域内容较多、实体不熟悉、说话人不少于 3 位、转录内容较长或涉及决策 | native_ai_full_workflow.md,以及下方的队列和证据参考资料 |
| 限定范围的说话人推断 | 用户明确授权针对本次转录/任务进行身份推断 | scoped_speaker_inference.md;常规 ASR 校正仍使用原生路径 |
| 调用方集成 | 其他技能或摄取管道调用 Stage 1 | 下方的 Cross-skill caller contract |
| 审核队列/仪表板 | 存在不确定项或需要音频的任何情况 | review_queue_dashboard.md |
| 无 Agent 的 API 路径 | 没有可用 Agent 的 CI/批量自动化 | glm_api_setup.md 和 workflow_guide.md |
| 多文件批处理 | 多份相关转录;尤其是 10 份或更多 | advanced_correction_evidence.md |
主要依据词汇特征和风险程度选择处理等级;仅在两者无法区分时才参考文本长度。五分钟的医疗访谈可能需要完整处理,而一份较长、内容简单的双人备忘录则可以使用快速处理。
Native correction checklist
在纠正前,请完整阅读必需的原生流程。 该流程会将来源溯查、实体分诊、编辑、冷审查恢复、 队列决策和最终定稿导向相应的操作时参考资料。
- 为输入提供最终的人类可读路径;恢复并比对原始来源。
- 加载项目上下文,通读整个转录文本,运行 Stage 1 并检查其差异。
- 对候选项进行分诊;仅应用有具体出现证据支持的最小更正。
- 运行陷阱扫描;完成 Full-tier 冷审查并裁定其剩余问题。
- 处理精确文件队列条目;重复工作前先读取人工状态。
- 验证已编辑的文件;若要声称已完成或质量很高,必须确保待处理项为零; 以机械方式关闭 sidecar,提取稳定模式,并检查实体传播情况。
在执行相应的队列、学习或同文件实体扫描操作前,请阅读原生操作详情。
特别是,人物姓名的权威信息应放在 --authority/--authority-record 中,
而不是 --note;针对单个句子的更正不会自动成为可复用规则。
跨技能调用方约定
调用方流水线必须:
- 使用显式配置的项目领域运行 Stage 1,并传入
--apply-domain和--json。如果deferred > review_enqueued,则将审查 sidecar 持久化到临时目录之外,或将该缺口报告为失败。 - 在加载此技能的情况下运行 Native AI,否则报告
Stage 1 only — incomplete。不使用 Agent 的自动化可改用 Stage 3。 - 根据目标位置的存储约定选择报告位置。对审查报告使用
--sidecar-dir DIR,同时让运行输出遵循现有的--output约定。省略此参数会保留相邻/默认输出行为;在--close-sidecars决定关闭前,保留待处理报告。关闭操作会查找已注册的自定义报告目录;恢复时也可显式指定--sidecar-dir。切勿强制所有项目都将报告移至同一个固定子目录。
规范调用:
uv run scripts/fix_transcription.py \
--input "$staged" --stage 1 \
--domain "$domains" --apply-domain --json
仅接入脚本路径的调用方不会加载此约定。因此,仅集成脚本路径只能作为 Stage 1 预筛选,而非转录文本纠正。
保持项目领域信息及时更新:原生处理过程中确认的每项重复更正,都必须添加回正确的项目领域、名单或上下文文件。
条件性操作
操作前先阅读对应章节;以下是已有的受支持任务:
| 操作 | 必需详情 |
|---|---|
| 添加词典/上下文规则、人员名册变体或反复出现的陷阱 | 词典与身份安全、身份/上下文负责人、误报指南 |
| 入队、接受/覆盖/保留/跳过、附加权威依据、重新锚定、合并或记录账本判定 | 审核队列安全、队列/仪表板;对于已审核的文件,请使用待处理续接 |
| 数字、文字记录、平行录音、片段交叉核对或批次 | 数字、记录与批次、高级证据 |
| 提升输出、关闭 sidecar、归档或验证最终质量 | 最终处理、队列/最终处理详情 |
| 无 Agent API 自动化,包括降级输出处理 | 无 Agent API 路径、API 设置、工作流指南 |
| 提取不确定项、导入预设、修复时间戳、拆分/重基、比较差异、收集、查找或验证设置 | 实用命令、CLI 参数 |
| 比较重复/重叠的转录文本,或解析/统计说话人轮次 | 转录比较/解析 |
检测和入队并不等于纠正。要声称文件最终完成/达到高质量,必须满足
精确到文件的 stats.pending_total == 0;读取回写的文件编辑内容后,待处理行数必须为零。未解决的文件应保持 draft / unresolved — incomplete。抽样片段只能解决其锚定的那一项。对于音频基准可用且涉及多段录音的高风险请求,如果需要完整/更好的转录文本,请加载
/daymade-audio:asr-transcribe-to-text,并覆盖最清晰录音的完整内容;
同一识别器只能证明覆盖了完整来源,不能证明有独立佐证。
用户判定可以解决具体出现项,但不能因此让替换内容可复用:
罕见的句子级误听只能用于当前文件。
参考索引
随附脚本会被执行,而不是加载到上下文中。主要入口包括 fix_transcription.py、scan_numeric_consistency.py、fetch_minute_audio.py、review-dashboard/server.py,以及上文列出的差异/时间戳/拆分实用工具。
移交
校正完成后,仅当用户需要结构化摘要时,才移交给 /daymade-audio:meeting-minutes-taker。不要自动创建会议纪要:转录校正和摘要属于不同的工作范围。