Overview
Minutes uses Whisper Large V3 via Groq to transcribe meeting audio into structured, speaker-attributed text. Each transcript is divided into time-stamped segments with speaker labels, enabling precise attribution and searchability.
Upload Workflow
Transcription follows a two-step process:
- Create the meeting with metadata (title, type, participants, language)
- Upload the audio file to trigger transcription
Step 1: Create the Meeting
curl -X POST http://localhost:8013/api/v1/meetings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"title": "Ministry AI Strategy Discussion",
"meeting_type": "committee",
"language": "ar",
"participants": [
"Dr. Ahmed Al Mansoori",
"Eng. Fatima Al Hashimi",
"Mohammed Al Zaabi"
],
"scheduled_at": "2024-01-15T14:00:00Z"
}'
Meeting Types:
| Type | Description |
|---|---|
cabinet | Cabinet-level sessions with formal decisions |
committee | Cross-departmental committee meetings |
review | Performance and progress reviews |
standup | Daily/weekly team standups |
board | Board of directors meetings |
workshop | Working sessions and brainstorming |
general | General meetings not fitting other categories |
Step 2: Upload Audio
curl -X POST http://localhost:8013/api/v1/meetings/{meeting_id}/upload \
-H "Authorization: Bearer $TOKEN" \
-F "file=@committee_meeting.mp3"
The upload triggers automatic transcription. The meeting status transitions from created to transcribing to transcribed.
Transcript Structure
Retrieve the transcript after processing:
curl http://localhost:8013/api/v1/meetings/{meeting_id}/transcript \
-H "Authorization: Bearer $TOKEN"
Response:
{
"meeting_id": "mtg-a1b2c3",
"segments": [
{
"speaker": "Speaker 1",
"start": 0.0,
"end": 12.5,
"text": "بسم الله الرحمن الرحيم، نبدأ اجتماع اليوم بمناقشة استراتيجية الذكاء الاصطناعي"
},
{
"speaker": "Speaker 2",
"start": 13.0,
"end": 28.3,
"text": "شكراً، أود أن أبدأ بعرض التقدم المحرز في المرحلة الأولى"
}
],
"full_text": "...",
"language": "ar",
"duration": 3540.0
}
Segment Fields
| Field | Type | Description |
|---|---|---|
speaker | string | Speaker identifier (Speaker 1, Speaker 2, etc.) |
start | float | Start timestamp in seconds |
end | float | End timestamp in seconds |
text | string | Transcribed text for this segment |
Speaker Diarization
Minutes identifies distinct speakers in the audio and labels segments accordingly. When participant names are provided in the meeting creation, the system maps speaker labels to names based on speaking patterns.
Diarization works best with:
- Clear audio with minimal background noise
- Distinct speakers with minimal crosstalk
- Meetings with 2-10 participants
Language Support
Minutes supports three language modes:
| Mode | Description |
|---|---|
ar | Arabic transcription (MSA and Gulf dialect) |
en | English transcription |
auto | Automatic language detection from audio content |
Bilingual Meetings
For meetings that mix Arabic and English, use auto mode. Whisper detects language transitions and transcribes each segment in the appropriate language.
Audio Requirements
| Constraint | Value |
|---|---|
| Maximum file size | 50 MB |
| Supported formats | mp3, wav, m4a, ogg, webm |
| Recommended sample rate | 16 kHz or higher |
| Recommended channels | Mono or stereo |
Higher quality audio produces more accurate transcriptions. For best results, use a dedicated meeting recording device or conferencing system with good microphone placement.