﻿# EasyTranscribe / おまかせ文字起こし

[日本語](README.md) ｜ [English](README.en.md) ｜ [한국어](README.ko.md)

本地视频转录、剪辑和字幕烧录工具。  
完全本地运行 · 免费 · 无服务终止风险。支持 Mac / Windows。

---

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20515527.svg)](https://doi.org/10.5281/zenodo.20515527)

如果这个工具对您有帮助，欢迎给项目点 **[⭐ Star](https://github.com/sasakireijiyagi/video-cut-editor)** — 这对我们很有鼓励！

这个工具由九州大学的一位研究者在业余时间独立开发和维护。
现在已经有来自世界各地的用户在使用它了。
如果它对您的研究或工作有所帮助，**哪怕是一杯咖啡的捐款，也会成为继续开发的巨大动力** ☕  
请点击应用右上角的 **❤ 支持开发** 按钮。

---

## 功能概览

```
打开视频 → 自动转录（Whisper）→ 取消勾选不需要的片段 → 用 ffmpeg 导出
```

- **转录**：使用 [OpenAI Whisper](https://github.com/openai/whisper) 对讲座或会议视频进行转录 — **支持100种语言**
- **编辑**：调整 SRT 片段的开始/结束时间、编辑文本、用 ◀/▶ 按钮微调时间
- **分割/合并**：在任意字符位置分割片段，或将多个片段合并为一个
- **剪辑**：导出选定片段并合并为一个文件，或分别保存
- **字幕烧录**：将字幕直接烧录到视频中（粗体黑体、白色文字、黑色边框）
- **批量转录**：队列处理多个文件，处理中也可继续添加
- **竖向视频**（9:16）：自动检测并切换为竖向布局

---

## 支持的转录语言 — 100种语言

Whisper 支持 **100种语言**的转录。应用语言选择器提供13种主要语言 + 自动检测。

| 地区 | 语言 |
|------|------|
| 东亚 | 日语 · 中文（普通话 · 粤语）· 韩语 |
| 东南亚 | 印尼语 · 马来语 · 泰语 · 越南语 · 菲律宾语 · 爪哇语 · 高棉语 · 老挝语 · 缅甸语 |
| 南亚 | 印地语 · 孟加拉语 · 乌尔都语 · 泰米尔语 · 泰卢固语 · 古吉拉特语 · 马拉地语 · 旁遮普语 · 尼泊尔语 · 僧伽罗语 |
| 中东 / 中亚 | 阿拉伯语 · 波斯语 · 希伯来语 · 土耳其语 · 哈萨克语 · 乌兹别克语 · 阿塞拜疆语 · 格鲁吉亚语 · 亚美尼亚语 |
| 欧洲（西部）| 英语 · 西班牙语 · 法语 · 德语 · 意大利语 · 葡萄牙语 · 荷兰语 · 瑞典语 · 挪威语 · 丹麦语 · 芬兰语 · 波兰语 · 捷克语 · 匈牙利语 · 罗马尼亚语 · 希腊语 |
| 欧洲（东部）| 俄语 · 乌克兰语 · 保加利亚语 · 塞尔维亚语 · 克罗地亚语 · 斯洛伐克语 · 斯洛文尼亚语 · 马其顿语 · 白俄罗斯语 · 立陶宛语 · 拉脱维亚语 · 爱沙尼亚语 |
| 非洲 | 斯瓦希里语 · 豪萨语 · 约鲁巴语 · 索马里语 · 阿姆哈拉语 · 绍纳语 · 林加拉语 · 马达加斯加语 |
| 其他 | 威尔士语 · 冰岛语 · 毛利语 · 夏威夷语 · 拉丁语 · 梵语 等 |

---

## 环境要求

- [Anaconda](https://www.anaconda.com/download) 或 [Miniconda](https://docs.conda.io/en/latest/miniconda.html)
- 网络连接（仅首次安装时需要）

---

## 安装 — Mac

双击发行包中的 **「セットアップ.command」**，终端将自动完成安装。完成后按 Enter 关闭窗口。

> **自动安装的内容（已安装则跳过）：**
> - Homebrew
> - ffmpeg
> - Whisper

> **出现"无法验证开发者"提示时：**  
> 右键点击文件 → 打开 → 打开。

## 安装 — Windows

### 1. 安装 ffmpeg

从 [ffmpeg.org](https://ffmpeg.org/download.html) 下载预编译包，解压到 `C:\ffmpeg`，并将 `C:\ffmpeg\bin` 添加到系统环境变量 PATH。

### 2. 安装 Whisper

```bat
pip install openai-whisper
```

### 3. 安装 PyQt6

```bat
pip install PyQt6
```

### 4. 启动

```bat
python editor.py
```

---

## 启动 — Mac

安装完成后，双击 **`EasyTranscribe.app`** 即可启动。

---

## 使用方法

**① 打开视频**  
点击"打开视频…"选择文件。若同名 `.srt` 文件存在于同一文件夹，会自动加载。  
竖向视频（高度 > 宽度）将自动检测并切换为竖向布局。

**② 转录**  
点击"🎙 转录"，完成后片段列表显示在右侧表格中。

**③ 查看和编辑片段**  
- 点击某行可预览该片段（到结尾自动停止）
- 双击文本列可直接编辑
- 双击开始/结束时间列可直接输入（`HH:MM:SS,mmm` 格式）
- 使用 **◀ / ▶ 按钮** 以 100ms 或 500ms 为步长微调时间
- **右键 → 分割行…** — 点击文字位置进行分割，时间按字符比例自动计算
- **右键 → 合并选中行** — 选择连续行后合并为一行
- 所有编辑支持 **Ctrl+Z** 撤销 / **Ctrl+Y** 重做
- **Ctrl+H** 打开查找和替换
- **✂ 语气词删除** 一键取消勾选语气词片段
- **保存 SRT** 将编辑内容覆盖保存到原始 SRT 文件

**④ 取消勾选不需要的片段**  
取消勾选要删除的行，右上方实时显示选中片段的总时长。

**⑤ 导出**  
选择输出设置后点击"▶ 用 ffmpeg 剪辑"。

---

## 输出选项

| 选项 | 说明 |
|------|------|
| 合并为一个文件 | 将选中片段拼接为一个视频 |
| 分别保存 | 每个片段单独保存为文件 |
| 重新编码 | 实现精确剪切（速度较慢） |
| 烧录字幕 | 将字幕烧录到视频中（见下文） |
| 输出文件夹 | 自由指定保存位置 |

---

## 字幕烧录

在输出设置中勾选 **"烧录字幕"**，即可将字幕直接嵌入视频。

- 字体：粗体黑体（Mac 上使用 Hiragino Kaku Gothic ProN）
- 样式：白色文字、黑色边框、底部居中
- 字体大小可调（横向视频默认 40px，竖向视频默认 36px）
- **▶ 预览** 可仅渲染选中片段进行确认

---

## 批量转录

点击 **"📂 批量转录"** 可同时处理多个视频。

1. 添加文件或文件夹
2. 选择模型、语言和静音设置
3. 点击 ▶ 开始

- 实时显示当前处理文件：`Processing [2/5]: lecture03.mp4`
- **处理中也可继续添加文件**，新文件将立即加入队列

---

## 键盘快捷键

**SRT 表格操作**

| 按键 | 功能 |
|------|------|
| ↓ / ↑ | 移动到下一行/上一行并播放 |
| X | 切换当前行的勾选状态 |
| D | 进入文本编辑模式 |
| Escape | 退出编辑模式 |
| S | 打开分割对话框 |
| Z | 与上一行合并 |
| C | 与下一行合并 |

**通用**

| 快捷键 | 功能 |
|--------|------|
| Ctrl+Z | 撤销 |
| Ctrl+Y | 重做 |
| Ctrl+H | 打开查找和替换 |

---

## Whisper 模型

| 模型 | 精度 | 速度 | 备注 |
|------|------|------|------|
| large-v3 ★ | ◎ 最高 | 慢 | 推荐 |
| medium ★ | ○ | 普通 | |
| small ★ | △ | 快 | |
| base ★ | △ | 最快 | |
| turbo | ○ | 快 | 首次使用时自动下载 |

**★** = 已下载到本地。  
无 ★ 的模型首次使用时自动下载（large-v3 约 3 GB）。  
CPU 运行时，处理时间约为视频时长的 **3～10 倍**。

---

## 注意事项

- 原始视频文件不会被修改
- "保存 SRT" 会**覆盖**原始 SRT 文件，请提前备份
- 重新转录视频会覆盖现有 SRT 文件

---

## 免责声明

本工具为研究和教育用途的实验性软件，不提供任何保证。作者对使用本工具造成的任何损失不承担责任。

---

## 许可证

可自由使用、修改和分发。

---

## 反馈与错误报告

欢迎通过 **[GitHub Issues](https://github.com/sasakireijiyagi/video-cut-editor/issues)** 分享使用感受、改进建议或错误报告。中文、日语、英语均可。
