Model or dataset
meizhong986/WhisperJAV avatar
meizhong986/WhisperJAV

WhisperJAV: A Subtitle Pipeline Built Around Whisper's Known Failure Modes

ASR/STT subtitle generator. Uses Qwen3-ASR, local LLM, Whisper, TEN-VAD. Noise-robust for JAV

2,244 stars187 forksPythonMIT

At a glance

What is it?
WhisperJAV is a local, MIT-licensed ASR tool for Japanese adult video subtitles. Its design is organized around three specific failure points of Whisper-family models, not around any single model.
Who is it for?
Adopt WhisperJAV if your source is Japanese speech with heavy non-verbal audio and you want the media to stay on your own machine, since the README states there is no cloud upload. Do not adopt it if you need speaker diarization, translation, or word-level alignment without loading the Qwen forced-aligner, because the documentation does not describe those as supported.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Three Failure Points WhisperJAV Is Organized Around

General-purpose speech recognizers are trained on clean, curated speech. The README argues that JAV audio violates that training distribution in three named ways, and the project's structure follows from them. First, the acoustic profile: low signal-to-noise ratio, dense non-verbal vocalisations whose spectra mimic real Japanese syllables (the README gives fu as an example), wide volume swings from whispers to screams, and theatrical role language that is absent from training corpora. Second, long-form drift: these are feature-length recordings, and over ambiguous stretches such as silence or rhythmic breathing the model's attention collapses and it fills the gap with repeated or invented text, which the README attributes to Whisper-family models generally. Third, what the README calls the pre-processing paradox: blanket denoising and vocal isolation can strip the high-frequency detail needed to separate consonants, and fine-tuning on JAV data tends to overfit because good datasets are scarce. The target user is someone with a local media library who wants SRT files without uploading anything, and who is willing to accept that results vary with source audio quality. That last qualifier is in the README, not an editorial addition.

Scene Detection, VAD Clamping, and Defensive Decoding

The pipeline is a fixed sequence of stages with interchangeable providers behind each one. Audio extraction feeds scene detection, which cuts the media at predicted scene boundaries so downstream stages receive chunks with similar characteristics. Speech enhancement is off by default and applied per-scene when used, which is the direct answer to the pre-processing paradox. Speech segmentation via VAD then locates where speech actually is inside each scene. The README states that this choice matters more than most settings because it decides what the model hears and, in the modern pipelines, where subtitle timestamps come from. The ASR model converts speech to text. Post-processing is the Japanese-specific layer: sentence regrouping aware of ending particles (ね, よ, わ, の), aizuchi (うん, はい) and dialect patterns such as Kansai-ben; hallucination and repetition removal; sound-only line removal that drops subtitle lines consisting purely of moans or breathing kana while protecting real dialogue with an evidence check; timing repair that pulls in the start of a subtitle whose duration is absurdly long for its text while leaving the end fixed; and scene-boundary overlap resolution. VAD clamping is the mechanism doing the heaviest lifting against hallucination, since the model only ever sees detected speech plus measured padding.

ChronosJAV Decouples Words From Time

Qwen3-ASR, anime-whisper and their Japanese finetunes are strong recognizers for this domain, but the README states they do not produce reliable timestamps on their own. ChronosJAV handles this by running text generation and timing as separate stages: the VAD supplies the time skeleton and the model supplies the words. Since v1.9.0, timestamps come from the VAD frames by default, which means no aligner model is loaded and roughly 1 GB less VRAM is used, according to the release notes. A Qwen forced-aligner mode remains available in the settings for word-level alignment, so the alignment capability is not gone, it is opt-in and costs the memory. The same decoupling is why new models can be added without rebuilding the pipeline: anything that turns audio into text can be slotted in. The trade-off is that subtitle timing is only as good as the VAD frame boundaries, and the README does not claim frame-level precision from that path.

Modes, Sensitivity, and the Command Line

