Audio transcription
CCD can turn any audio or video file into an accurate, timestamped, editable transcript. Open Transcribe in the sidebar (or go to /transcribe), drop a file in, and read the result a few minutes later. Everything runs on DENWARE hardware with a self-hosted Whisper engine: your recordings are never sent to a third-party speech service.
What you can upload
Any format ffmpeg can decode, which in practice means all of them: MP3, WAV, M4A, AAC, FLAC, OGG, OPUS, WMA, WEBM, AMR, AIFF, and audio inside video containers like MP4, MOV, MKV, and AVI. Files up to 1 GB and 4 hours of audio are accepted (both limits are configurable per deployment).
From your DenDrive
You can transcribe a file that already lives in your drive without re-uploading it. Click Import from your DenDrive under the drop zone, browse to the recording, and pick it. It is the same drive you see at drive.dendat.ai, in DenCRM, and on the CCD Drive page, so anything stored anywhere in the ecosystem is one click away.
This is the recommended path for large recordings: the audio streams straight from your drive into the transcription engine on the server side, so nothing has to travel back up from your browser.
Languages
Transcription runs on two self-hosted engines that together cover more than 1,200 languages:
- Whisper handles 100 major languages, including English, French, Arabic, Chinese (Mandarin and Cantonese), Hausa, Swahili, Yoruba, and Amharic. Auto-detect works within this set.
- The extended engine (Meta MMS) covers 1,198 more. For Ghana that includes Akan (Twi and Fanti), Ewe, Dagaare, Gonja, Kasem, Konkomba, Kusaal, Mampruli, Nzema, Sisaala, Wali, Buli, Sehwi, and Avatime. Extended languages are selected explicitly (auto-detect cannot reach them) using their ISO 639-3 code, and the first extended job downloads the model, so it starts slowly.
Two known gaps: Ga and Dagbani have no usable open speech-recognition model anywhere yet. They appear in the menu as "not yet available", and the platform supports plugging in a custom fine-tuned model per language (CCD_TRANSCRIBE_LANG_MODELS) the moment one exists.
Accuracy on low-resource languages is real but lower than on English: recordings are transcribed in the language's own script and benefit even more from clean audio and the built-in editor.
Accuracy
Speech recognition accuracy depends on the audio itself, so no system can honestly promise a perfect transcript. CCD gets you as close as self-hosted technology allows, and then makes the last step easy:
- Maximum (the default) runs the largest Whisper model available, the state of the art for on-premise transcription. Use it for anything that matters.
- Balanced and Fast draft trade some accuracy for speed on long recordings.
- Picking the actual language instead of auto-detect helps on short or noisy clips.
- Clean input helps most of all: minimal background noise, one speaker at a time, a decent microphone.
- Every transcript opens in an editor, so you can fix names, jargon, and mumbled words yourself and save the corrected version.
Working with results
A finished transcription gives you:
- The full text, editable in place.
- A timestamped segment view.
- One-click export to TXT (plain text), SRT and VTT (subtitles), or JSON (segments with start and end times, for your own tooling).
Privacy
Uploaded media is transient. The file is normalized, transcribed, and then deleted from disk as soon as the transcript is stored. Only the text and its timestamps persist, scoped to your company like everything else in CCD, and you can delete a transcript permanently at any time.
API
Transcription is also available to scripts using your API key:
# upload (returns a job id)
curl -s -X POST https://ccd.dendat.ai/api/transcribe \
-H "X-API-Key: $CCD_API_KEY" \
-F "[email protected]" -F "quality=max" -F "language=auto"
# or transcribe a file already in your DenDrive (no re-upload)
curl -s -X POST https://ccd.dendat.ai/api/transcribe/from-drive \
-H "X-API-Key: $CCD_API_KEY" -H "Content-Type: application/json" \
-d '{"file_id": 1234, "quality": "max", "language": "auto"}'
# poll until status is "done"
curl -s https://ccd.dendat.ai/api/transcribe/jobs/<job_id> \
-H "X-API-Key: $CCD_API_KEY"
# download subtitles
curl -s "https://ccd.dendat.ai/api/transcribe/jobs/<job_id>/export?format=srt" \
-H "X-API-Key: $CCD_API_KEY" -o meeting.srt
Troubleshooting
- "Engine not installed": the instance needs the optional
faster-whisperpackage (pip install -r requirements-optional.txt) and a restart. - First run is slow: the model downloads on first use. Later runs start immediately.
- "No audio stream found": the file has no audio track (for example a silent screen recording or an image renamed to .mp3).
- Queued for a long time: transcriptions run one at a time per deployment to protect the fleet. Long recordings at Maximum accuracy can take a while; Fast draft is several times quicker.