Dual-Channel Audio for Call Analytics and Voice AI

Black headset with a boom microphone on a wooden desk beside an open laptop
Photo by Petr Macháček on Unsplash

Dual-channel audio records each speaker of a call on a separate channel: in a contact center, the agent on one channel and the customer on the other. A mono recording sums both voices into a single channel, and spatial stereo from two microphones in one room puts both voices on both channels at different levels. For speech AI, one speaker per channel means every word, pause and interruption already belongs to a known speaker, so no model has to guess who said it.

Our guide to speech data sample rates defines the format next to bit depth and file type. The classic conversational telephone corpora were recorded this way too, as our post on Switchboard and Fisher alternatives describes. This article covers the practical side: what the second channel does for call analytics and voice agents, how to get it out of a telephony stack, and what to check before you buy or record two-channel data.

Mono, stereo and dual-channel are different files

Layout What each channel holds Who spoke when
Mono mix Both voices summed into one signal Has to be inferred by diarization
Spatial stereo Both voices on both channels, from two microphones in one room Partly recoverable from level and timing differences
Dual-channel One speaker per channel, from separate lines or headsets Known from the channel, including during overlap

File headers don't tell these apart. A dual-channel call, a stereo room recording and a mono recording copied onto two channels all report two channels. The checks further down tell them apart in a few minutes.

What one speaker per channel enables

Task With one speaker per channel On a mono mix
Transcription Each channel is transcribed on its own, and overlapping words keep overlapping timestamps Two voices arrive at once; overlapped words are often dropped or given to the wrong speaker
Agent and customer attribution The channel is the role, fixed once per recording setup A diarization model labels speaker A and B, and something else decides which is the agent
Talk time, interruptions, silence Voice activity on each channel gives exact figures Estimated from diarization, which errs most where speakers overlap
Intent and sentiment labels Each side's turns are labeled separately Mixed turns blur who expressed what
PII redaction Silence the customer channel alone Silencing a span mutes both speakers
Side-specific models Train or test on the customer side or the agent side alone Separate the voices first
Voice agent evaluation Replay the caller channel and compare with the real agent's timing One side can't be played without the other

Call analytics. Most call metrics are measured per speaker. Amazon Transcribe Call Analytics reports talk time as the milliseconds each participant spoke, and flags an interruption when one participant cuts off the other mid-sentence, according to its call characteristics documentation. The service only supports two-channel audio with the agent on one channel and the customer on the other, and its ChannelDefinition setting maps channel 0 or 1 to the role AGENT or CUSTOMER. If you train your own analytics models, the same structure turns talk-time ratio, overlap and hold silence into measured labels rather than estimates.

Redaction. Amazon's post-call redaction replaces spoken personal information in the audio file with silence. With one speaker per channel, a redaction step can silence a card number on the customer channel alone, while the agent's overlapping words stay intact. In a mono mix, the same silence cuts the agent too.

Side-specific models. Agents typically wear headsets at a desk, while customers call from cars, kitchens and speakerphones. Separate channels let you fine-tune a recognizer on caller audio only, report word error rate per side, and keep agent speech out of a test set meant to represent callers.

Voice agents. A deployed voice agent hears only the caller, so the caller channel is its realistic input. Replay a recorded caller channel into the agent under test, and the real agent channel shows where a human yielded, backchanneled or kept talking. Barge-in, the caller cutting in while the agent speaks, shows up as overlap between the two channels' voice activity. Replay isn't interactive, since the recorded caller won't react to your agent, but it gives real timing for where callers cut in. Our article on speech data for voice agents covers the rest of the data brief, and the guide to full-duplex conversational speech data explains why speech-to-speech models train on two-channel conversation.

Diarization. Mixing the two channels down gives a realistic mono input, and the channels supply the reference answer, as our speaker diarization guide explains.

Getting dual-channel audio out of a telephony stack

Telephony and contact-center platforms such as Twilio and Amazon Connect can record each party separately, but the setting, the default and the channel order differ from one platform to the next.

