Choose a transcription provider
Pick a speech-to-text provider or connect an OpenAI-compatible server so PodNotes can transcribe episodes that publish no transcript in their feed:
- ElevenLabs (default on new installs): speaker labels and clickable timestamps, fetched directly by ElevenLabs for public episodes up to 15 hours.
- Deepgram: fast speaker labels and clickable timestamps, fetched directly for public episodes up to 2 GB.
- OpenRouter: five models on one key and balance, with speaker-labeled Grok STT 2.0, ElevenLabs Scribe v2, and MAI-Transcribe 2, plus low-error Voxtral Mini Transcribe 3 and low-cost Qwen3 ASR 1.7B.
- OpenAI: plain-text transcripts without timestamps or speaker labels on an existing OpenAI key.
- OpenAI-compatible server: any
/v1/audio/transcriptionsserver, such as localwhisper.cpp,faster-whisper, orspeacheson your machine, or a hosted endpoint such as Groq.
PodNotes charges nothing for transcription. Compare limits, timestamps, and model details in Provider and model reference.
Set up ElevenLabs, Deepgram, or OpenAI
Section titled “Set up ElevenLabs, Deepgram, or OpenAI”- On your provider’s site (ElevenLabs, Deepgram, or OpenAI), create an API key.
- In Obsidian, open Settings → PodNotes.
- Under Transcripts, in Transcription provider, select ElevenLabs, Deepgram, or OpenAI.
- Next to ElevenLabs API key, Deepgram API key, or OpenAI API key, select Link…, or Change when a key is already set.
- In the secret picker, create a secret that holds your key, or select one you saved before.
- In Model, keep Recommended (Scribe v3), Recommended (Nova-3), or Recommended (GPT Transcribe).
If you restrict key permissions on ElevenLabs, enable Speech to Text. On OpenAI, GPT Transcribe writes plain paragraphs without timestamps or speaker labels (see Update to 2.25.0 if you used OpenAI in 2.24.0).


Set up OpenRouter
Section titled “Set up OpenRouter”- On the OpenRouter keys page, create an API key.
- In Obsidian, open Settings → PodNotes.
- Under Transcripts, in Transcription provider, select OpenRouter.
- Next to OpenRouter API key, select Link…, or Change when a key is already set.
- In the secret picker, create a secret that holds your key, or select one you saved before.
- In Model, select Recommended (Grok STT 2.0), ElevenLabs Scribe v2, MAI-Transcribe 2, Voxtral Mini Transcribe 3, or Qwen3 ASR 1.7B.
The first three models add speaker labels and timestamps, while Voxtral Mini Transcribe 3 and Qwen3 ASR 1.7B add timestamps without speaker labels. Compare all five in OpenRouter models.


Set up an OpenAI-compatible server
Section titled “Set up an OpenAI-compatible server”- On your computer or server host, start your
/v1/audio/transcriptionsserver or copy its base URL. - In Obsidian, open Settings → PodNotes.
- Under Transcripts, in Transcription provider, select OpenAI-compatible server.
- In Server address, enter the server’s
http://orhttps://URL, for examplehttp://localhost:8000/v1. - If the server requires an API key, next to OpenAI-compatible server API key, select Link…, or Change when a key is already set. Leave it unlinked if your server needs no key.
- When the secret picker opens, create a secret that holds your key, or select one you saved before.
- In Model, enter the model ID your server expects, for example
Systran/on an examplefaster-whisper-large-v3 speachesserver orwhisper-large-v3-turboon an example Groq server.


