Sushi:基于音频流的智能字幕同步工具
Sushi是一个基于音频流的SRT和ASS字幕自动对齐工具,能够智能匹配不同版本视频的字幕文件,让你彻底告别繁琐的手动调整。
项目简介
想象一下这样的场景:你有一个已经与某个视频文件同步的字幕文件,但你想通过合法途径将这些字幕用于你拥有的其他视频。常见的例子包括电视版与蓝光版、PAL与NTSC视频以及不同国家发布的版本。在很多情况下,字幕不会立即匹配,你需要进行同步。
Sushi的设计目的就是为了避免所有手动同步的麻烦。它通过寻找音频流中的相似性来同步字幕。该工具非常快速,可以在你想要观看视频时立即使用。
核心工作原理
Sushi需要提供两个音频文件和一个与其中一个文件匹配的字幕文件。对于字幕的每一行,脚本将从源音频流中提取对应的音频,并尝试在目标音频流中找到最接近的相似模式,从而获得偏移量,最终应用于字幕。
该工具基于Python、NumPy和OpenCV库构建,并支持可选的FFmpeg,使其能够处理多种音频和视频格式。
快速开始
最基本的命令行如下所示:
python sushi.py --src hdtv.wav --dst bluray.wav --script subs.ass
输出文件名是可选的,默认使用"{destination_path}.sushi.{subtitles_format}"格式。
需要注意的是,WAV并不是Sushi唯一可以处理的格式。如果FFmpeg可用,它可以直接处理音视频文件并解码各种音频格式。
系统要求
Sushi支持Windows、Linux和OS X三大操作系统。要运行它,你需要安装以下组件:
- Python 2.7.x
- NumPy(1.8或更新版本)
- OpenCV 2.4.x或更新版本
可选组件包括:
- FFmpeg用于任何类型的解复用
- MkvExtract用于解复用时的更快时间码提取
- SCXvid-standalone如果你希望Sushi制作关键帧
- Colorama用于在Windows上为控制台输出添加颜色
安装指南
Windows系统
Windows二进制版本包含所有必需的组件和Colorama,因此如果你使用二进制分发版,就不需要安装它们。如果你想要使用Sushi的解复用功能,仍然需要自行下载其他应用程序。
Mac OS X系统
目前没有为OS X提供二进制包,因此你必须使用脚本形式。假设你已经安装了python 2、pip和homebrew,运行以下命令:
brew tap homebrew/science
brew install git opencv
pip install numpy
git clone https://gitcode.com/gh_mirrors/sus/Sushi
# 如果你希望全局运行sushi,创建一个符号链接
ln -s `pwd`/Sushi/sushi.py /usr/local/bin/sushi
# 安装一些可选的依赖项
brew install ffmpeg mkvtoolnix
Linux系统
如果你有apt-get可用,安装过程非常简单。
sudo apt-get update
sudo apt-get install git python python-numpy python-opencv
git clone https://gitcode.com/gh_mirrors/sus/Sushi
ln -s `pwd`/Sushi/sushi.py /usr/local/bin/sushi
项目结构
Sushi项目包含多个核心模块:
- sushi.py:主程序入口,包含字幕同步的核心算法
- subs.py:字幕文件解析和处理模块
- demux.py:音视频解复用功能
- wav.py:WAV音频文件处理
- keyframes.py:关键帧处理
- chapters.py:章节信息处理
- common.py:通用工具函数
技术特点
-
高效处理能力:Sushi的智能算法能够在短时间内处理大型音视频文件,即使是高清影片也能快速完成字幕同步。
-
广泛兼容性:支持Windows、Linux和OS X三大操作系统,配合FFmpeg可处理多种音视频格式。
-
便捷操作体验:简洁的命令行界面搭配清晰的参数选项,让技术新手也能轻松上手。
应用场景
跨版本视频共享 当你从不同渠道获取同一部影片的多个版本时,Sushi能够快速同步已有字幕文件,确保观影体验无缝衔接。
个人媒体库管理 对于拥有大量不同来源视频的收藏者,Sushi可以统一所有字幕文件,大幅提升媒体库的管理效率。
多语言翻译支持 在字幕翻译工作中,Sushi确保字幕与音频的精确匹配,为多语言内容创作提供可靠保障。
使用限制
该脚本永远无法正确处理逐帧排版。如果底层视频流发生变化(例如具有不同的电视电影模式),你可能会得到不正确的输出。
该脚本无法改善不良的时序。如果原始行时序错误,输出文件中的时序也会错误。
简而言之,虽然这可能对于即时观看是安全的,但你不应该盲目地使用它来永久存储字幕。
测试与验证
项目包含完整的测试套件,位于tests目录下,涵盖字幕解析、时间码处理、解复用等核心功能的单元测试。
通过运行python run-tests.py可以执行所有测试用例,确保功能的正确性和稳定性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