Twilio. The Recordings API takes RecordingChannels set to mono or dual, and dual records each party of a two-party call on its own channel. The default depends on how recording starts: mono for a recording created through that API, and dual for the TwiML <Recording> noun, whose docs put the parent call on the first channel and the child call on the second. Recordings made with the <Record> verb are always mono. Conferences need Dual-channel Recording for Conference turned on in the Voice Recording settings; the first participant to join with recording enabled then gets the first channel, and everyone else is mixed on the second. Conference recordings download as mono unless the request adds RequestedChannels=2.

Amazon Connect. Contact recordings in the contact-center product, now called Amazon Connect Customer, are stereo. In recordings of agent interactions, the agent is on the right channel and the customer, plus any conferenced third parties, on the left. In IVR recordings, the customer is on the right and system prompts on the left. The same customer can therefore sit on different sides in the two recordings of one contact.

Speech-to-text services then need to be told to treat the channels separately:

Service Setting What the docs say
Google Cloud Speech-to-Text (v1) audioChannelCount and enableSeparateRecognitionPerChannel Only the first channel is recognized unless both are set; billed as channel count times audio length; each result carries a channelTag
Amazon Transcribe ChannelIdentification Two channels at most, labeled ch_0 and ch_1; when speakers talk over each other, the channels' timestamps overlap
Deepgram multichannel=true A separate transcript for each channel, up to 20 channels
AssemblyAI multichannel Each utterance carries a channel number starting at 1; transcription takes about 40% longer; combine with speaker_labels to diarize within a channel

Google's default is the easiest one to miss. Its reference says "We only recognize the first channel by default", so a dual-channel call sent without the flag comes back as a transcript of one side. The v1 API also limits MULAW audio to a single channel, so convert two-channel mu-law telephony files to LINEAR16 or FLAC first.

What to check in a two-channel sample

"Stereo" on a spec sheet settles none of the problems below. Ask for a sample, choose 20 files yourself, and check each row.

Problem What it sounds or looks like How to check
Bleed or crosstalk The other speaker faintly audible on a channel Solo each channel during the other person's long turn
Echo A delayed copy of one voice on the other channel, often from a speakerphone Same solo test; listen for the repeat
Channel swap The agent on the left in some files and on the right in others Listen to the first 30 seconds of each file against its metadata
Offset or drift Replies land early or late by the same amount every time, or the gap changes through the file Compare turn timing near the start and the end of a long file
Unequal gain or codec One side much quieter, or narrower in bandwidth Compare per-channel levels and spectrograms
Duplicated mono The same mix on both channels Subtract one channel from the other
Merged transcript timing One turn list in which speakers never overlap Find an interruption and check that both sides carry their own timestamps

Offset and drift come from recording the two sides on separate devices and joining the files afterwards. Two sides captured by one recorder share a clock, though they can still be swapped.

Transcripts matter as much as audio. Ask whether each channel is transcribed on its own with its own timestamps, and look at a stretch where both people talk at once. If one speaker's words simply vanish there, the transcript was probably made from a mix.

A 10-minute check with ffmpeg

Open a few files in an audio editor that draws each channel as its own waveform, and solo each channel in turn. Then run these commands, tested with ffmpeg 7.1 on 16-bit PCM, mu-law, float and FLAC files:

# Codec, sample rate and channel count
ffprobe -v error -of default=nw=1 \
  -show_entries stream=codec_name,sample_rate,channels call.wav

# RMS and peak level of each channel, in dB
ffmpeg -i call.wav -af \
  "astats=measure_perchannel=RMS_level+Peak_level:measure_overall=none" \
  -f null -

# Channel 1 minus channel 2: max_volume of -91 dB
# means the channels are identical
ffmpeg -i call.wav -af "pan=mono|c0=c0-c1,volumedetect" -f null -

