Evgeniy Branitsky30 downloadsPlay recordings with synchronized sibling SRT, VTT and DOTe transcripts.
Recording Transcript Player is an Obsidian plugin for opening audio files with a synchronized sibling SRT transcript.
Place an .srt, .vtt, or DOTe .json file beside an audio file with the exact same basename:
Recordings/2026.05.09.m4a
Recordings/2026.05.09.srt
Open the audio file in Obsidian. The plugin shows the native audio player above the transcript, highlights the active subtitle during playback, and lets you click timestamps to seek.
Supported subtitle formats:
Speaker: text<v Speaker> voice spanslines array containing startTime, endTime, speakerDesignation, and textSupported audio extensions by default:
m4a, mp3, wav, aac, flac, ogg, opus
The plugin only checks sibling subtitle files with the same basename as the audio file. By default, it checks .srt, .vtt, then .json; the extension priority can be changed in settings.
If no matching subtitle file is found, the audio player still opens, and the transcript area shows as audio-only.
While the plugin view is focused, press Cmd+F (Ctrl+F on Windows/Linux) to open the in-transcript search bar. The query is matched as a case-insensitive substring against both speaker labels and cue text. All matches are highlighted inline, and a counter (current/total) is shown.
Enter jumps to the next match, Shift+Enter jumps to the previous oneEsc (or the close button) clears the query and hides the barSearch does not seek audio. Clicking a cue's timestamp still seeks playback as before.
Playback progress is saved per vault-relative audio path. Saved positions in the final 10 seconds of a recording are not restored.
The automatic plugin-view option is disabled by default. When enabled, opening a supported audio file normally in Obsidian will switch that active tab to the transcript player only if a matching sibling subtitle file exists.
The sub-option "Fall back to default media view when no subtitle" (also disabled by default, and only effective when the parent option is enabled) controls what happens when a supported audio file is loaded into the plugin view but has no matching subtitle. When enabled, the file is moved to Obsidian's default media view instead.
This plugin does not make network requests, send telemetry, or use Node/Electron-only runtime APIs. Audio and subtitle files are read through Obsidian vault APIs.
The plugin is intended to work on Obsidian desktop and mobile. It uses browser audio APIs and Obsidian-safe vault APIs only.
Runtime dependencies are intentionally zero. Development dependencies are limited to TypeScript, esbuild, Obsidian types, and test/build tooling.
npm install
npm test
npm run build
The build emits main.js at the repository root. Obsidian loads main.js, manifest.json, and styles.css.
Tagged releases should attach:
main.jsmanifest.jsonstyles.cssBefore submitting to the Obsidian community plugin registry, test the release assets in a clean vault and confirm the version tag matches manifest.json.