AISub for Emby

For Emby: AI subtitles that translate an existing subtitle or transcribe the film's audio, in any language, with your own AI keys or a local AI server.

Many movies and episodes have no subtitle in the language you need, or none at all. AISub makes one with AI: it translates a subtitle that already exists (for example English → Romanian) or, when there is none, transcribes the film's audio and then translates it. You use your own AI keys, or an AI server on your own network, and pay the AI provider directly.

What it does

  • Translation of an existing subtitle: Claude Haiku by default, Claude Sonnet for top quality, or any OpenAI-compatible server, such as LM Studio, Ollama or OpenRouter.
  • Transcription from the audio when the title has no subtitle at all: Groq Whisper large-v3-turbo by default, or OpenAI Whisper. One transcription is reused for several target languages.
  • Works with Rosub: the AI only generates the languages that Rosub searched for and did not find. The AI subtitle is marked as provisional and is replaced automatically by the first subtitle made by a person.
  • Automatic: new movies and episodes are processed when they arrive, plus a nightly task for the rest of the library. You choose an ordered list of target languages.
  • Faithful cues: a line-by-line alignment check, and the estimated cost is shown before a job runs.
  • Jobs page (queue, progress, cost per job) and Providers page (your keys, stored encrypted on the server).

Requirements

  • Emby Server 4.10.1 or newer.
  • No graphics card: the AI work runs at the provider you choose; your server only extracts the audio, with its own ffmpeg (with libopus).
  • At least one of: an Anthropic key (translation), a Groq or OpenAI key (transcription), or a local OpenAI-compatible server for translation (LM Studio with "Serve on Local Network", or Ollama).
  • Rosub is optional, but recommended.

Limits

  • In version 0.1.0 the local mode covers translation only: transcription needs a Groq or OpenAI key.
  • An AI subtitle is a provisional one. With Rosub, it is replaced as soon as a subtitle made by a person is found.

What it sends where

All providers use your own keys; nothing is sent until you configure a key or address.

  • Translation — Anthropic by default (api.anthropic.com); alternatively any OpenAI-compatible server you set (LM Studio, Ollama — local; OpenRouter, DeepSeek etc. — cloud). Sent: the subtitle lines' text (in batches, with context) and one context line about the title: name, year, up to 4 genres and the overview (max 400 characters).
  • Transcription (subtitles from audio) — Groq by default (api.groq.com, Whisper), alternatively OpenAI (api.openai.com, whisper-1). Sent: the film's audio, extracted locally with ffmpeg (mono, 16 kHz, Opus 24 kbps), cut into chunks of max 25 MB, plus the language and the title name. There is no local transcription in this version; for full privacy you can use only local translation (LM Studio / Ollama) of an existing subtitle.
  • The video picture is never sent.
  • When: for titles added after install (default), 10 min after being added — or, with Rosub, only after "searched, not found" — and only if no human subtitle exists; a nightly task at 05:00 (max 50 titles); the "Generate" button. Cost caps: USD 2/title, USD 20/month (defaults).
  • The plugin page says so too: subtitle text and, for transcription, the film audio go to the chosen provider. You pay the AI provider directly, with your own key; we do not provide keys.
  • Plus the licensing client, the same in every plugin: see Licensing and privacy in our plugins.

Approximate cost for a 2-hour film, at the providers' rates: about $0.06 to translate a subtitle with Claude Haiku, about $0.16 to transcribe and translate, and nothing with a local AI server.

Stored locally: keys in state/secrets.json (mode 600, never sent to the browser; the page shows the last 4 characters); the last 300 jobs and monthly spend; transcripts (dialogue text) in state/transcripts/ (reused across languages, replaced when the video file changes); temporary audio chunks in work/ (deleted on success, kept on failure for resume); the subtitle as <video>.<language>.srt.

Client compatibility

  • The result is an ordinary external .srt: 🟢 any client that shows external subtitles; individual apps: ❔ not tested. It does not appear in manual subtitle search (generation is in the background or from the plugin page).
  • ✅ Pages verified in Emby Web; Rosub + AISub end-to-end 9/9.

Legend: ✅ verified (end-to-end or on-device test) · 🟢 server-side, works with any client (by design, no client-specific test) · ➖ not applicable · ❔ not tested.

Licensing

One license per Emby server. Monthly, yearly or lifetime, or included in the Emby bundle. Free 30-day trial. The plugin is licensed under our EULA.

AISub is our own code, written from scratch by MediaLab Works; it contains no third-party code and uses only .NET and the ffmpeg of your Emby server.

Requirements

  • Emby Server 4.10.1 or newer
  • No GPU: the AI work runs at the provider you choose; the server only extracts the audio with its own ffmpeg
  • Your own key: Anthropic (translation), Groq or OpenAI (transcription), or a local OpenAI-compatible server such as LM Studio or Ollama (translation only in 0.1.0)
  • Rosub optional, recommended

Latest version

0.1.7
released Oct 20, 2026
See all changes →