# One file per channel, and a mono mix
ffmpeg -i call.wav \
  -filter_complex "channelsplit=channel_layout=stereo[L][R]" \
  -map "[L]" ch1.wav -map "[R]" ch2.wav
ffmpeg -i call.wav -ac 1 mix.wav

A real dual-channel call gives a difference signal about as loud as the speech itself. A duplicated mono file gives -91 dB, which is digital silence.

When mono is fine

  • Single-speaker audio. Read speech, voice commands and TTS voice recordings have one voice, so there is nothing to keep apart.
  • Far-field meetings. In a room, every microphone hears every speaker, so channels don't map to people. Microphone arrays and diarization handle that case, not a dual-channel spec.
  • A product that only hears mono. If your model will only ever receive mixed audio, evaluate it on mono. You can still buy dual-channel data and mix it down with one command, keeping per-speaker labels for training. The reverse takes source separation, which is never as clean.

Where SpeechData.ai fits

We sell dual-channel conversational data, so weigh this section accordingly; the checks above work on any vendor's sample, ours included.

SpeechData.ai licenses 60 off-the-shelf datasets of spontaneous two-person conversations in 60 languages and dialects, recorded in-country with one channel per speaker. Each comes with time-aligned, human-verified transcripts, speaker metadata (age, gender, region and recording device), consent documentation for every speaker, and a commercial license for training and evaluating ASR, TTS and other voice AI models.

Each dataset holds 500 to 2,000 hours from 50 to 200 speakers, at published prices of $60 to $95 per hour of audio. The US English conversations, for example, are 1,500 hours from 150 speakers at $90 per hour. Each page in the dataset catalog takes requests for a free sample, so you can run the checks above before you buy.

The catalog is spontaneous conversation, not customer service calls. For contact-center work, we record role-played customer service calls with agent and customer on separate channels, captured as narrowband telephony or wideband audio as your brief specifies. Other languages, domains and recording conditions can be collected to your spec.

Frequently asked questions

What is dual-channel audio?

Dual-channel audio records each speaker of a two-person conversation on a separate channel, such as the agent on one channel and the customer on the other in a call-center recording. A mono recording mixes both voices into one channel, and a stereo recording from two microphones in one room puts both voices on both channels. In Amazon Connect, for example, recordings of agent interactions store the agent on the right channel and the customer on the left.

Is stereo or mono call recording better for speech analytics?

Two-channel recording with one speaker per channel is better for any analysis that depends on who said what. Talk time, interruptions and sentiment are measured per participant, and Amazon Transcribe Call Analytics only accepts two-channel audio with the agent and the customer on separate channels. A dual-channel file can be mixed down to mono with one command, while splitting a mono mix back into speakers takes diarization or source separation.

How do speech-to-text APIs transcribe dual-channel audio?

Most offer a per-channel mode that returns a transcript for each channel. Google Cloud Speech-to-Text v1 needs audioChannelCount and enableSeparateRecognitionPerChannel and otherwise recognizes only the first channel, Amazon Transcribe uses ChannelIdentification for up to two channels, Deepgram uses multichannel=true, and AssemblyAI has a multichannel option. Google bills a multichannel request as the channel count multiplied by the audio length.

How can I tell if a stereo file is really dual-channel?

Listen to each channel on its own: a true dual-channel file has one voice per channel, with at most a faint trace of the other speaker. To catch a mono recording copied onto two channels, subtract one channel from the other, for example with ffmpeg's pan and volumedetect filters, where a max_volume of -91 dB means the channels are identical. Then check that the agent sits on the same channel in every file.

When is mono audio good enough for speech training data?

Mono is fine when there is only one speaker, as in read speech, voice commands and text-to-speech recordings. In far-field meeting audio, every microphone hears every speaker, so channels can't map to people and diarization has to do that work. For two-person calls, record or buy dual-channel audio even if production audio is mono, because mixing two channels down is easy and separating a mix is not.

Read also

Training a voice model?

Browse 60 conversational speech datasets with transcripts, metadata, and a commercial license. Samples are free on request.