SceneWhisper

SceneWhisper

Docker app from Master-Oogwayxxx's Repository

Overview

SceneWhisper is a self-hosted video processing suite for local media libraries, including JAV video collections. Scan and manage video folders, queue scene detection and splitting jobs, generate and clean subtitles with Whisper, repair frame pacing, review processing status, and work with scraped/R18 metadata. The Unraid container bundles the React web interface, FastAPI worker, ffmpeg processing, persistent app data, Hugging Face model caching, and optional NVIDIA GPU acceleration.

SceneWhisper

SceneWhisper is a self-hosted video processing app for local and JAV video libraries. It combines a React web UI, a FastAPI worker/API, ffmpeg processing, scene detection, subtitle tooling, and optional NVIDIA GPU acceleration.

Features

  • Scan local and JAV video libraries and track processed files.
  • Run scene detection, video splitting, subtitle generation, and subtitle cleanup workflows.
  • Organize JAV collections with browser-based library management and metadata workflows.
  • Manage processing tasks, queue state, logs, deleted file history, and runtime settings from the browser UI.
  • Use GPU acceleration on hosts with NVIDIA drivers and the NVIDIA Container Toolkit, or run in CPU-only mode.
  • Cache Hugging Face models on a persistent volume so downloads survive container updates.

Quick Start on Unraid

Install from Community Applications when the template is available there, or add the template repository manually in Unraid Docker settings:

https://github.com/Master-Oogwayxxx/SceneWhisper/tree/main/templates

The Unraid template uses this published image:

ghcr.io/master-oogwayxxx/scenewhisper:latest

Default template values:

Setting Default Purpose
Web UI Port 5175 Browser interface
Video Library /mnt/user/videos -> /videos Local/JAV videos to scan and process
App Data /mnt/user/appdata/scenewhisper/data -> /data Database, logs, and runtime state
Hugging Face Cache /mnt/user/appdata/scenewhisper/hf-cache -> /root/.cache/huggingface Model cache
Timezone America/Los_Angeles Container timezone
Hugging Face Token empty Optional private/rate-limited model access
NVIDIA Visible Devices all GPU selection, or void for CPU-only

After the container starts, open:

http://<your-unraid-ip>:5175

For GPU hosts, install the Unraid NVIDIA Driver plugin and confirm Docker GPU runtime support before troubleshooting SceneWhisper. CPU-only hosts can set NVIDIA_VISIBLE_DEVICES to void in the template advanced settings.

Docker Compose

Clone the repository:

git clone https://github.com/Master-Oogwayxxx/SceneWhisper.git
cd SceneWhisper/app

Build and start the stack:

docker compose build
docker compose up -d

The Compose services are:

  • SceneWhisper-worker: backend API and worker on http://localhost:8010
  • SceneWhisper: frontend UI on http://localhost:5175

Useful Compose commands:

docker compose logs -f backend
docker compose logs -f frontend
docker compose down

The Compose file uses these default host paths:

Host path Container path Purpose
/mnt/user/videos /videos Local/JAV video library
/mnt/user/appdata/docker-compose-projects/SceneWhisper/data /data Runtime app data
/mnt/user/appdata/docker-compose-projects/SceneWhisper/hf-cache /root/.cache/huggingface Hugging Face model cache

Update app/docker-compose.yml if your videos, app data, ports, or GPU settings differ from the defaults.

GPU and CPU Notes

GPU hosts use all available NVIDIA GPUs by default:

NVIDIA_VISIBLE_DEVICES: all
NVIDIA_DRIVER_CAPABILITIES: compute,utility,video

For CPU-only Compose hosts, remove or comment the GPU device reservation in app/docker-compose.yml and set:

NVIDIA_VISIBLE_DEVICES: void

Verify Docker GPU access with:

docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi

Local Development

Backend commands run from app/backend:

uv run pytest
uv run uvicorn main:app --reload --host 0.0.0.0 --port 8010

Frontend commands run from app/frontend:

npm run dev
npm run build
npm run lint
npm test

Project Layout

SceneWhisper/
├── app/
│   ├── backend/              # Python 3.11 FastAPI API and worker
│   │   ├── src/
│   │   ├── tests/
│   │   ├── main.py
│   │   ├── pyproject.toml
│   │   └── Dockerfile
│   ├── frontend/             # React + Vite + TypeScript UI
│   ├── icons/                # Unraid Docker icons
│   └── docker-compose.yml
├── docker/
│   └── unraid/               # Single-container Unraid image build files
├── templates/
│   └── scenewhisper.xml      # Community Applications Docker template
├── ca_profile.xml            # Community Applications repository profile
└── README.md

Backend source lives under app/backend/src, split into api, crud, models, schemas, and workers. Backend tests live in app/backend/tests. Frontend source lives under app/frontend/src, with API clients in src/api, feature components in src/components, and shared UI primitives in src/components/ui.

Troubleshooting

If the web UI does not load, confirm the container is running and that port 5175 is not already in use.

If the backend is unreachable, check backend logs and confirm port 8010 is available for Compose deployments.

If the GPU is not detected, confirm NVIDIA drivers and container runtime support:

nvidia-smi
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi

If models fail to download, check network access, free disk space in the Hugging Face cache volume, and whether your chosen model requires HF_TOKEN.

License

Apache License 2.0. See LICENSE.

Requirements

NVIDIA GPU users must install the NVIDIA Driver plugin and NVIDIA Container Toolkit support. GPU operation uses --runtime=nvidia by default. For CPU-only operation, clear Extra Parameters and set NVIDIA_VISIBLE_DEVICES to void.

Related apps

Details

Repository
ghcr.io/master-oogwayxxx/scenewhisper:latest
Last Updated2026-10-12
First Seen2026-10-11

Runtime arguments

Web UI
http://[IP]:[PORT:80]/
Network
bridge
Privileged
false

Template configuration

WebUI PortPorttcp

SceneWhisper web interface.

Target
80
Default
5175
Value
5175
Video LibraryPathrw

Host path containing videos to scan and process.

Target
/videos
Default
/mnt/user/videos
Value
/mnt/user/videos
App DataPathrw

Database, logs, and runtime state.

Target
/data
Default
/mnt/user/appdata/scenewhisper/data
Value
/mnt/user/appdata/scenewhisper/data
Hugging Face CachePathrw

Model cache for Whisper and related downloads.

Target
/root/.cache/huggingface
Default
/mnt/user/appdata/scenewhisper/hf-cache
Value
/mnt/user/appdata/scenewhisper/hf-cache
TimezoneVariable

Container timezone.

Target
TZ
Default
America/New_York
Value
America/New_York
Hugging Face TokenVariable

Optional token for private or rate-limited Hugging Face model access.

Target
HF_TOKEN
Extra ParametersTextarea

Use the NVIDIA container runtime for GPU acceleration. Clear this value for CPU-only operation.

Default
--runtime=nvidia
Value
--runtime=nvidia
NVIDIA Visible DevicesVariable

Use all NVIDIA GPUs, a specific GPU id, or void for CPU-only mode.

Target
NVIDIA_VISIBLE_DEVICES
Default
all
Value
all
NVIDIA Driver CapabilitiesVariable

NVIDIA runtime capabilities used by AI and ffmpeg workloads.

Target
NVIDIA_DRIVER_CAPABILITIES
Default
compute,utility,video
Value
compute,utility,video
Hugging Face TransferVariable

Enable faster Hugging Face model downloads.

Target
HF_HUB_ENABLE_HF_TRANSFER
Default
1
Value
1