字幕
开源字幕生成工具,实现无缝内容翻译。
主要特点:
- 开源:可免费使用、修改和分发。
- 自托管:在自己的服务器上运行,增强控制和隐私。
- AI 驱动:利用先进的机器学习技术,生成准确且自然的字幕。
- 多语言支持:为多种语言的视频生成字幕。
- 轻松集成:无缝融入现有工作流程。
我做这个项目是出于兴趣,但我觉得它也可能对其他人有用。
安装
FFmpeg
首先,你需要安装 FFmpeg。以下是安装方法:
# 在 Linux 上
sudo apt install ffmpeg
运行
你可以使用以下命令从命令行运行脚本:
python subtitle.py <文件路径 | 视频URL> [--model <模型名称>]
将 <文件路径 | 视频URL>
替换为你的视频文件路径。--model
参数是可选的。如果不提供,默认使用 'base' 模型。
例如:
python subtitle.py /path/to/your/video.mp4 --model base
这将在 /path/to/your/video.mp4
的视频上运行脚本,使用 base
模型。
请将 /path/to/your/video.mp4
替换为你实际的视频文件路径。
模型
以下是你可以使用的模型:
注意:只有当视频是英语时才使用 .en
模型。
- tiny.en
- tiny
- tiny-q5_1
- tiny.en-q5_1
- base.en
- base
- base-q5_1
- base.en-q5_1
- small.en
- small.en-tdrz
- small
- small-q5_1
- small.en-q5_1
- medium
- medium.en
- medium-q5_0
- medium.en-q5_0
- large-v1
- large-v2
- large
- large-q5_0
高级用法
你可以通过使用以下参数来修改 whisper
二进制文件的行为:
./whisper [选项] file0.wav file1.wav ...
选项
以下是你可以与 whisper
二进制文件一起使用的选项:
选项 | 默认值 | 描述 |
---|---|---|
-h, --help | 显示帮助信息并退出 | |
-t N, --threads N | 4 | 计算过程中使用的线程数 |
-p N, --processors N | 1 | 计算过程中使用的处理器数 |
-ot N, --offset-t N | 0 | 时间偏移(毫秒) |
-on N, --offset-n N | 0 | 段索引偏移 |
-d N, --duration N | 0 | 处理的音频持续时间(毫秒) |
-mc N, --max-context N | -1 | 存储的最大文本上下文标记数 |
-ml N, --max-len N | 0 | 最大段落长度(字符) |
-sow, --split-on-word | false | 按词分割而不是按标记分割 |
-bo N, --best-of N | 2 | 保留的最佳候选数量 |
-bs N, --beam-size N | -1 | 束搜索的束大小 |
-wt N, --word-thold N | 0.01 | 词时间戳概率阈值 |
-et N, --entropy-thold N | 2.40 | 解码器失败的熵阈值 |
-lpt N, --logprob-thold N | -1.00 | 解码器失败的对数概率阈值 |
-debug, --debug-mode | false | 启用调试模式(如转储 log_mel) |
-tr, --translate | false | 将源语言翻译成英语 |
-di, --diarize | false | 立体声音频说话人分离 |
-tdrz, --tinydiarize | false | 启用 tinydiarize(需要 tdrz 模型) |
-nf, --no-fallback | false | 解码时不使用温度回退 |
-otxt, --output-txt | true | 将结果输出到文本文件 |
-ovtt, --output-vtt | false | 将结果输出到 vtt 文件 |
-osrt, --output-srt | false | 将结果输出到 srt 文件 |
-olrc, --output-lrc | false | 将结果输出到 lrc 文件 |
-owts, --output-words | false | 输出生成卡拉 OK 视频的脚本 |
-fp, --font-path | /System/Library/Fonts/Supplemental/Courier New Bold.ttf | 卡拉 OK 视频的等宽字体路径 |
-ocsv, --output-csv | false | 将结果输出到 CSV 文件 |
-oj, --output-json | false | 将结果输出到 JSON 文件 |
-ojf, --output-json-full | false | 在 JSON 文件中包含更多信息 |
-of FNAME, --output-file FNAME | 输出文件路径(不含文件扩展名) | |
-ps, --print-special | false | 打印特殊标记 |
-pc, --print-colors | false | 打印颜色 |
-pp, --print-progress | false | 打印进度 |
-nt, --no-timestamps | false | 不打印时间戳 |
-l LANG, --language LANG | en | 口语语言('auto' 为自动检测) |
-dl, --detect-language | false | 自动检测语言后退出 |
--prompt PROMPT | 初始提示 | |
-m FNAME, --model FNAME | models/ggml-base.en.bin | 模型路径 |
-f FNAME, --file FNAME | 输入 WAV 文件路径 | |
-oved D, --ov-e-device DNAME | CPU | 用于编码推理的 OpenVINO 设备 |
-ls, --log-score | false | 记录标记的最佳解码器分数 |
-ng, --no-gpu | false | 禁用 GPU |
二进制文件运行示例
以下是如何使用 whisper 二进制文件的示例:
./whisper -m models/ggml-tiny.en.bin -f Rev.mp3 out.wav -nt --output-vtt
许可证
参考与致谢
- https://github.com/openai/whisper
- https://openai.com/blog/whisper/
- https://github.com/ggerganov/whisper.cpp
- https://github.com/innovatorved/whisper.api
作者
🚀 关于我
只是尝试成为一名开发者!
支持
如需支持,请发送电子邮件至 vedgupta@protonmail.com