Transcribe adds editable, revisioned transcripts to Drupal Media. Editors can correct text, assign speakers, review word timing and play the corresponding audio or video. Use it for interviews, podcasts, oral histories and other media that needs a readable transcript.
The core module supports manual editing and transcript imports without an AI provider or API key. Optional AI integration generates draft transcripts for editorial review.
Features
- Exact transcript text. Preserve punctuation, whitespace and line breaks in each utterance. Full transcript text is calculated from the selected revision's ordered utterances and explicit separators.
- Coordinated revisions. Save transcript and utterance revisions together, inspect history and restore earlier content into a new revision. Concurrent edits are detected before saving.
- Timing-aware editing. Correct text, split or merge utterances, add or remove sections and reorder the document. Unaffected words retain their identities and timing; affected timing is marked for alignment review. Unknown and estimated timing remain explicitly labeled.
- Speaker assignment. Reference configured Drupal content entities as speakers. Assign individual utterances or map generated speaker clusters while preserving individual overrides.
- Synchronized playback. Seek from timed words and utterances, highlight playback and optionally follow the active text. Support native HTML audio/video and explicitly loaded YouTube players.
- Import and export. Exchange readable, named JSON documents and export plain text, SRT or WebVTT captions from the selected transcript revision.
- Fieldable content and retrieval. Add site-specific fields to transcripts and utterance Paragraphs. Retrieve utterances by media, speaker, text or time range, with revision-aware Views relationships and Drupal access checks.
Post-installation
- Enable
transcribe. Optionally enabletranscribe_audioto install an audio upload Media type. - Configure eligible Media bundles, speaker entity types and bundles, timing tolerance and editor paging at
/admin/config/media/transcribe. - Create a transcription at
/admin/content/transcriptionsand select its source Media. Add utterances manually or import a canonical JSON document. - Use the transcript's editing, speaker, timing, revision and export interfaces to prepare and review the content.
Run Drupal cron for normal queue processing and Paragraph ownership cleanup. Remote video playback requires a managed audio rendition before it can be submitted for transcription; the core module does not download or transcode remote media.
Requirements and compatibility
- Drupal 11.3 or later within the Drupal 11 release series, and PHP 8.3 or later.
- Drupal core Media, File, Field and User modules.
- Paragraphs, Entity Reference Revisions and Dynamic Entity Reference. The current dependency set uses Dynamic Entity Reference 5.0 RC.
The implementation is verified on Drupal 11. Drupal 12 is a planned target, pending dependency compatibility and a successful Drupal 12 installation and regression run.
Optional AI integration
The companion ai_transcribe module uses Drupal AI for provider discovery and configuration. Execution profiles define the provider, model, required capabilities and bounded input, retry and retention policies. Credentials stay in provider configuration and Drupal Key.
Durable jobs support authenticated completion callbacks, recovery polling and polling without a webhook for private sites. Results are saved as unpublished drafts. Changed sources and newer editorial revisions are checked before applying results.
The asynchronous AssemblyAI connector has been verified with a short synthetic speech recording. Whisper/WhisperX and text-only result normalizers have automated fixture coverage; other live provider deployments require separate integration verification.
For developers
Utterances use the transcribe_utterance Paragraph bundle class. Word data is stored as one compact, versioned JSON field value per utterance revision, with stable token IDs, nullable millisecond timestamps, Unicode code-point offsets, confidence and alignment status. Public imports, exports and DTOs use named properties through a shared storage codec. Speaker references, time ranges and searchable metadata remain ordinary Drupal fields.
Extend the module through Media source, player, connector and result-normalizer boundaries; service decoration; definition-alter hooks; lifecycle events; configurable fields; and Twig/library overrides. PHPUnit unit and Drupal kernel tests, JavaScript player tests, coding standards checks and a DDEV development fixture are included. Repository documentation describes the storage schema, public services, access rules and extension contracts.
Current scope
Remote input acquisition, transcoding and chunking, derived word indexes, Search API integration, DOCX export, production migration and independently aligned content translation remain separate integrations. Use separate transcriptions for independently timed language versions.
Ask your assistant about Transcribe
Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | PHP | Release date | |
|---|---|---|---|---|---|
| 1.0.0-alpha1 | Pre-release | 11 | PHP ^8.3 | Oct 12, 2026 | |
| 1.0.x-dev | Dev | 11 | PHP ^8.3 | Oct 12, 2026 |