---
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
(测试负责人-老张)：这是一个验证。
```

-   **背景驱动**：禁止在不读取背景文档的情况下开始处理分段。
