Hoppa till innehåll
AI EngineeringVoice AIOpenAI RealtimeTwilio14 min läsning

Voice AI för kundtjänst: OpenAI Realtime + Twilio i svensk produktion

Hur jag kopplar OpenAI Realtime till Twilio för svensktalande röstagenter - och var latens, avbrott och överlämning faktiskt avgörs.

00
Voice AI för kundtjänst: OpenAI Realtime + Twilio i svensk produktion
I telefon är latens allt - en sekunds tystnad känns som en evighet för den som ringer.Photo: Unsplash

Bygg en svensk voice AI för kundtjänst med OpenAI Realtime och Twilio.

En röstagent som svarar i telefon har inget grafiskt gränssnitt att gömma sig bakom. Antingen låter den naturlig och svarar snabbt, eller så lägger den som ringer på efter tjugo sekunder. Skillnaden mot en chattbot är brutal: i text accepterar folk en sekunds fördröjning, i ett samtal känns en halv sekunds tystnad onaturlig. Kombinationen OpenAI Realtime och Twilio gör det möjligt att bygga svensktalande röstagenter, men det mesta av kvaliteten avgörs i detaljerna runt själva modellen.

Jag har byggt röstflöden för svenska verksamheter och nedan delar jag det som faktiskt är svårt - och det få nämner förrän de stött på det i produktion. Det mesta av arbetet ligger inte i att få modellen att svara, utan i allt runtomkring: latens, avbrott, sifferuppläsning, överlämning och vad som händer när något går fel mitt i ett samtal. Det är där en demo skiljer sig från en tjänst man vågar släppa på riktiga kunder.

Hur delarna hänger ihop

Twilio hanterar telefonin: det inkommande samtalet, telefonnumret och ljudströmmen. Via en mediaström skickas ljudet vidare till er backend, som i sin tur håller en realtidsförbindelse mot OpenAI Realtime. Modellen tar emot ljud, förstår tal direkt och svarar med tal tillbaka - utan att gå omvägen via separata steg för transkribering och talsyntes. Det är just den direktheten som gör låg latens möjlig.

  • Twilio: telefoni, nummer och ljudströmmen in och ut.
  • Er backend: limmet som kopplar samman strömmarna och håller affärslogiken.
  • OpenAI Realtime: tal in, tal ut, med verktygsanrop däremellan.

Latens är hela spelet

I ett samtal är allt över ungefär en sekunds svarstid kännbart. Latensen byggs upp av flera led: nätverket till och från Twilio, strömningen till modellen, modellens egen bearbetning, och vägen tillbaka. Jag jagar millisekunder genom att hålla backend nära användaren geografiskt, undvika onödig buffring och strömma ljud i båda riktningarna istället för att vänta på hela meningar. Hur jag tänker kring strömning rent tekniskt går jag djupare på i artikeln om streaming i LLM-appar.

Ett knep som gör stor skillnad för upplevelsen är att fylla de oundvikliga pauserna. När agenten behöver göra ett verktygsanrop - slå upp en order, hämta ett saldo - tar det tid, och tystnad under tiden känns som att samtalet brutits. Genom att låta agenten säga något kort som "ett ögonblick, jag tittar" innan den slår upp, blir väntan naturlig istället för obehaglig. Det löser inte den tekniska latensen, men det löser den upplevda, och i röst är det den upplevda som avgör.

Avbrott och tystnad - det som gör det mänskligt

En verklig konversation innehåller avbrott. Den som ringer börjar prata medan agenten fortfarande talar, och då måste agenten tystna omedelbart och lyssna. Hanteras inte det pratar de i mun på varandra och upplevelsen rasar. Lika viktigt är att tolka tystnad: när har personen talat färdigt? För kort tröskel och agenten avbryter; för lång och det blir pinsamma pauser. Det här är finliret som avgör om röstagenten känns naturlig eller robotaktig.

Svenska som språk

