MeetStream Guide: Per-Participant Audio Streams
MeetStream Guide: Per-Participant Audio Streams
MeetStream Guide: Per-Participant Audio Streams
This guide explains how to capture individual audio recordings per participant in a meeting. Instead of a single mixed audio track, you receive a separate WebM audio file for each speaker.
Supported platforms: Google Meet, Zoom.
audio_separate_streams: true in your Create Bot request.Use the Create Bot endpoint: https://docs.meetstream.ai/api-reference/api-endpoints/bot-endpoints/create-bot
Tip: You can also pass
audio_separate_streamsnested insiderecording_config:The top-level parameter takes precedence if both are set.
Once the bot joins, it automatically:
The bot also continues to produce the standard mixed audio file (audio.wav) regardless of whether audio_separate_streams is enabled.
Note on platform behaviour: The mechanism for capturing per-participant audio differs between Zoom and Google Meet and affects the isolation level of each file. See Section 7 for details.
After the bot leaves and audio processing completes, call:
HTTP status 202 is returned when the bot has not yet left the meeting. Poll again after the bot exits.
This is returned when audio_separate_streams was not enabled, or the meeting ended before any speech was detected.
Each segment in the response contains a url field — a presigned S3 URL that allows direct download without additional authentication.
Important: Presigned URLs expire after 10 minutes. If a URL has expired, call
get_audio_streamsagain to get fresh URLs.
Each participant has one segment (segment_index: 0) covering the full duration of their speech in the meeting. Silence gaps between speech periods are preserved with actual silence, so the file’s timeline aligns with the real meeting timeline.
Use duration_seconds to determine how long a participant was speaking.
The quality of speaker isolation differs by platform due to how each platform delivers audio.
Zoom produces the cleanest per-participant files. Google Meet files contain the meeting’s mixed audio during the periods when that participant was the active speaker.
Per-participant audio and the standard mixed audio are always captured simultaneously. You do not need to choose one or the other.
This produces:
/api/v1/bots/<BOT_ID>/get_audio)./api/v1/bots/<BOT_ID>/get_audio_streams).Both flags can be enabled together:
This produces separate audio and video files per participant. The files are not muxed together — audio and video are delivered as independent files. Match them by participant_name across the two API responses.
If you have webhooks configured, you will receive an audio.processed event when audio processing (including per-participant stream generation) completes. Poll get_audio_streams until audio_streams_available is true if you prefer polling over webhooks.
audio_streams_available: false with audio_status: "Success"?
audio_separate_streams: true was set when the bot was created.Missing a participant’s audio?
Getting status in_progress?
Presigned URL returns 403 Forbidden?
get_audio_streams again for fresh URLs.Audio file sounds like the whole meeting, not just one person?