Whisper Transcribe

:placard: Summary Sends scene audio to a whisper.cpp whisper-server to be transcribed into an SRT file saved with the scene.
:link: Repository https://github.com/Jay4242/whisper_transcribe/tree/main/plugins/whisper_transcribe
:information_source: Source URL https://jay4242.github.io/whisper_transcribe/main/index.yml
:open_book: Install How to install a plugin?

Features

This whisper_transcribe plugin for Stash allows users to access a whisper.cpp whisper-server hosted locally or somewhere on their network to create SRT subtitle files for scenes.

When the SRT formatted subtitles are complete, they are saved with the scene file & added into Stash so the user only needs to navigate away from the scene and return back to the scene (or Refresh) to have the [CC] caption option in the player.

Note that this will overwrite any existing SRT file with the same file name, ie. the scene file name with a .srt file extension!

Installation

Copy the whisper_transcribe directory/files to your plugins directory.

Reload your plugins.

Set your ā€˜Whisper Server URL’ to the location & port of your whisper-server. The default is 127.0.0.1:9191/inference.

You should now have a Transcribe scene (Whisper) option in your scene ā€˜Operations Menu’ (the three dots drop-down menu).

Screenshots

The plugin settings in (/settings?tab=plugins):

The operation menu from a video scene (/scenes/{scene_number}) with ā€˜Transcribe scene (Whisper)’ added:

The whisper_transcribe task (/settings?tab=tasks):

Other Notes

The default timeout is 3600 seconds (1 Hour). For long videos, or slow, multi-tasking hardware.

ā€˜Translate to English’ assumes -tr/--translate is set on whisper-server.

Updates

v.0.2.0: It was failing for jobs longer than 60 seconds. Now whisper_transcribe is a task that appears in the ā€˜Task Queue’ and can run longer. Edit: Project wasn’t correctly updated before, should be fixed now, sorry for the inconvenience. Also queues the SRT file scan after the whisper_transcribe task now in case the user creates a queue of transcriptions.

2 Likes

Wasting time, I use window to deploy the server, set the address to 192.168.10.107:9191/inference, it’s not a firewall issue, it’s fundamentally impossible to connect.Wasting time, I use window to deploy the server, set the address to 192.168.10.107:9191/inference, it’s not a firewall issue, it’s fundamentally impossible to connect.,

2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] EXITING ***********************
2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] *********************************
2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] [T]
2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] [E] Scene 13306 not found.
2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] [E] HTTP error calling GraphQL: HTTP Error 502: Bad Gateway body=
2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] *********************************
2026-03-18 04:41:50
Error
[Plugin / WhisperTranscribe] [T] PLUGIN_TASK_NAME=transcribe_scene_task
2026-03-18 04:40:09
Error
[Plugin / WhisperTranscribe] [T] PLUGIN_TASK_NAME=transcribe_scene_task

Has anyone successfully implemented this process?

Stash is deployed on Linux, with Whisper in a window providing translation services to stash through the firewall.

According to the plugin’s instructions, it should be able to use the local server to serve the stash playback side. However, I’m unable to use it.

The plugin instance is located at 127.0.0.1. In a typical local network, the address would be something like 192.168.10.xxx. I’m unable to use it when I enter the local network address.

And since it suggests that the hosted whisper.cpp on the network can be used, there’s no reason why it shouldn’t work within a local network as well.

Has anyone successfully implemented this solution, using a computer as the server and a NAS as the storage server?

I have it working on my computer.

Whisper server running on #.#.#.#:8080 with large v3 turbo as a windows service.
Stash server running on #.#.#.#.9999 as a windows service with ip set in ā€œhostā€ in the stash config.yml. This is default set to ā€œnullā€ and will fail the graphql calls i think.
whisper_transcribe edit the whisper_transcribe.py and stash_helper_fallback.py to correctly fix the 127.0.01 to 127.0.0.1 error. (missing ā€œ.ā€ multiple places)
Copy and paste the StashPluginHelper.py to the whisper_transcribe plugin folder.

I got it from here Axter-Stash/StashPluginHelper at main Ā· David-Maisonave/Axter-Stash Ā· GitHub

StashPluginHelper.py (51.5 KB)

Set your interference url in settings and then run the job and it will take a while depending on the size of the video.

Enjoy :slight_smile:

Here are the edited files

stash_helper_fallback.py (7.2 KB)

whisper_transcribe.py (21.6 KB)

I’ve given up on this project. I’ve tried everything you suggested. Unless you make significant changes to the source code, there’s no way to fix it.

I’m currently using another project whose kernel is also Whisper. It definitely meets my needs, as it can run on various devices.

none of the plugins currently meet my full expectations. Subgen Docker should support some advanced features, such as generating both the original text and translated subtitles simultaneously.

I added the modified files

2 edited and the 1 dependency file.

Takes me a few seconds to transcribe with whisper.cpp cublas.

However i don’t use docker so i dunno if thats a different issue.

For your issue with multiple subtitles i would probably just use faster whisper drag drop solution, yes its not in the stash but its fast enough to just drag and drop a file on the bat.

Thank you. If it’s just a Windows tool for generating subtitles, I’d probably choose Subtitle Edit or Memo AI. Most importantly, it can integrate with the Stash app.. Eventually, someone will develop software to work with these Windows programs. This kind of tool is useful for those who want to separate computation from storage.