The README documents eight modes. balanced uses Faster-Whisper and is the default, described as a good speed and accuracy balance. fidelity uses OpenAI Whisper and is the slowest and most thorough of the classic pipelines. fast pairs OpenAI Whisper with scene detection for mixed-quality audio. faster uses Faster-Whisper with minimal preprocessing for clean audio. qwen (ChronosJAV) and anime-whisper (ChronosJAV) use the modern text-first and anime-tuned recognizers respectively. transformers uses HuggingFace Whisper models including Kotoba. crispasr is experimental and expects a bring-your-own CrispASR build. Sensitivity applies to every mode with three values: conservative for fewer false positives on noisy content, balanced, and aggressive for catching quiet dialogue in whisper or ASMR material. The README states aggressive is the tuning target of most of the project's benchmark work. Installation paths are the Windows installer shortcut or whisperjav-gui for the interface, and whisperjav on the command line. The README gives these examples: whisperjav video.mp4 for defaults, whisperjav video.mp4 --mode balanced --sensitivity aggressive, and whisperjav /path/to/folder --output-dir ./subtitles for a whole folder. Output is SRT by default, WebVTT, or both via --output-format both. Input can be anything FFmpeg reads, including MP4, MKV, AVI, WMV, MP3, WAV and FLAC. Colab and Kaggle notebooks are linked for users without local hardware.

Where the Pipeline Breaks and What It Cannot Do

The README is unusually direct that results vary with source audio quality, and that is the honest boundary of the tool. The post-processing filters are heuristics, not guarantees: sound-only line removal depends on an evidence check to avoid deleting real dialogue, and timing repair only moves a start time inward, so a badly placed end timestamp stays wrong. The crispasr mode is labeled experimental in the mode table, which means it should not be the basis of a production workflow. Nothing in the supplied material describes speaker diarization, translation to English or any other language, or word-level karaoke timing outside the optional Qwen forced-aligner. If those are requirements, WhisperJAV is the wrong tool rather than an incomplete one. There is also a hardware floor implied by the mode table: fidelity and fast run OpenAI Whisper, qwen and anime-whisper run Qwen3-ASR and anime-whisper, and the README mentions VRAM in the context of the aligner, so users on modest GPUs should expect to choose between mode quality and memory headroom.

How It Differs From Running Whisper Directly

The obvious alternative is invoking Whisper or Faster-Whisper yourself, or using a general subtitle tool built on them. The difference is not the recognizer, since WhisperJAV can use the same Whisper weights in its fidelity, fast and faster modes. The difference is everything around the recognizer. A direct Whisper invocation has no scene segmentation, so it processes a mixed acoustic stream rather than coherent environments. It has no VAD clamping stage feeding the model only detected speech with measured padding, which is the project's main defense against hallucination on non-speech. It has no Japanese-aware post-processing for ending particles, aizuchi or dialect regrouping, and no sound-only line removal. A generic subtitle tool will also typically assume clean speech and will not expose a sensitivity knob tuned against this domain. The README frames the whole project as careful plumbing around known model weaknesses rather than a new model, and that framing is accurate to what the repository describes.

Licence, Maintenance, and Upgrade Cost

WhisperJAV is MIT-licensed, which permits commercial and private use with the usual requirement to preserve the copyright notice and licence text. That covers the project's own code, not the third-party models it loads: Qwen3-ASR, anime-whisper, OpenAI Whisper, Faster-Whisper and the HuggingFace models each carry their own licences, and the supplied material does not enumerate them, so anyone shipping output commercially should check each model's terms separately. This is a description of the licence, not legal advice. On maintenance, the release cadence visible in the repository is active: v1.9.0 in August 2026 added FireRedVAD, a QwenASR finetune, CrispASR and improved subtitle timing; v1.8.14 in May 2026 was described as quality hardening and bug fixes; v1.8.13 before that covered anime, qwen and ollama improvements. The upgrade cost is concentrated in the model stack rather than the CLI, since modes are selected by name and sensitivity is a flag, but the v1.9.0 change to VAD-sourced timestamps and the new aligner setting mean anyone who tuned around the older alignment behavior should re-check output timing after upgrading. The project accepts donations via Buy Me a Coffee, which suggests a single-maintainer effort; the material does not state a governance model or a support commitment, so treat the release notes as the authoritative change log.

Editorial conclusion

Adopt WhisperJAV if your source is Japanese speech with heavy non-verbal audio and you want the media to stay on your own machine, since the README states there is no cloud upload. Do not adopt it if you need speaker diarization, translation, or word-level alignment without loading the Qwen forced-aligner, because the documentation does not describe those as supported. Before committing, run the default mode on one file and check the console retiming report, then compare --sensitivity conservative against aggressive on the noisiest segment you have.

Official sources

  1. License: MIT
  2. meizhong986/WhisperJAV on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes