Japanese Video AI Subtitler & Synchronized Cinema Player
JavaScript
0
10 commits
updated Oct 5, 2026
Japanese Video AI Subtitler & Synchronized Cinema Player
Fast, vocalization-aware Japanese speech recognition powered by Whisper Large-v3, paired with contextual LLM translation (English & Hindi), silence-detection chunking for long media, and an interactive synchronized video player.



-30dB, d >= 0.5s) for audio files longer than 10 minutes, preventing rate-limit issues and preserving sentence flow without mid-word cuts./chat/completions endpoint (local Ollama, vLLM, custom agents, or proprietary LLMs) directly from the in-app UI..SRT) instant exports.::cue rendering.[Japanese Video File]
│
▼ (FFmpeg Extraction)
[16kHz Mono Audio (Whisper Optimized)]
│
├── If Duration > 10m ──► [Silence Detection Chunking]
│ │
▼ ▼
[Groq Whisper Large-v3 API] ◄─────────────┘
│
▼
[Japanese Dialogue & Timestamped Segments]
│
▼ (Batch LLM Translation Pipeline)
[Groq LLaMA 3.3 / OpenRouter DeepSeek / Custom API]
│
▼
[WebVTT & SRT Subtitles + Interactive Cinema Player]
brew install ffmpeg
sudo apt update && sudo apt install ffmpeg
scoop install ffmpeg
# or
choco install ffmpeg
git clone https://github.com/your-username/nihonsub.git
cd nihonsub
npm install
Copy .env.example to .env:
cp .env.example .env
Open .env and set your credentials:
PORT=3000
GROQ_API_KEY=gsk_your_groq_api_key_here
OPENROUTER_API_KEY=sk-or-v1_optional_openrouter_key
You can use the startup script:
chmod +x run.sh
./run.sh
Or start directly with npm:
npm start
Open your browser at http://localhost:3000.
| Shortcut | Action |
|---|---|
| Space | Play / Pause video |
| ← / → | Seek backward / forward 5 seconds |
| ↑ / ↓ | Increase / decrease volume |
| F | Toggle Fullscreen |
| C | Toggle Subtitles On / Off |
├── audioExtractor.js # FFmpeg audio conversion, metadata & silence-detection chunker
├── transcriber.js # Whisper Large-v3 client & multi-chunk coordinator
├── translator.js # Contextual LLM translation pipeline with rate-limit fallback
├── subtitleGenerator.js # WebVTT, SRT, and bilingual track compiler
├── server.js # Express API server with NDJSON streaming telemetry
├── public/ # Frontend Web UI (HTML5, Vanilla JS, CSS3 Cinema Theme)
│ ├── index.html # Main app markup & cinema player layout
│ ├── style.css # Responsive styling, fullscreen ::cue, animations
│ └── app.js # Player controls, SSE telemetry, transcript auto-scroll
├── storage/ # Ephemeral storage (uploads, audio, subtitles - gitignored)
├── run.sh # Linux / macOS quick startup script
└── package.json # Node.js project manifest & dependencies
MIT License. Feel free to use and modify for your personal and commercial projects.
Japanese Video AI Subtitler & Synchronized Cinema Player
JavaScript
0
10 commits
updated Oct 5, 2026
Japanese Video AI Subtitler & Synchronized Cinema Player
Fast, vocalization-aware Japanese speech recognition powered by Whisper Large-v3, paired with contextual LLM translation (English & Hindi), silence-detection chunking for long media, and an interactive synchronized video player.



-30dB, d >= 0.5s) for audio files longer than 10 minutes, preventing rate-limit issues and preserving sentence flow without mid-word cuts./chat/completions endpoint (local Ollama, vLLM, custom agents, or proprietary LLMs) directly from the in-app UI..SRT) instant exports.::cue rendering.[Japanese Video File]
│
▼ (FFmpeg Extraction)
[16kHz Mono Audio (Whisper Optimized)]
│
├── If Duration > 10m ──► [Silence Detection Chunking]
│ │
▼ ▼
[Groq Whisper Large-v3 API] ◄─────────────┘
│
▼
[Japanese Dialogue & Timestamped Segments]
│
▼ (Batch LLM Translation Pipeline)
[Groq LLaMA 3.3 / OpenRouter DeepSeek / Custom API]
│
▼
[WebVTT & SRT Subtitles + Interactive Cinema Player]
brew install ffmpeg
sudo apt update && sudo apt install ffmpeg
scoop install ffmpeg
# or
choco install ffmpeg
git clone https://github.com/your-username/nihonsub.git
cd nihonsub
npm install
Copy .env.example to .env:
cp .env.example .env
Open .env and set your credentials:
PORT=3000
GROQ_API_KEY=gsk_your_groq_api_key_here
OPENROUTER_API_KEY=sk-or-v1_optional_openrouter_key
You can use the startup script:
chmod +x run.sh
./run.sh
Or start directly with npm:
npm start
Open your browser at http://localhost:3000.
| Shortcut | Action |
|---|---|
| Space | Play / Pause video |
| ← / → | Seek backward / forward 5 seconds |
| ↑ / ↓ | Increase / decrease volume |
| F | Toggle Fullscreen |
| C | Toggle Subtitles On / Off |
├── audioExtractor.js # FFmpeg audio conversion, metadata & silence-detection chunker
├── transcriber.js # Whisper Large-v3 client & multi-chunk coordinator
├── translator.js # Contextual LLM translation pipeline with rate-limit fallback
├── subtitleGenerator.js # WebVTT, SRT, and bilingual track compiler
├── server.js # Express API server with NDJSON streaming telemetry
├── public/ # Frontend Web UI (HTML5, Vanilla JS, CSS3 Cinema Theme)
│ ├── index.html # Main app markup & cinema player layout
│ ├── style.css # Responsive styling, fullscreen ::cue, animations
│ └── app.js # Player controls, SSE telemetry, transcript auto-scroll
├── storage/ # Ephemeral storage (uploads, audio, subtitles - gitignored)
├── run.sh # Linux / macOS quick startup script
└── package.json # Node.js project manifest & dependencies
MIT License. Feel free to use and modify for your personal and commercial projects.