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.
transcribe. Optionally enable transcribe_audio to install an audio upload Media type./admin/config/media/transcribe./admin/content/transcriptions and select its source Media. Add utterances manually or import a canonical JSON document.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.
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.
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.
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.
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.