# utube-srt **Repository Path**: dono118/utube-srt ## Basic Information - **Project Name**: utube-srt - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-30 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # utube-srt 一套用于处理视频 / 音频字幕的小工具集,包含三类能力: 1. **从音频识别日文字幕**:基于 [OpenAI Whisper](https://github.com/openai/whisper) 对 MP3 进行语音识别,输出 SRT。 2. **从 YouTube 导出的字幕 JSON 转换**:把 YouTube 风格的 `subtitle.json` 转换为标准 SRT 或纯文本 TXT。 3. **英文字幕 SRT 翻译为中文**:保留原时间轴,逐条翻译生成中文版 SRT。 ## 目录结构 ``` utube-srt/ ├── convert_subtitles.py # subtitle.json -> SRT ├── extract_subtitles_text.py # subtitle.json -> 纯文本 TXT ├── subtitle.json # YouTube 导出的字幕 JSON(示例) ├── en2zh/ │ ├── translate_srt.py # 英文 SRT -> 中文 SRT(Code Runner 可直接运行) │ ├── run.py # 同上(备用入口) │ ├── config.example.json # DeepSeek 配置模板 │ ├── config.json # 本地配置(复制模板后填写,不入库) │ ├── requirements.txt # 翻译脚本依赖 │ ├── en.srt # 英文输入(示例) │ └── zh.srt # 中文输出 └── mp32srt/ ├── jp_subtitle.py # MP3 -> 日文字幕(Whisper 识别) ├── requirements.txt # mp32srt 所需依赖 └── 1.mp3 # 待识别音频(示例) ``` ## 环境要求 - Python 3.11+ - 语音识别(`mp32srt/jp_subtitle.py`)需要安装 [FFmpeg](https://ffmpeg.org/),并建议使用支持 CUDA 的 GPU 以加速。 ## 安装 ```bash pip install -r en2zh/requirements.txt pip install -r mp32srt/requirements.txt ``` > `convert_subtitles.py` 与 `extract_subtitles_text.py` 仅使用 Python 标准库,无需额外依赖。 > `en2zh/translate_srt.py` 需要 `deep-translator`(见 `en2zh/requirements.txt`)。 ## 使用方法 ### 1. MP3 识别为日文字幕 将音频放到 `mp32srt/1.mp3`,然后运行: ```bash python mp32srt/jp_subtitle.py ``` - 使用 Whisper `large` 模型,按日语(`language="ja"`)识别,仅转写不翻译。 - 结果输出到 `mp32srt/jp.srt`。 ### 2. YouTube subtitle.json 转 SRT ```bash python convert_subtitles.py [json_path] [srt_path] ``` - 默认读取 `subtitle.json`,输出到 `subtitle.srt`。 ### 3. YouTube subtitle.json 提取纯文本 ```bash python extract_subtitles_text.py [json_path] [txt_path] ``` - 默认读取 `subtitle.json`,输出到 `subtitle.txt`。 ### 4. 英文 SRT 翻译为中文 SRT 将英文字幕放到 `en2zh/en.srt`,运行(Code Runner 或终端均可): ```bash python en2zh/translate_srt.py ``` - 默认读取 `en2zh/en.srt`,**自动翻译**并输出到 `en2zh/zh.srt`(保留时间轴)。 - **上下文分批翻译**:相邻、间隔短的字幕会合并成一批再译,避免「真正的安静角落 / 学习和深刻的启发」这类生硬断句。 - **推荐 LLM 模式**(更通顺自然):在同目录 `en2zh/config.json` 填写 DeepSeek 配置后运行。 ```bash # 首次:复制配置模板 copy en2zh\config.example.json en2zh\config.json # 编辑 en2zh/config.json,填入 deepseek.api_key python en2zh/translate_srt.py ``` `config.json` 示例: ```json { "backend": "auto", "deepseek": { "api_key": "你的 DeepSeek API Key", "base_url": "https://api.deepseek.com", "model": "deepseek-chat" }, "translate": { "batch_size": 6, "max_gap_ms": 700, "delay_seconds": 0.0 } } ``` - 配置优先级:**命令行参数 > config.json > 环境变量 > 默认值** - 无 API Key 时 `backend: auto` 会自动回退 **Google 分批翻译**(免费但质量一般)。 - 运行时会打印批次进度(默认简洁模式);需要每条详情时加 `--verbose`。 - **Ctrl+C** 终止并保存;**连按两次 Ctrl+C** 强制退出。 - Code Runner 已配置为在**终端**中运行,`Ctrl+C` 更可靠。 - 若遇到请求频率限制,可加 `--delay 0.5`。 - 若只需生成空时间轴、不翻译,加 `--structure-only`。 ## 许可证 本项目采用 [MIT License](LICENSE)。