Files
AudioScribe/docs/transcribe_legacy_flow.md
Misaka_Company 85dc3c77b3 Replace MinIO with S3-compatible storage and reorganize project structure
- Switch from MinIO to boto3 for S3-compatible object storage (Cloudflare R2)
- Rename storage config vars from R2_* to generic S3_*
- Organize root directory: docs/, tools/, output/, Archive/{audio,results}/
- Output transcriptions to output/ directory
- Add transcribe_legacy.py, transcribe_all.py, and docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-27 16:08:33 +08:00

78 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# transcribe_legacy.py 流程说明
## 概述
该脚本实现音频文件的**异步转写**流程:上传音频 → 提交转写任务 → 轮询结果 → 保存输出。
## 流程图
```mermaid
flowchart TD
A[启动] --> B[加载 .env 环境变量]
B --> C[初始化 MinIO 客户端]
C --> D{命令行是否\n传入音频文件?}
D -- 是 --> E[使用传入的文件路径]
D -- 否 --> F[使用默认文件名]
E --> G[生成唯一对象名]
F --> G
G --> H[上传音频文件至 MinIO]
H --> I[生成 1 小时有效期的预签名 URL]
I --> J[构造 submit 请求体\n模型/标点/说话人识别等)]
J --> K[调用 ByteDance 提交接口]
K --> L{提交状态码\n== 20000000?}
L -- 否 --> M[打印失败信息,结束]
L -- 是 --> N[进入轮询循环]
N --> O[调用 query 接口查询结果]
O --> P{状态码判断}
P -- "20000000\n完成" --> Q[解析 JSON 结果]
Q --> R[保存 .json 文件]
R --> S[构建 Markdown 转写报告]
S --> T[保存 .md 文件]
T --> U[打印完成信息]
P -- "20000001 / 20000002\n处理中" --> V[等待 5 秒]
V --> O
P -- 其他 --> W[打印失败信息]
U --> X[结束]
M --> X
W --> X
```
## 关键步骤详解
### 1. 环境初始化
-`.env` 加载 API 凭证App Key、Access Key、Resource ID
- 加载 MinIO 对象存储的连接信息
### 2. 音频上传
- 将本地音频文件上传至 MinIO 的 `audio/` 前缀路径
- 生成带 1 小时过期时间的预签名下载 URL供远端 API 访问
### 3. 提交转写任务
- 向 ByteDance 大模型语音识别接口发送 POST 请求
- 请求参数开启ITN逆文本归一化、标点恢复、去冗余、说话人分离、分句输出
### 4. 轮询结果
- 每隔 5 秒查询一次任务状态
- `20000001` / `20000002` = 处理中,继续等待
- `20000000` = 成功,退出循环
### 5. 保存输出
| 文件 | 内容 |
|------|------|
| `{音频名}_转写结果.json` | 原始 API 返回的完整 JSON 数据 |
| `{音频名}_转写结果.md` | 格式化的 Markdown 报告(含时间线、说话人标注) |
## 外部依赖
```mermaid
graph LR
A[transcribe_legacy.py] --> B[ByteDance 语音识别 API]
A --> C[MinIO 对象存储]
B -->|预签名 URL 下载音频| C
```