Blazing-Fast Single-Pass Anime Audio Condenser for Japanese Passive Immersion.
┌───────────────────────────────────────────────────────────────┐
│ 🎧 O T O P O D ── Anime Immersion Audio Condenser │
└───────────────────────────────────────────────────────────────┘
otopod (音Pod) is a high-performance terminal utility written in Rust that replaces impd. It condenses raw anime video files into pure Japanese dialogue audio using subtitle timestamps — in a single ffmpeg pass, with zero temporary files and in under 3 seconds.
Designed to pair directly with subsink for a complete end-to-end Japanese passive immersion pipeline.
- ⚡ Single-Pass Audio Condensing: Parses subtitle timestamps and runs one
ffmpegaselectfilter directly to the output.opusfile — no 150+ temp chunks in/tmp. - 🦀 50× Faster than
impd: Condenses a full 24-minute anime episode in 2–3 seconds instead of 80+ seconds. - 💾 Zero Disk Thrashing: No temporary chunk files. Minimal RAM (< 15 MB).
- 🔍 Auto Subtitle Detection: Automatically finds
<stem>.ja.srtor.ja.assgenerated bysubsinkalongside your video file. - 🎵 MPD-Ready Output: Writes condensed audio directly to your configured output directory (default:
~/Music/immersionpod/current/). - 📊 Retention Stats: Reports condensed duration and percentage of original audio retained.
- 🎨 Minimalist Dark TUI: Clean terminal UI with spinners, progress cards, and deep anime color palette.
- 🗂️ Configurable Output: Change output directory anytime via
~/.config/otopod/config.toml— auto-created on first run.
impd (bash) |
otopod (Rust) |
|
|---|---|---|
| Episode condense time | ~82 seconds | ~3 seconds |
| Temp files created | 150+ chunks in /tmp |
Zero |
| RAM usage | Heavy | < 15 MB |
| ffmpeg passes | One per subtitle line | Single pass |
-
Rust & Cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
ffmpeg (for audio extraction and condensing):
# Arch Linux / Omarchy sudo pacman -S ffmpeg -
A synced
.ja.srtsubtitle file alongside your video.Use subsink to automatically fetch and align Japanese subtitles!
curl -fsSL -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/Praveensenpai/otopod/main/install.sh | bashgit clone https://github.com/Praveensenpai/otopod.git
cd otopod
cargo build --release
install -m 755 target/release/otopod ~/.local/bin/otopodRun otopod anywhere — it scans ~/Videos and presents an interactive file picker:
otopodPass the video file directly for instant condensing:
otopod "Ore wo Suki nano wa Omae dake ka yo - 01.mkv"Pair with subsink for a complete one-two workflow:
# Step 1 — Fetch & auto-sync Japanese subtitles
subsink
# Step 2 — Condense anime audio using synced subtitle timestamps
otopod "Anime Title - 01.mkv"
# Step 3 — Update MPD playlist and start background immersion audio
mpc update && mpc play[Raw .mkv] ──► [subsink] ──► [.ja.srt] ──► [otopod] ──► [condensed .ogg] ──► [mpd / background immersion]
On first run, otopod automatically creates a config file at:
~/.config/otopod/config.toml
# otopod configuration
# Edit output_dir to change where condensed audio files are saved.
output_dir = "/home/user/Music/immersionpod/current"Edit output_dir to any folder you prefer — supports ~ for home directory:
output_dir = "~/Videos/condensed"Condensed audio is written to your configured output_dir as:
<output_dir>/<video_stem>.opus
Default:
~/Music/immersionpod/current/<video_stem>.opus
MIT License © Praveensenpai
