Merge pull request #792 from TimoYoung/main

AI字幕自动生成v2.1 引入任务队列,支持监听媒体入库自动生成字幕,增加任务状态展示界面,支持清除历史记录
This commit is contained in:
jxxghp
2025-06-04 21:34:05 +08:00
committed by GitHub
4 changed files with 785 additions and 591 deletions

View File

@@ -25,7 +25,8 @@
"AutoSubv2": {
"name": "AI字幕自动生成(v2)",
"description": "使用whisper自动生成视频文件字幕,使用大模型翻译字幕成中文。",
"version": "1.2",
"labels": "字幕",
"version": "2.1",
"icon": "autosubtitles.jpeg",
"author": "TimoYoung",
"level": 1,
@@ -33,7 +34,9 @@
"history": {
"v1.0": "first stable version",
"v1.1": "优化字幕翻译逻辑,优化日志输出",
"v1.2": "fix openai_proxy打开时,翻译失败的问题,优化日志输出"
"v1.2": "fix openai_proxy打开时,翻译失败的问题,优化日志输出",
"v2.0": "1.引入任务队列 2.支持监听媒体入库自动生成字幕 3.增加任务状态展示界面",
"v2.1": "支持清除历史记录"
}
},
"CustomSites": {

View File

@@ -13,65 +13,72 @@
- 支持批量翻译以提高效率
- 支持使用滑动窗口配置上下文提高翻译连贯性
- 支持多种字幕提取语言偏好设置
- 支持监听媒体入库事件自动执行字幕生成
- 支持手动触发字幕生成任务
- 支持任务队列机制,确保并发安全
- 支持任务状态列表展示(等待中 / 进行中 / 已完成 / 失败)
## 配置说明
### 基础配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 立即运行一次 | 保存配置后是否立即执行一次任务 | 否 |
| 本地字幕提取策略 | 设置字幕提取的优先级策略 | 优先原音字幕 |
| 翻译为中文 | 是否在需要时使用大模型将字幕翻译成中文 | 是 |
| 发送通知 | 是否发送任务执行通知 | 否 |
| 配置项 | 说明 | 默认值 |
|----------|------------------------|--------|
| 启用插件 | 是否启用插件 | 否 |
| 清除历史记录 | 清除已完成的任务记录(完成、跳过或失败) | 否 |
| 媒体入库自动执行 | 监听到媒体入库事件后自动执行字幕生成 | 是 |
| 手动执行一次 | 保存配置后立即执行一次任务 | 否 |
| 发送通知 | 是否发送任务执行通知 | 否 |
| 文件大小MB | 最小处理的视频文件大小,小于该值的文件不处理 | 10 |
| 字幕源语言偏好 | 设置字幕提取的优先级策略 | 优先原音字幕 |
| 翻译为中文 | 是否使用大模型将字幕翻译成中文 | 是 |
### ASR配置
### ASR配置(语音识别)
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 允许从音轨提取字幕 | 是否允许从视频音轨中提取字幕 | 是 |
| ASR引擎 | 语音识别引擎 | faster-whisper |
| 模型 | 使用的模型大小 | base |
| 使用代理下载模型 | 是否使用代理下载模型 | 是 |
| 配置项 | 说明 | 默认值 |
|---------------------|------------------|------|
| 允许从音轨提取字幕 | 是否允许从视频音轨中提取字幕 | 是 |
| faster-whisper 模型选择 | 使用的 Whisper 模型大小 | base |
| 使用代理下载模型 | 是否使用代理下载模型 | 是 |
### 翻译配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 启用批量翻译 | 是否启用批量翻译以提高效率 | 是 |
| 每批翻译行数 | 每批处理的字幕行数 | 20 |
| 上下文窗口大小 | 翻译时考虑的上下文行数 | 5 |
| llm请求重试次数 | 翻译失败时的重试次数 | 3 |
| 配置项 | 说明 | 默认值 |
|-----------|----------------------|-----|
| 启用批量翻译 | 是否启用批量翻译以提高效率 | 是 |
| 每批翻译行数 | 每批处理的字幕行数 | 20 |
| 上下文窗口大小 | 翻译时考虑的上下文行数 | 5 |
| LLM请求重试次数 | 翻译失败时的重试次数 | 3 |
| 翻译英文时合并整句 | 对英文字幕先合并单词再翻译,提升翻译质量 | 否 |
### 其他配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 媒体路径 | 要处理的媒体文件或文件夹绝对路径,每行一个 | 空 |
| 文件大小MB | 最小处理文件大小 | 10 |
### 手动运行配置
| 配置项 | 说明 | 默认值 |
|------|-----------------------|-----|
| 媒体路径 | 要处理的媒体文件或文件夹绝对路径,每行一个 | 空 |
## 字幕提取策略说明
字幕提取优先级:外挂字幕 > 内嵌字幕 > 音轨识别
字幕提取策略的选择主要取决于视频源语言和大模型的翻译能力。对于包含多语言字幕的非英语视频,建议根据以下原则选择策略:
1. 仅英文字幕
- 仅使用英文字幕作为翻译源
- 当视频无英文字幕时使用ASR提取
- 适用于大模型仅支持中英互译的场景
- 仅使用英文字幕作为翻译源
- 当视频无英文字幕时使用ASR提取
- 适用于大模型仅支持中英互译的场景
2. 优先英文字幕
- 优先使用英文字幕作为翻译源
- 无英文字幕时,使用其他语言字幕
- 当所有字幕都不存在时使用ASR提取
- 适用于大模型在英译中任务上表现更好的场景
- 优先使用英文字幕作为翻译源
- 无英文字幕时,使用其他语言字幕
- 当所有字幕都不存在时使用ASR提取
- 适用于大模型在英译中任务上表现更好的场景
3. 优先原音字幕
- 优先使用视频原始语言的字幕
- 无原音字幕时,使用英文字幕
- 当所有字幕都不存在时使用ASR提取
- 适用于大模型支持多语言翻译且翻译质量较好的场景
- 优先使用视频原始语言的字幕
- 无原音字幕时,使用英文字幕
- 当所有字幕都不存在时使用ASR提取
- 适用于大模型支持多语言翻译且翻译质量较好的场景
## 注意事项
@@ -79,10 +86,13 @@
2. 首次使用音轨识别功能时会自动从HuggingFace下载模型。开启"使用代理下载模型"选项会使用MP配置的代理。
3. 媒体路径支持单个文件或文件夹的绝对路径。选择文件夹时会递归处理其中的所有视频文件,外挂字幕将从媒体文件同级目录中查找
4. 批量翻译通过一次处理多行字幕来减少API调用次数提高效率。如果翻译结果与原文行数不匹配系统会自动降级为逐行翻译
5. 上下文窗口大小和批量翻译行数需要根据大模型的推理能力来调整。当模型能力不足时,过大的批量或上下文窗口可能会影响翻译质量
5. 上下文窗口大小和批量翻译行数需要根据大模型的推理能力来调整。当模型能力不足时,过大的批量或上下文窗口可能会影响翻译质量
6. 翻译后的中文字幕会打上“机翻”标签。
7. 插件运行时会启动一个后台线程用于消费任务队列,插件关闭时会清空队列并终止当前任务。
## todo
- 监听媒体入库事件自动调用字幕生成
- 任务完成后调用媒体库刷新
- 历史任务管理与展示
- 独立的大模型调用
- 工作流/api接口
- 任务完成后调用媒体库刷新

File diff suppressed because it is too large Load Diff