diff --git a/README.md b/README.md index 0a05f018..9d65c09b 100644 --- a/README.md +++ b/README.md @@ -95,8 +95,8 @@ Browse sibling episode files and the active mpv queue in one overlay modal. Open Search and download Japanese subtitles - Local Subtitle Generation - Generate Japanese subtitles from local audio in a standalone modal (Ctrl+Shift+G), the sidebar button, or launcher, with progress and optional managed model downloads. Requires whisper.cpp and FFmpeg. Optional Silero speech detection prioritizes dialogue in separately timed passages. Setup guide + Japanese Subtitle Generation + Generate Japanese subtitles from local files or finite anime streams in a standalone modal (Ctrl+Shift+G) or the sidebar button. The launcher supports local files. Transcription runs locally with whisper.cpp and FFmpeg, with progress and optional managed model downloads. Stream subtitles are saved in the application cache. Optional Silero speech detection prioritizes dialogue in separately timed passages. Setup guide TsukiHime @@ -277,7 +277,7 @@ SubMiner builds on the work of these open-source projects: | [Aniyomi](https://github.com/aniyomiorg/aniyomi) | Anime extension API and data model the anime browser targets | | [asbplayer](https://github.com/killergerbah/asbplayer) | Inspiration for subtitle sidebar and logic for YouTube subtitle parsing | | [Bee's Character Dictionary](https://github.com/bee-san/Japanese_Character_Name_Dictionary) | Character name recognition in subtitles | -| [Bun](https://github.com/oven-sh/bun) | Bundled runtime for the `subminer` command-line launcher | +| [Bun](https://github.com/oven-sh/bun) | Bundled runtime for the `subminer` command-line launcher | | [GameSentenceMiner](https://github.com/bpwhelan/GameSentenceMiner) | Inspiration for Electron overlay with Yomitan integration | | [jellyfin-mpv-shim](https://github.com/jellyfin/jellyfin-mpv-shim) | Jellyfin integration | | [Jimaku.cc](https://jimaku.cc) | Japanese subtitle search and downloads | diff --git a/changes/anime-stream-subtitle-generation-docs.md b/changes/anime-stream-subtitle-generation-docs.md new file mode 100644 index 00000000..aab688a1 --- /dev/null +++ b/changes/anime-stream-subtitle-generation-docs.md @@ -0,0 +1,4 @@ +type: docs +area: subtitles + +- Document anime stream generation, cache locations, full-episode processing, supported audio tracks, and stream access limitations. diff --git a/changes/anime-stream-subtitle-generation.md b/changes/anime-stream-subtitle-generation.md new file mode 100644 index 00000000..97060150 --- /dev/null +++ b/changes/anime-stream-subtitle-generation.md @@ -0,0 +1,4 @@ +type: added +area: subtitles + +- Generate Japanese subtitles from finite HTTP/HTTPS anime episode streams in the existing generation modal. Reuse mpv's supported request headers and the anime proxy, transcribe downloaded audio locally, retain generated SRT files in the application cache, and load them only into the matching stream. Local-file generation and the launcher keep their existing behavior. diff --git a/docs-site/anime-browser.md b/docs-site/anime-browser.md index f198b7b6..ea2605b5 100644 --- a/docs-site/anime-browser.md +++ b/docs-site/anime-browser.md @@ -394,6 +394,10 @@ download falls back to its URL so the episode still plays, the format is detected from the file's own content rather than its URL, and the directory is removed when the next episode starts or the app exits. +### Generating Japanese subtitles + +While an episode is playing, press **Ctrl+Shift+G** to [generate Japanese subtitles](/subtitle-generation#generating-for-anime-streams) from its audio. SubMiner fetches the complete episode audio, transcribes it locally with whisper.cpp, and loads the resulting SRT if the same stream is still playing. Generated subtitles stay in the application cache. This requires a finite HTTP/HTTPS stream with an internal audio track; live streams and separately attached audio tracks are not supported. + ### Series, season, and episode The episode's identity travels with it instead of being guessed back out of the diff --git a/docs-site/subtitle-generation.md b/docs-site/subtitle-generation.md index 7f71a66b..fbcc1adc 100644 --- a/docs-site/subtitle-generation.md +++ b/docs-site/subtitle-generation.md @@ -1,6 +1,6 @@ # Japanese subtitle generation -Generate Japanese SRT subtitles from a local video's audio using [whisper.cpp](https://github.com/ggml-org/whisper.cpp). The launcher and overlay use the same local generation service. Audio stays on your computer. Model downloads require an internet connection; generation with an installed model does not. +Generate Japanese SRT subtitles from a local video's audio or an anime stream using [whisper.cpp](https://github.com/ggml-org/whisper.cpp). The launcher and overlay use the same local generation service. Transcription runs on your computer without uploading audio. Model downloads and stream audio extraction require an internet connection; local-file generation with an installed model does not. ## Setup @@ -51,7 +51,7 @@ A configured external Model Path takes precedence and hides the managed model pi ## From the overlay -1. Open a local video in mpv and select its Japanese audio track. +1. Open a local video or an anime episode stream in mpv and select its Japanese audio track. 2. Press **Ctrl+Shift+G** to open the standalone generation modal. When the subtitle sidebar has no subtitle lines loaded, it also offers a **Generate Japanese subtitles** button. Neither an open sidebar nor an existing subtitle track is required for the shortcut. 3. Choose a model and download it if prompted, or configure your existing model path in Settings and click **Check again**. 4. Optionally check **Focus on spoken dialogue** and click **Download speech detection model** if prompted. @@ -63,6 +63,16 @@ The modal adapts to the player window, using a wider layout when space allows an SubMiner saves `