Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Transcripts

PodFetch supports Podcasting 2.0 transcripts end to end:

  • Feed transcripts — when a feed episode carries <podcast:transcript> tags, PodFetch records them during the feed refresh. Once the episode is downloaded, the best matching transcript (preferring VTT over SRT over JSON over HTML, and the podcast’s language when several are offered) is downloaded, archived next to the episode’s audio file and parsed into segments.
  • Player integration — the detailed audio player has a Transcript tab that follows the playback position, supports auto-scroll and lets you jump to a segment by clicking it.
  • Full-text search — every parsed transcript is indexed in the database (SQLite FTS5 or PostgreSQL tsvector). The episode search page has a Transcripts mode that finds spoken words and jumps straight to the matching position in the episode.
  • Generated transcripts — episodes without a feed transcript can be transcribed with any OpenAI-compatible Whisper API (see below), either manually per episode or automatically after each download.
  • RSS re-export — archived transcripts are included as <podcast:transcript> tags in the RSS feeds PodFetch generates, so other podcast clients can use them too.

Whisper transcription setup

Generated transcripts use an OpenAI-compatible audio/transcriptions endpoint. Any server that speaks this protocol works. For a fully self-hosted setup with whisper.cpp — including ready-to-run CPU and NVIDIA GPU compose files — see the Local transcription with whisper.cpp tutorial. Another good choice is speaches (the successor of faster-whisper-server):

services:
  podfetch:
    image: samtv12345/podfetch
    environment:
      - TRANSCRIPTION_API_BASE_URL=http://speaches:8000
      - TRANSCRIPTION_MODEL=Systran/faster-whisper-small
    # ... your existing podfetch configuration

  speaches:
    image: ghcr.io/speaches-ai/speaches:latest-cpu
    volumes:
      - hf-hub-cache:/home/ubuntu/.cache/huggingface/hub

volumes:
  hf-hub-cache:

Transcription is enabled as soon as TRANSCRIPTION_API_BASE_URL is set. The UI then shows a Transcribe action on downloaded episodes and an Auto-transcribe toggle in each podcast’s settings. Jobs run in a background queue; failures are retried up to three times and their status is pushed live to the UI.

Environment variables

VariableRequiredDefaultDescription
TRANSCRIPTION_API_BASE_URLyes (to enable the feature)Base URL of the OpenAI-compatible API, e.g. http://speaches:8000 or https://api.openai.com
TRANSCRIPTION_API_KEYnoBearer token sent to the transcription API, if it requires one
TRANSCRIPTION_MODELnowhisper-1Model name passed to the API, e.g. Systran/faster-whisper-small

Re-parsing archived transcripts

Admins can re-parse all archived transcript files (e.g. after a parser improvement) via POST /api/v1/settings/transcripts/reparse.