ByteNoteByteNote

字节笔记本

2026年2月18日

generate_subtitle:Whisper + M2M100 音频字幕生成服务

API中转
¥120

本文介绍 generate_subtitle,一个使用 OpenAI Whisper 和 M2M100 构建的音频字幕生成服务。它可以自动将音频/视频转换为字幕,并支持多语言翻译。

项目简介

generate_subtitle 是一个开源的音频字幕生成工具,由 zeke-chin 开发。它结合了 OpenAI 的 Whisper 模型(语音识别)和 Meta 的 M2M100 模型(机器翻译),实现了从音频到多语言字幕的完整流程。

该项目适合需要为视频生成字幕、进行字幕翻译的内容创作者和开发者使用。

核心特性

  • 语音识别: 使用 OpenAI Whisper 模型进行高质量的语音识别
  • 多语言翻译: 基于 M2M100 支持 100 种语言之间的互译
  • 批量处理: 支持批量处理多个音频/视频文件
  • 多种输出格式: 支持 SRT、VTT、TXT 等字幕格式
  • GPU 加速: 支持 CUDA 加速,提升处理速度
  • 本地部署: 完全本地运行,保护数据隐私

技术栈

  • 语音识别: OpenAI Whisper
  • 机器翻译: Meta M2M100
  • 编程语言: Python
  • 深度学习框架: PyTorch
  • 依赖管理: pip

安装指南

前置要求

  • Python 3.8+
  • CUDA 支持(可选,用于 GPU 加速)
  • 足够的磁盘空间(模型文件约 3-5GB)

安装步骤

bash
# 克隆仓库
git clone https://github.com/zeke-chin/generate_subtitle.git
cd generate_subtitle

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/macOS
# 或 venv\Scripts\activate  # Windows

# 安装依赖
pip install -r requirements.txt

模型下载

首次运行时需要下载模型文件:

bash
# 下载 Whisper 模型
# 会自动下载到 ~/.cache/whisper/

# 下载 M2M100 模型
# 会自动下载到 ~/.cache/huggingface/

国内用户可以通过镜像加速下载,详见项目文档。

快速开始

基本用法

bash
# 生成中文字幕
python generate_subtitle.py --input video.mp4 --language zh

# 生成英文字幕并翻译为中文
python generate_subtitle.py --input video.mp4 --language en --translate zh

# 批量处理
python generate_subtitle.py --input_dir ./videos/ --output_dir ./subtitles/

Python API 使用

python
from generate_subtitle import SubtitleGenerator

# 初始化生成器
generator = SubtitleGenerator(
    whisper_model="base",
    translation_model="facebook/m2m100_418M"
)

# 生成字幕
subtitles = generator.generate(
    audio_path="video.mp4",
    source_lang="en",
    target_lang="zh"
)

# 保存为 SRT
generator.save_srt(subtitles, "output.srt")

支持的模型

Whisper 模型

模型大小速度准确率适用场景
tiny39 MB最快一般快速测试
base74 MB良好日常使用
small244 MB中等较好推荐
medium769 MB较慢高质量需求
large1550 MB最慢最好专业场景

M2M100 模型

  • m2m100_418M: 4.18亿参数,平衡速度和效果
  • m2m100_1.2B: 12亿参数,更高翻译质量

使用场景

场景 1:为英文视频生成中文字幕

bash
python generate_subtitle.py \
  --input english_video.mp4 \
  --source-lang en \
  --target-lang zh \
  --output subtitle.srt

场景 2:批量处理视频文件

bash
python batch_process.py \
  --input-dir ./videos/ \
  --output-dir ./subtitles/ \
  --source-lang auto \
  --target-lang zh

场景 3:仅生成字幕不翻译

bash
python generate_subtitle.py \
  --input video.mp4 \
  --language zh \
  --no-translate

注意事项

  1. 硬件要求: 使用 GPU 可大幅提升处理速度,CPU 也可以运行但较慢
  2. 内存占用: large 模型需要较多内存,建议使用 medium 或 small
  3. 翻译质量: 机器翻译可能存在误差,建议人工校对重要内容
  4. 音频质量: 清晰的音频可获得更好的识别效果

相关资源

许可证

本项目采用 MIT 许可证开源。

分享: