I grew tired of trying to follow shows over the noise of kids in the background. Subtitles became essential, and here is how I handle it.
Subgen is a small tool that turns the audio from your personal media into subtitle files. It listens for activity from media servers and creates SRT files that your player can use. I run it on my own library and it has become part of my routine for anything that arrives without usable subtitles or that has subtitle timing problems.
I use the Docker version with the environment variable WHISPER_MODEL set to medium. That configuration gives me a good balance of speed and accuracy for the shows and movies I watch. Subgen relies on webhooks from Jellyfin, Emby, Plex, or Tautulli to know when a file is added or played. It can also be used as a Whisper provider inside Bazarr so you can call it from there when you want to generate subtitles on demand. The transcription engine supports a wide range of audio languages as listed in the project documentation and can transcribe into English or keep the original language depending on how you configure it.

When a webhook event arrives Subgen extracts the audio track and runs it through the Whisper model. It uses stable ts and faster whisper under the hood which allows it to run on either Nvidia GPUs or CPUs depending on what your server has available. After processing it writes an SRT file next to the media file and your media server picks that up like any other subtitle track. There is also a setting that controls whether the tool translates into English or transcribes into the original language so you can choose what fits your needs.
I run Subgen on a machine with an Nvidia 2080ti GPU. The 2080ti handles the transcription jobs with ease. GPU acceleration makes a clear difference for batch work and for keeping subtitle generation from becoming a bottleneck.

I built my setup around the Docker image because it is easy to update and move between machines. The WHISPER_MODEL medium setting works really well for my content. I do wish there was a way to point Subgen directly at a directory of my choosing rather than being limited to media events from other apps like Bazarr, Emby, Jellyfin, or Plex. A simple folder watch option would make it easier to run on media that is not managed by those services.
Why I use it is simple. With a busy household and kids around I often need subtitles to follow dialogue without turning the volume up. Bazarr and Emby handle most subtitle needs but there are times when nothing is available or the embedded subtitles are out of sync on certain H265 files. Subgen fills those gaps automatically and reliably allowing me to use Whisper when no subtitles are available.
Final Notes and Thoughts
What Subgen can do is focused and clear. It creates SRT subtitles when a media file is added or played via webhooks. It can be called from Bazarr as a Whisper provider. It supports multiple audio languages and can translate into English or keep the original language. It runs with options that let it use GPU acceleration or CPU only processing.
If you run your own media server and want a hands off way to generate subtitles from your own files Subgen is a practical tool to consider.
Discussion