--- name: long-audio-transcript-processor description: 对大量语音转写稿进行校对、整理、分段处理,支持断点续传和恢复 license: Apache-2.0 author: github/cafe3310 depends_on_skill: [] depends_on_binary: - python3 - sed --- # 语音转写处理工作流 (Long Audio Transcript Processor) 此技能旨在通过文件系统辅助,安全、有序地处理超长语音转写文本。它通过分段处理、上下文维护(术语表、主题记录)和状态追踪,确保处理过程的可持续性和高质量。 此技能最好使用最高性能的模型(而不是写代码用的快速模型)以确保最佳质量。 ## 使用时机 当用户提供一个或多个长篇语音转写文件,并要求进行: 1. **校对与修正**:修复识别错误、词语重复、中断、错漏等,校对前后行数一致。 2. **整理与格式化**:区分发言人,整理段落。 3. **长文本处理**:文本过长,无法一次性放入 LLM 上下文。 4. **需要中断与恢复**:工作可能跨越多次对话。 ## 工作流 ### 1. 准备阶段 (Initialization) 首先,必须初始化工作区。询问用户是否已准备好源文件。 运行初始化脚本: ```bash python3 .gemini/skills/long-audio-transcript-processor/scripts/setup_workspace.py "path/to/file1.txt" "path/to/file2.txt" ... ``` *(注意:请根据实际技能安装路径调整脚本路径,通常是 `.gemini/skills/...`)* 初始化后,工作区结构如下: ```text 语音转写处理_YYYY-MM-DD-HH-MM/ ├── 0-工作日志.md # 进度追踪与计划 ├── 1-原始文件/ # 存放用户提供的原始语音文本 ├── 2-要求和信息/ # 存放活动背景、发言人等信息(用户补充) ├── 3-校对和术语表.md # 动态更新的术语库和错误模式 ├── 4-分段主题.md # 记录已处理分段的主题脉络 └── 5-最终输出/ # 存放校对完成的分段文件 ``` **关键操作**: 1. 检查生成的目录。 2. **同步背景知识**:确保将用户提供的任何背景文档(如 MRD、PRD、会议背景、相关邮件等)文档复制到 `2-要求和信息/` 目录下,也在该目录下创建 Markdown 文档记录用户的说明。这是保证后续处理准确性的基石。 ### 2. 分段处理循环 (Processing Loop) 在进入循环前,**总是先读取**以下文件以加载上下文(确保跨分段的信息一致性): - `0-工作日志.md` (检查进度) - `2-要求和信息/` 下的**所有**背景和要求文档 - `3-校对和术语表.md` (加载最新积累的术语和校对规则) - `4-分段主题.md` (加载已有上下文主题) - `5-最终输出/` 下的文件 -- 列出文件名即可 **步骤:** 1. **确定任务**:从 `0-工作日志.md` 中找到第一个未完成(`[ ]`)的分段。 2. **提取分段并初始化目标文件**: * 使用 `sed` 命令从 `1-原始文件/` 中提取对应行范围,并重定向写入到 `5-最终输出/` 下的对应文件中。 * **命令示例**:`sed -n '开始行,结束行p' "1-原始文件/文件名.txt" > "5-最终输出/文件名_开始行-结束行.txt"` * **目的**:确保所有原始行都已先进入目标文件,作为后续改写的底稿,防止内容遗漏。 3. **执行校对与订正**: * **读取**:使用 `read_file` 读取上一步生成的 `5-最终输出/` 下的文件内容。 * **参考**:术语表、背景信息、前序分段主题。 * **改写校对**: * 对读取到的内容进行逐行/逐段校对。 * 修正错别字、重复、同音错误,减少冗余的语气词。 * 标记不确定内容为 `(...)`。 * **保持一致性**:必须确保校对后的行数与原始行数完全一致。如果需要合并发言,请在原位保留行占位。 * **写回**:使用 `write_file` 将校对后的完整文本写回 `5-最终输出/` 的对应文件(覆盖掉刚才的底稿)。 4. **更新辅助文档**: * 更新术语表。如果在本段发现了新的专有名词、特定错误模式或确认了某个模糊术语的正确写法,**追加** 到 `3-校对和术语表.md`。仅追加,用行号段落区分不同分段的内容。 * 更新主题。将本段核心主题 **追加** 到 `4-分段主题.md`。仅追加,用行号段落区分不同分段的内容。 5. **更新状态**: * 更新日志:在 `0-工作日志.md` 中标记分段为 `[x]`。 6. **反馈与沉淀**: * 告知用户本段已完成,简述关键修改、新发现的术语或不确定点。 * 询问是否有新增术语或错误修正。 * 如有反馈,更新 `3-校对和术语表.md` 并修正 `5-最终输出` 中的对应文件。 ### 3. 中断恢复 (Resuming) 如果对话中断,**不要** 重新初始化。 直接执行 **分段处理循环** 的“在进入循环前”步骤:通过读取 `2-要求和信息/` 和 `3-校对和术语表.md` 完整找回记忆。 然后继续下一个未完成的分段。 ### 4. 衍生任务 (Derivative Tasks) 除了标准转写外,用户可能要求并行生成其他产物(如 Q&A 问答库、摘要、待办事项)。 * **定义**:在 `2-要求和信息/` 下创建任务说明文档(如 `额外任务_问答积累.md`)。 * **执行**:在每次“输出结果”后,检查衍生任务要求,从当前分段中提取相关信息。 * **存储**:衍生文件存放在 `5-最终输出/` 下,文件命名应清晰(如 `问题和回答-主题.md`)。 * **原则**:衍生文件的更新同样遵循**“只追加”**,用行号段落区分不同分段的内容。 ### 5. 调整与整合 (Adjustment and Integration) 在所有分段处理完成后,进入此阶段。 1. **成果汇总与提醒**: * 列出所有产出的核心文件(分段文本、术语表、摘要、衍生文档)。 * 提醒用户: * a) 可以提出任何额外的整理、合并或格式调整要求(例如:合并为一个文档,提取特定角色的发言)。 * b) 可以将内容发送给相关人员(如 PM、技术负责人)进行审阅和订正。 2. **订正处理标准**: * 当用户反馈订正意见时,或者用户转发他人的订正内容时,**必须**使用以下 Emoji 标记修改痕迹,以便清晰追踪变动: * `{🔴 原始内容}`:标记被修改或删除的原始文本。 * `{🟢 新内容}`:标记新增或修正后的文本。 * `{‼️ 需特别留意,可能出错}`:标记模型认为存在矛盾、风险或不确定的地方,或者用户特别强调的注意点。 * **更新动作**:根据订正内容,同步更新 `3-校对和术语表.md` 和 `5-最终输出/` 中的对应文件,确保下一次处理或合并时使用最新数据的正确版本。 ## 关键文件说明 - `0-工作日志.md`: 核心状态文件。**必须** 保持最新。 - `3-校对和术语表.md`: 动态更新的知识库。发现新术语或特定错误模式时,务必更新此文件,以保证后续分段处理的一致性。该文件的编辑也遵循只追加原则。 - `4-分段主题.md`: 帮助 LLM 保持对长文本整体脉络的理解。 ## 注意事项 - **文件操作**:所有生成的文件应严格存放在初始化的工作目录中。 - **行号对应**:读取原始文件时,务必确保行号范围准确。 - **只追加原则**:对于 `3-校对和术语表`, `4-分段主题.md` 和任何额外输出文件,**严格遵循** 只追加、不修改的原则,避免在 loop 过程中,覆盖已有内容。 - **第一时间记录额外要求**:如果用户在过程中提出了额外要求,尤其是需要调整处理方式或补充信息,应立即记录在 `2-要求和信息/` 中,并通知后续处理环节。 - **保持行数一致**:生成校对后输出时,禁止更改时间戳行。如有多次发言合并,可以用 (空) 标记被合并的发言。这是为了方便对原始文稿和校对后结果进行 diff 检查。 - **说话人识别**:语音转写的说话人一般正确,除非用户指出需要做识别。识别时,根据上下文(提问 vs 回答、专家 vs 小白、行业背景差异)区分真实角色,在输出中显式标记角色(如 `同行 (测试)`、`访客 (学生)`)。禁止更改时间戳行,识别的角色必须添加在发言行行首。 ```识别之前的行 发言人 2 01:30:00 这是一个验证。 ``` ```识别之后的行 发言人 2 01:30:00 (测试负责人-老张):这是一个验证。 ``` - **背景驱动**:禁止在不读取背景文档的情况下开始处理分段。