Svenskan ställer egna krav. Uttal av namn, ortnamn och fackuttryck, hantering av sifferuppläsning - organisationsnummer, belopp, datum - och en röst som låter naturlig på svenska snarare än som en översatt engelsk assistent. Jag testar alltid med riktiga svenska samtal och riktiga svenska kunduppgifter, eftersom det som låter bra på engelska ofta skaver på svenska.

Verktyg och överlämning till människa

En röstagent som bara pratar är av begränsad nytta. Värdet kommer när den kan slå upp en order, boka en tid eller kontrollera ett ärende via verktygsanrop mitt i samtalet. Lika viktigt är en ren överlämning: när agenten når sin gräns ska den koppla vidare till en människa med kontext, inte tvinga kunden att börja om. Den övergången bygger jag in från start. Vill man ta nästa steg och låta flera specialiserade agenter samverka är multi-agent systems ett naturligt nästa läsning.

Att få ihop telefoni, realtidsljud och affärslogik till något driftsäkert är kärnan i den här typen av leverans, och det är precis sådant jag arbetar med inom AI Engineering.

Börja smalt och mät rätt saker

Jag släpper aldrig en röstagent löst på alla samtal direkt. Istället börjar jag med ett avgränsat scenario - säg orderstatus eller öppettider - och låter den hantera det väl innan jag breddar. Det gör att felen blir få och hanterbara, och att teamet hinner bygga förtroende för lösningen. Lika viktigt är att mäta rätt: inte bara om modellen sa något rimligt, utan om samtalet faktiskt löste kundens ärende utan att en människa behövde rycka in. Andelen ärenden som klaras helt av agenten, och hur ofta den lämnar över i tid, säger mer än någon språkmodellsmetrik.

Kostnad, robusthet och integritet

Realtidsljud debiteras per minut och kostnaden kan springa iväg vid volym, så jag mäter kostnad per samtal tidigt. Robusthet handlar om vad som händer när modellen är långsam eller nätet glappar mitt i ett samtal - det måste finnas en graciös reträtt. Och eftersom samtal ofta innehåller personuppgifter måste hanteringen vara genomtänkt redan i designen, inte påklistrad efteråt: vad spelas in, hur länge sparas det, och var i världen behandlas ljudet. Strukturerade verktygssvar, som jag beskriver i artikeln om structured outputs, gör logiken pålitligare.

Relaterat

Ett konkret exempel på en svensk röstagent i drift finns bland mina kundcase.

Vill du ta det vidare?

Funderar ni på en röstagent för kundtjänst och vill veta om det håller för era samtal? Boka ett förutsättningslöst samtal så går vi igenom era flöden och var värdet är störst.

I text accepterar folk en sekunds fördröjning, i ett samtal känns en halv sekunds tystnad onaturlig.

- Simon Axelsson

Vanliga frågor

Varför OpenAI Realtime istället för separat tal-till-text och text-till-tal?
För att latensen blir lägre. När modellen tar ljud in och ger ljud ut direkt slipper du omvägen via separata transkriberings- och syntessteg, som var och en lägger på fördröjning. I telefon är just den fördröjningen skillnaden mellan ett naturligt samtal och ett irriterande.
Fungerar det bra på svenska?
Ja, men det kräver testning med riktiga svenska samtal. Uttal av namn och ortnamn, uppläsning av siffror som organisationsnummer och belopp, och en röst som låter naturlig på svenska behöver verifieras. Det som låter bra på engelska skaver ofta på svenska, så jag utvärderar alltid mot er faktiska domän.
Vad händer när agenten inte klarar frågan?
Den ska koppla vidare till en människa med bevarad kontext, inte tvinga kunden att börja om. En ren överlämning är minst lika viktig som själva AI-svaret och något jag bygger in från start, tillsammans med en graciös reträtt för när modellen är långsam eller nätet glappar.
Simon Axelsson
Simon AxelssonIT-konsult & teknisk rådgivare

Simon Axelsson är senior IT-konsult och grundare av SIAX Technology AB. Han hjälper nordiska företag med molninfrastruktur, dataplattformar och AI-automation.

Fler artiklar