# How Do You Record Each Meeting Participant Separately on LiveKit?

> Use LiveKit track egress to record each speaker on their own file, then build accurate transcripts with clean speaker labels instead of guessing from a mix.

Published: 2026-10-15  
Updated: 2026-10-15  
Category: Intelligent Applications  
Tags: livekit, meeting recording, transcripts, track egress, speaker labels  
By: Dasnuve  
URL: https://dasnuve.com/blog/livekit-record-each-participant-separately

Meeting notes only help if they get the speaker right. When everyone is mixed into one file, transcription software has to guess who is talking, and it struggles when people overlap. This guide is for teams building or buying meeting recording on [LiveKit](https://docs.livekit.io/home/egress/overview/) who care about accurate transcripts more than a single watchable video.

**Short answer:** Record each participant (or each track) on its own file with LiveKit track egress, then align those files by timestamp to build a transcript with reliable speaker labels. Keep a room composite recording when people mainly need to watch the meeting later. Expect more files and storage; you gain clean audio per speaker and a clearer path to notes and follow-ups.

## Mixed recording vs. per participant recording

Mixed recording captures the whole room as one audio or video file. Per participant recording captures each person (or each media track) as a separate file. Mixed is simpler to play back. Per participant is simpler to label.

### Room composite (mixed)

You get one file of the whole meeting layout. It is the right choice for watching later and sharing a replay.

### Per track or per participant

You get one file per track or per person. It is the right choice for transcripts, speaker labels and post-production.

### Both

You get a composite plus per-track files. It suits teams that need a replay and accurate notes.

LiveKit's egress service can do all of these. A room composite (template source) renders the meeting layout and is a natural fit for "watch this later." A media source can capture tracks directly, including exporting a single track without transcoding. That single-track path is what most transcript pipelines want.

## How per track recording works in LiveKit

Per track recording works by starting a track egress for each audio (or video) track you care about. According to the [LiveKit track egress docs](https://docs.livekit.io/home/egress/track/), the track is exported as-is, without transcoding. Containers follow the codec: Opus audio lands in Ogg, H.264 in MP4, VP8 in WebM.

The same docs describe three useful options.

**File export** sends the recording to cloud storage for batch processing after the meeting.

**WebSocket streaming** is available for audio tracks. It sends raw PCM (`pcm_s16le`) that most transcription services accept, for near real-time transcripts.

**Auto egress** is configured when the room is created, so the platform can record a room composite and each published track without a manual API call per track.

### The EGRESS subscription gotcha

Egress joins the room as a participant with kind `EGRESS`. If you have a server-side subscription manager that rewrites subscriptions for everyone, it must **skip EGRESS participants**. Otherwise `UpdateSubscriptions` can point egress at the wrong track and your recording captures the wrong audio. LiveKit documents this under server-side subscription management in the [egress overview](https://docs.livekit.io/home/egress/overview/).

## From recordings to transcripts

Separate files give you speaker labels for free: each file already belongs to a participant or track id. The remaining work is alignment and transcription.

### The batch flow

First, store each track file with its room id, participant id, track id and start timestamp. Then transcribe each file with your speech-to-text provider. Merge the segments on a shared timeline using those timestamps. The result is a single transcript with speaker names, or stable ids mapped to names.

### The real-time flow

A real-time flow uses track egress over WebSocket. Stream PCM to your transcription service while the meeting runs, then attach speaker identity from the track metadata as results arrive.

### Alignment is where teams get surprised

Clocks drift, people mute and unmute, and late joiners start mid-meeting. Keep the LiveKit timestamps with every file, and treat mute events (track egress can send muted and unmuted text frames on the WebSocket path) as first-class signals so you do not invent speech during silence.

Clean per-speaker audio removes the hardest part of diarization, which is guessing who spoke when voices overlap.

## The trade-offs

The trade-offs are more files, more storage and more stitching work, in exchange for cleaner speaker attribution.

**Files.** One meeting can produce dozens of track files instead of one composite.

**Storage and cost.** Per-track audio adds up, so budget retention and lifecycle rules early.

**Stitching.** You need a small pipeline to merge transcripts on a timeline.

**Operations.** Auto egress helps, but you still monitor failed egress jobs and skipped EGRESS subscription bugs.

**Product fit.** If the main need is "watch the meeting," room composite alone may be enough.

Many teams keep both: a composite for humans, per-track audio for machines. That costs more and is usually worth it when notes, CRM follow-ups or compliance summaries depend on who said what.

## When to pick each approach

Pick **room composite only** when the output is a replay for people who missed the call, and rough notes are fine.

Pick **per track (or per participant) recording** when accurate speaker-labeled transcripts drive the product: meeting summaries, task extraction, coaching or searchable archives.

Pick **both** when you sell or rely on both replay and accurate notes. Configure auto egress at room creation so you do not miss a track when someone joins late.

If you are building this into a product, treat egress identity and subscription filtering as part of the design review, not an afterthought. The wrong subscription on an EGRESS participant is a silent correctness bug.

## How we approach this at Dasnuve

We choose the recording shape from the job, not from habit. Transcript-first products lean on per-track egress and a merge step. Replay-first products lean on room composite. When both matter, we plan for both outputs and for the storage that comes with them.

For related reading, see [what to automate first with AI](/blog/what-to-automate-first-with-ai) when meeting notes feed an automation backlog, and our [intelligent applications](/services/intelligent-applications) and [automation services](/services/automation) if you want help wiring recording into the rest of your stack.

## FAQ

### Is track egress the same as room composite?

No. Room composite captures a rendered view of the whole room. Track egress exports one track without transcoding. Use composite to watch; use track egress when you need clean per-speaker audio for transcripts.

### Can LiveKit stream audio for live transcription?

Yes. Track egress can send raw PCM audio over a WebSocket in a format most transcription services accept. The connection ends when the track is unpublished or the participant leaves.

### What goes wrong with server-side subscription managers?

If your server rewrites subscriptions for every participant, it can override the track egress subscribed to and record the wrong media. Skip participants with kind EGRESS (and usually INGRESS and AGENT) in that logic.

### Do I still need a mixed recording if I have per-track files?

Only if people need to watch a single replay. Per-track files are awkward to play as a meeting. Many teams keep a room composite for humans and per-track audio for transcripts.

### How should I store per-track files?

Store them with room, participant, track and start time metadata, and set retention rules. Without metadata, stitching a transcript later becomes guesswork.

## Where to start

Decide first whether your product is transcript-first or replay-first. If speaker-accurate transcripts matter, turn on auto egress at room creation so every published track is recorded, and store each file with its room, participant, track and start time. Before you ship, check that any server-side subscription manager skips EGRESS participants. Keep a room composite only if people also need to watch the meeting later, and plan the storage for both.
