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>
This commit is contained in:
77
docs/transcribe_legacy_flow.md
Normal file
77
docs/transcribe_legacy_flow.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user