This is an experimental tool to help language-learners exploit parallel subtitles in various ways. Among other things, it can generate bilingual subtitles, review pages, and decks of Anki cards:
Here's the documentation:
Example usage:
```sh
substudy combine episode0101.es.srt episode0101.en.srt \
episode0101.bilingual.srt
substudy export review episode0101.mkv \ episode0101.es.srt episode0101.en.srt ```
ffmpeg
To use substudy
, you'll need to have the ffmpeg
command-line tools
installed on your system. You can find official packages for most platforms
at the FFmpeg site. But here are some instructions for specific
platforms:
```sh
sudo apt update sudo apt install ffmpeg
brew
installed.brew install ffmpeg ```
If you're running Windows, or if you're a Mac user who's never heard of
brew
, then you'll probably want to download your packages from
the FFmpeg site. Note that these configurations haven't been
tested much, so if you run into problems, please report an issue
so that we can fix it.
substudy
using binary releasesThe easiest way to install substudy
is to use an
official binary release for your platform. Download the
appropriate *.zip
file, open it, and install the binary somewhere your
operating system can find it. Here are some instructions for common
platforms:
```sh
unzip substudy-*.zip sudo cp substudy /usr/local/bin ```
The Linux binaries are statically linked, so they should work on any
reaonably modern x86_64 distribution. For other architectures, you can try
to install using cargo
as described below.
For Windows, you'll have to figure it out yourself for now. But if you do, please file an issue and tell us how you did it, so that we can update the instructions!
substudy
using cargo
You can also install substudy
is using the cargo install
command. To
use this, you'll need a recent version of Rust. If you already
have rustup
installed, you can run:
sh
rustup update stable
If you've never heard of rustup
, you can look at the instructions on
the rustup
page, or you can just run the following:
```sh
curl https://sh.rustup.rs -sSf | sh ```
Once that is set up, you can then install substudy
by running:
sh
cargo install substudy
substudy
Assuming you have Rust and the other dependencies installed as described above, you can run:
sh
git clone https://github.com/emk/substudy.git
cd substudy
cargo build
If this fails, please feel free to submit an issue.
substudy
as a libraryYou can find API documentation on the Rust CI site. Note that
all APIs are experimental and subject to change. If you want to use
substudy
as a library in your own tools, you're encouraged to do so, but
it might be worth letting me know which APIs you're using so that I can
stabilize them.
Please feel welcome to send me a pull request or submit an issue!
Make sure everything continues to work with your changes:
sh
cargo test
Things which I'd love to see substudy
support include:
*.srt
conversion, using OCR and character
databases. There are several open source Windows tools which tackle
this, but it should be theoretically possible to do a lot better.Things which I'll probably merge if they come with clean code and solid test suites:
*.srt
.I'm happy to leave serious, interactive subtitle editing to Subtitle Edit, and to focus on cases related to language learning, and to things which are convenient to call from the command line. I'd also be happy to have implementations of the most useful subs2srs features in command-line form—it's a wonderful and useful program, but it has too many configuration options and it requires too much work using external utilities.
This program is released into the public domain using the CC0 public domain declaration. Our test suites contain a half-dozen lines of subtitles from copyrighted TV shows, which should presumably fall under de minimis, fair use or equivalent exceptions in most jurisdictions.