https://github.com/cylind/scribe2srt
一款基于 PySide6 和 ElevenLabs API 的桌面应用,能将音视频或JSON转录稿智能地转换为高质量SRT字幕。特别为中、日、韩、英等语言优化了排版规则。
https://github.com/cylind/scribe2srt
cjk desktop-app elevenlabs-api pyside6 python qt speech-to-text srt subtitles transcription
Last synced: 3 months ago
JSON representation
一款基于 PySide6 和 ElevenLabs API 的桌面应用,能将音视频或JSON转录稿智能地转换为高质量SRT字幕。特别为中、日、韩、英等语言优化了排版规则。
- Host: GitHub
- URL: https://github.com/cylind/scribe2srt
- Owner: cylind
- Created: 2025-06-11T06:54:53.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-08T10:15:59.000Z (11 months ago)
- Last Synced: 2025-07-08T11:31:27.433Z (11 months ago)
- Topics: cjk, desktop-app, elevenlabs-api, pyside6, python, qt, speech-to-text, srt, subtitles, transcription
- Language: Python
- Homepage:
- Size: 1.88 MB
- Stars: 32
- Watchers: 0
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Scribe2SRT v0.3.3
一个基于 ElevenLabs Speech-to-Text API 的音视频转字幕工具,支持多语言转录和专业字幕制作标准。
## 🚀 主要特性
### 全新的两阶段字幕分割算法
- **句子预分割**:基于标点符号优先级的语义分割
- **智能合并**:基于CPS、CPL、显示时间等规则的优化合并
- **语义完整性**:避免破坏句子结构,提升可读性
### 显著的质量改善
| 指标 | v0.2.x | v0.3.x | 改善幅度 |
|------|--------|--------|----------|
| 标点问题率 | 7.72% | 2.81% | **+4.91%** ✅ |
| 时长过短率 | 5.30% | 0.64% | **+4.66%** ✅ |
| CPS过高率 | 10.13% | 7.02% | **+3.11%** ✅ |
| 整体合规率 | 75.41% | 79.11% | **+3.71%** ✅ |
| 标点结尾率 | - | 97.7% | **显著提升** ✅ |
## 功能特点
- 🎯 **高质量转录**:基于 ElevenLabs 先进的语音识别技术
- 🌍 **多语言支持**:支持中文、英文、日文等多种语言
- 📝 **专业字幕标准**:遵循 Netflix 等行业标准的字幕制作规范
- ⚡ **智能分割**:基于标点符号优先级的语义分割算法
- 🔄 **智能重试机制**:失败时自动保留临时文件,重试时快速恢复
- 🎨 **用户友好界面**:简洁直观的图形用户界面,统一的视觉设计
- 📊 **实时进度反馈**:清晰的进度显示和状态提示
- 🛠️ **质量分析**:内置字幕质量检测和优化建议
## 安装要求
### 必需依赖
- Python 3.8+
- PySide6 (Qt界面库)
- requests (网络请求)
- requests-toolbelt (文件上传)
### 可选依赖
- FFmpeg (推荐安装,用于视频文件处理)
## 快速开始
1. **克隆项目**
```bash
git clone https://github.com/your-username/scribe2srt.git
cd scribe2srt
```
2. **安装依赖**
```bash
pip install -r requirements.txt
```
3. **运行程序**
```bash
python app.py
```
## 使用方法
1. **选择文件**:拖拽或点击选择音视频文件
2. **设置选项**:选择源语言和其他处理选项
3. **开始转录**:点击"生成字幕"按钮
4. **获取结果**:程序会自动生成 SRT 字幕文件
## 支持的文件格式
### 音频格式
- MP3, WAV, FLAC, M4A, AAC, OGG
### 视频格式
- MP4, MOV, MKV, AVI, FLV, WEBM
### 转录数据
- JSON (ElevenLabs 格式)
## 字幕质量标准
本工具遵循以下专业字幕制作标准:
- **时长控制**:最短 0.83 秒,最长 7.0 秒
- **字符密度**:CJK 语言每秒最多 15 字符,拉丁语言每秒最多 15 字符
- **行长限制**:CJK 语言每行最多 25 字符,拉丁语言每行最多 42 字符
- **语义完整性**:优先保持句子完整,基于标点符号优先级分割
## 高级功能
### 字幕设置
- 自定义时长和间隔参数
- 调整字符密度限制
- 设置每行字符数限制
### 并发处理
- 支持大文件分段并发处理
- 可配置并发数和重试策略
- API 速率限制控制
### 智能重试机制
- 失败时自动保留临时文件
- 重试时避免重复音频提取
- 完整的状态恢复和进度显示
- 智能错误处理和异常恢复
### 质量分析
- 自动检测字幕质量问题
- 提供详细的合规性报告
- 生成改进建议
## 项目结构
```
scribe2srt/
├── app.py # 主应用入口
├── requirements.txt # 依赖文件
├── README.md # 项目文档
├── settings.json # 配置文件
├── core/ # 核心功能模块
│ ├── __init__.py # 包初始化
│ ├── config.py # 配置管理
│ ├── srt_processor.py # 字幕处理器
│ ├── sentence_splitter.py # 句子分割器
│ ├── intelligent_merger.py # 智能合并器
│ ├── ffmpeg_utils.py # FFmpeg工具
│ ├── async_chunk_processor.py # 异步处理
│ └── worker.py # 工作线程
├── ui/ # 用户界面模块
│ ├── __init__.py # 包初始化
│ ├── main_window.py # 主窗口
│ ├── settings_dialog.py # 设置对话框
│ ├── async_settings_dialog.py # 异步设置对话框
│ ├── widgets.py # 自定义组件
│ └── segmented_progress_bar.py # 进度条
├── api/ # API客户端模块
│ ├── __init__.py # 包初始化
│ └── client.py # API客户端
├── tests/ # 测试模块
│ ├── __init__.py # 包初始化
│ ├── test_subtitle_rules.py
│ └── optimize_based_on_analysis.py
├── sample/ # 示例文件
└── docs/ # 文档
└── 字幕制作的通用原则.md
```
## 技术特点
### 新一代字幕分割算法
- **两阶段处理**:句子预分割 + 智能合并
- **标点符号优先**:基于语言学规律的分割策略
- **语义完整性**:避免破坏句子结构
- **多语言优化**:针对 CJK 和拉丁语言的差异化处理
### 质量保证
- **实时质量检测**:处理过程中自动检测质量问题
- **合规性验证**:确保符合行业标准
- **智能优化**:自动调整参数以提高质量
## 核心改进
### 算法优化
- **移除长停顿检测**:用基于标点符号的语义分割替代时间间隔检测
- **智能合并策略**:基于CPS、CPL、显示时间等多规则约束
- **语义完整性**:显著减少句子中断,提升可读性
- **模块化架构**:重新组织代码结构,提高可维护性
### 技术创新
- **标点符号优先级**:高优先级(。!?)、中优先级(;:)、低优先级(,、)
- **动态CPS调整**:根据文本长度智能调整字符密度限制
- **智能收益计算**:指导合并决策的收益评估算法
- **智能重试机制**:失败时保留状态,重试时快速恢复
- **实时进度反馈**:统一的进度显示和状态管理
## 许可证
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
## 贡献
欢迎提交 Issue 和 Pull Request!
## 更新日志
### v0.3.3 (最新)
- 🔄 重试机制全面优化:修复临时文件管理,重试时不再重复提取音频
- 📊 进度显示全面改进:修复重试进度显示,优化信息展示层次
- 🎨 界面优化:简化进度条颜色方案,统一视觉风格
- 🛠️ 错误处理增强:修复多个稳定性问题,提升程序健壮性
### v0.3.1
- 🚀 全新的两阶段字幕分割算法
- 📊 显著提升标点符号分割准确率(从 7.72% 降至 2.81%)
- 🏗️ 重构代码架构,模块化设计
- 📈 整体合规率从 75.41% 提升至 79.11%
### v0.2.x
- 基础转录功能
- 简单的字幕分割算法
- 基本的用户界面