- Accepted addresses: Enter
http://orhttps://with a valid host, an optional port (1to65535), and no#fragment or backslash (otherwise the row shows"The address must start with http://). PodNotes trims trailing slashes and appendsor https:// ." /audio/transcriptionsunless already present, so include/v1when your server serves/v1/audio/transcriptions, as in the example addresseshttp://localhost:8000/v1,http://,192.168.1.20:8000/ v1 https://, orapi.groq.com/ openai/ v1 http://.localhost:8000/ v1/ audio/ transcriptions - Uploads and privacy: PodNotes downloads or reads the episode on your device and uploads it in parts up to 24 MB. With a server on the same computer, audio stays on your machine. On a phone,
localhostpoints to the phone itself, so enter your computer’s local network or VPN address instead. - Timestamps and speaker labels: PodNotes requests
verbose_jsonword and segment times, joins Whisper word pieces, and restores punctuation onto unpunctuated words from the full text. You get clickable paragraph timestamps when the server returns times, or plain text without timestamps when it returns text only or refuses timestamp options (response_format,verbose_json, ortimestamp_granularities) with HTTP 400, in which case PodNotes retries forjson. OpenAI-compatible server does not label speakers.
Provider and model reference
Section titled “Provider and model reference”| Provider and models | Labels and times | Public podcast feeds | Long episodes | Key and pricing |
|---|---|---|---|---|
| ElevenLabs Scribe v3 (recommended) |
Speakers (1, 2, 3) and timestamps |
Fetched by provider, so your device uploads nothing | One request up to 5 GB and 15 hours | API keys, pricing |
| Deepgram Nova-3 (recommended) |
Speakers (1, 2, 3) and timestamps |
Fetched by provider, so your device uploads nothing | One request up to 2 GB | Console, pricing |
| OpenRouter 5 models (see table below) |
Timestamps on all 5. Speakers (1, 2, 3) on Grok STT 2.0, ElevenLabs Scribe v2, and MAI-Transcribe 2. |
ElevenLabs Scribe v2 fetches public URLs. The other four upload from your device. | ElevenLabs Scribe v2 takes a public URL in one request. Uploads split past 18 MB / 30 min MP3 (or 12 MB / 15 min MP3 on Voxtral Mini Transcribe 3 and Qwen3 ASR 1.7B). | Keys, model rates |
| OpenAI GPT Transcribe (recommended) |
Plain text only (no speakers or timestamps) | Uploaded from your device | Split past 24 MB (or 34.5 min for MP3) | API keys, pricing |
| OpenAI-compatible server Any model ID your server offers |
Timestamps when the server returns word or segment times, otherwise plain text. No speakers. | Uploaded from your device (stays on your machine with a local server) | Split past 24 MB | Optional bearer key, your own server or host’s rates |
A provider fetches an episode URL directly only when you added the podcast to PodNotes with a public feed address and that feed still lists the episode at a public http or https address without credentials. For private feeds, downloads and local files, or an episode URL the provider cannot fetch, PodNotes downloads the audio on your device and uploads it instead.
OpenRouter models
Section titled “OpenRouter models”| Model | Speaker labels | Timestamps | Long episodes | Notes |
|---|---|---|---|---|
| Grok STT 2.0 (recommended) | Yes (1, 2, 3) |
Word and segment | Splits uploads past 18 MB (or 30 min for MP3), and matches MP3 voices across parts | Default OpenRouter model |
| ElevenLabs Scribe v2 | Yes (1, 2, 3) |
Word | Fetches public episode URLs in one request. Uploads split past 18 MB (or 30 min for MP3), and speaker numbers restart per part. | No device upload on public feeds |
| MAI-Transcribe 2 | Yes (1, 2, 3) |
Word | Splits uploads past 18 MB (or 30 min for MP3), and speaker numbers restart per part | Speaker-labeled alternative |
| Voxtral Mini Transcribe 3 | No | Segment | Splits uploads past 12 MB (or 15 min for MP3) | Plain transcript, timed by passage |
| Qwen3 ASR 1.7B | No | Word (PodNotes restores punctuation from the response text) | Splits uploads past 12 MB (or 15 min for MP3) | Plain transcript at a low rate, see model rates |
PodNotes checks OpenRouter’s public transcription catalog at most once a day when you open settings or start a transcription, without sending your key:
- A model with a scheduled retirement date in the future shows that date in Model, such as
, ends 2027-06-01. - If OpenRouter withdraws a model you selected earlier, Model marks it
, no longer offered, and PodNotes falls back to Grok STT 2.0 with a notice when you transcribe. - If your OpenRouter privacy settings block every route for a model, transcription stops with a notice asking you to change them or choose another model.
API keys across devices and backups
Section titled “API keys across devices and backups”PodNotes stores your ElevenLabs, Deepgram, OpenRouter, OpenAI, and optional OpenAI-compatible server API keys in Obsidian’s secret storage on each device:
- Only the selected provider’s key row appears under Transcripts, and keys you saved for other providers stay stored so you can switch Transcription provider without entering them again.
- Server address and Model sync in
data.json, while vault sync copies only a secret reference (such aspodnotes-elevenlabs-api-keyorpodnotes-openai-compatible-api-key), never the key itself. On another device where a selected secret has not been added yet, the key row reads “The selected secret is not available on this device. Select an existing secret or create one.” Add or select the key on each device where you transcribe audio. See API keys and private feeds on each device. - Export settings leaves API keys out unless you turn on Include API keys first. An export that includes API keys writes them in plain text, so treat the file like a password. See API keys in a settings file.
- When you update from a version before 2.19.0 that stored plain-text keys in
data.json, PodNotes moves them into secret storage on first start before finishing load. Old backups or exports keep any plain-text keys they held, so replace a key on the provider’s site if it may have leaked.