Skip to content

Use cases

Options are chosen for the job: what a call needs only gets in a meeting's way. Three ready-made sets, and what raises accuracy in all of them.

Call centre

A call recording is almost always two-channel: telephony has already put the client and the manager on separate channels. That is the best thing that can happen to recognition, so separating by voice is not needed here at all.

json
{"stereo_channels_as_speakers": true, "diarization": false, "speaker_roles": true,
 "call_direction": "inbound", "speaker_identification": true, "emotion": false, "pii": false}

call_direction is passed per call: it says who rang whom, and that decides which side is called the client and which the manager. If the recording is mono, turn diarization on and set max_speakers: 2 — roles need exactly two voices.

Keep "Recognise by voice" on and name your managers once: after that they arrive with a name in every recording rather than a number. Company and product names belong in the vocabulary — they are what calls say most often.

Emotions and Personal data multiply the tariff, ×2 and ×1.2. Turn them on when you will actually read them: Options.

Emotions: the numbers and what to do with them

Emotions is the call-centre option above all: it is how you tell a hundred ordinary conversations from the five worth listening to. Every utterance carries a class (mood) with a confidence and three scales from 0 to 1: valence — pleasant or unpleasant, arousal — calm or tense, dominance — hesitant or assertive. Per speaker, the same scales averaged, plus dominant_mood and mood_share, the share of each state. What each one means: Emotion scales. The set above keeps emotion off — that is caution about the tariff, not advice: if someone will read the numbers, turn it on.

Work out the thresholds on your own recordings. The 0.4 and 0.6 in the scale description are a bearing, not your business's norm: a debt-collection line sounds tenser than a nail-salon booking, support runs flatter than sales. Take a hundred ordinary conversations, look at the median valence of the clients — and count a bad call as a departure from that, not from 0.5.

Watch the movement inside a call. A client who starts at 0.55 and ends at 0.3 is a conversation that went wrong, even when the average looks calm. For a manager the opposite is more useful: the weekly average valence and the mood_share, which shows whose share of tension runs above everyone else's.

Do not put all of it in front of an operator. An utterance of a couple of words is averaged over a single window (windows: 1) and its reading is noisy; a class with a confidence below 0.35 is better left off the screen. None of that affects picking calls to listen to — that runs on the per-speaker averages.

Meetings

A meeting is a mono recording with several voices, and only speaker separation can pull them apart.

json
{"diarization": true, "max_speakers": 4, "speaker_identification": true,
 "speaker_roles": false, "word_timestamps": true, "emotion": false, "pii": false}

The model tells apart up to four voices — a ceiling, not a preference: in a meeting of six the extra voices merge into their neighbours. With more people, record closer to whoever is speaking, or split the recording.

"Client and agent" goes off here: roles are only looked for in a conversation of exactly two, and a meeting would give nonsense.

The most useful option in meetings is "Recognise by voice". Name the participants once and the next recordings come back with names instead of "Voice #100". The team is usually the same, so a name pays off at the very next meeting — and a named voice stops being a candidate, which means it no longer expires. Voices and speakers.

Interviews and dictaphone

Two people in mono, often in a noisy room. The set is simple:

json
{"diarization": true, "max_speakers": 2, "speaker_identification": true, "emotion": false, "pii": false}

max_speakers: 2 is not a formality here: without it noise and echo can make the model "hear" a third person. The interviewer is the same from recording to recording, so name that voice and it stops being a number.

What raises accuracy

Five things, best first:

  1. The vocabulary. Company, product and brand names, people's names — what ordinary speech does not carry. How it works.
  2. Stereo channels instead of separation by voice. If telephony gives you two channels, leave stereo_channels_as_speakers on: the sides are already apart, and there is nothing to get wrong.
  3. max_speakers when you know the number of voices. The model stops looking for extra ones.
  4. call_direction on every call. It directly raises the accuracy of the client / manager split.
  5. More prints for the voices you know. If identity.score keeps landing just under the threshold, the voice is short of samples: add one more from a good recording.

What does not help: switching everything on. Extra options do not make the text more accurate, and Emotions and Personal data multiply the tariff on top of that.