AI-stemmeassistent i realtid med funktionskald & tovejs lydstreaming
En fitness- og ernæringsplatform havde brug for en stemmestyret AI-assistent, der kunne svare brugere i realtid med naturlig samtale, udføre domænespecifikke beregninger (måltidsjusteringer, kaloriesporing) og give stemmebaserede svar tilbage — alt sammen med forsinkelse på under ét sekund for en ægte samtaleoplevelse.
Diskuter Dit Projekt
Udfordringen
At bygge en produktionsklar stemme-AI-assistent præsenterede unikke realtids-ingeniørmæssige udfordringer:
- Forsinkelse — Traditionelle speech-to-text → LLM → text-to-speech pipelines tilføjede 3-5 sekunders forsinkelse, hvilket brød samtaleflowet
- Funktionskald — Assistenten skulle udføre domænelogik (ernæringsberegninger, justeringer af madplaner) midt i samtalen, ikke bare chatte
- Lydstreaming — Tovejs lyd skulle streames kontinuerligt uden bufferhuller eller ekkoproblemer
- Kontekstbevidsthed — Assistenten skulle opretholde samtalekonteksten over flere omgange, mens den håndterede afbrydelser
- Multi-sprog — Brugere talte på forskellige sprog og forventede svar på samme sprog
- Sessionsisolation — Hver stemmesession krævede uafhængig tilstandsstyring uden krydstale
Vores Løsning
Vi byggede en AI-stemmeassistent i realtid drevet af Googles Gemini Live API med native lydfunktioner, brugerdefinerede funktionskald til domænespecifikke beregninger og et React frontend med WebSocket-baseret lydstreaming.
Arkitektur
- AI Model: Gemini med native lydinput/output og funktionskald
- Backend: Python/FastAPI med WebSocket-endpoint til tovejs lyd
- Lydpipeline: PyAudio til mikrofon-/højttaler-I/O med realtidsstreaming
- Frontend: React med Vite og Tailwind CSS til brugergrænseflade for sessionskontrol
- Kommunikation: WebSocket til JSON-beskeder med lav latency og binær lydtransport
- Multimodal: Valgfri kamera- og skærmoptagelse for visuel kontekst
Realtids-lydpipeline
Tovejs streaming
Systemet opretholder kontinuerlige lydstreams i begge retninger:
- Input: Mikrofonlyd optaget ved 16kHz mono, opdelt i små rammer og streamet til AI-modellen i realtid
- Output: AI-genereret tale modtaget ved 24kHz og afspillet øjeblikkeligt via højttalere
- Ingen batching: Lydklumper sendes, som de optages — ingen akkumuleringsforsinkelser
- Afbrydelseshåndtering: Brugeren kan afbryde assistenten midt i svaret på en naturlig måde
Lydbehandling
- 16-bit PCM-format for både input og output
- Separate samplingsfrekvenser optimeret til tale (16kHz optagelse, 24kHz afspilning)
- Små bufferstørrelser for minimal latency
- Kontinuerlig streaming uden start-/stop-huller mellem ture
Funktionskaldsintegration
Sådan fungerer det
AI-modellen kan kalde lokale Python-funktioner midt i samtalen, når der er brug for domænespecifikke beregninger:
- Brugeren fremsætter en anmodning (f.eks. "Jeg har misset frokost i dag")
- AI-modellen transskriberer og forstår intentionen
- Modellen bestemmer, at et funktionskald er nødvendigt, og sender en struktureret anmodning
- Backend udtrækker funktionsnavn, argumenter og kalds-ID
- Lokal funktion udfører domæneberegningen
- Resultatet sendes tilbage til modellen som et struktureret svar
- Modellen genererer et naturligt sprogligt stemmesvar, der inkorporerer resultatet
Domænefunktioner
Systemet understøtter ernæringsfokuserede funktionskald til scenarier som:
- Glemte måltider — Omfordeler glemte makronæringsstoffer over de resterende måltider
- Uplanlagt mad — Justerer kommende måltider for at kompensere for uventet indtag
- Måltidsudskiftninger — Udveksler ingredienser, mens makromål bevares
- Aktivitetssporing — Anslår kalorieforbrænding og justerer ernæringsbufferen
Hver funktion bruger en makrodatabase med ernæringsprofiler pr. fødevare og udfører dynamiske beregninger med en smule stokastisk variation for naturligt følende svar.
Udførelsessikkerhed
- Mikrofoninput pauses under funktionsudførelse for at forhindre overlap
- Afventende lydrammer droppes for at undgå forældet kontekst
- Fejlsvar sendes pænt tilbage, hvis funktionsudførelsen mislykkes
- Normal streaming genoptages umiddelbart efter funktionsfuldførelse
Backend-arkitektur
FastAPI WebSocket-server
- Enkelt WebSocket-endpoint for al klientkommunikation
- Sessionslivscyklusstyring (start, stop, ping/pong sundhedstjek)
- Én aktiv session ad gangen med sessionslåsning
- CORS middleware til udviklingsmiljøer
- Health check-endpoint til overvågning
Sessionsstyring
- Sessioner oprettes ved klientforbindelse med valg af tilstand (kun lyd, kamera eller skærm)
- Asynkrone baggrundsopgaver håndterer lydoptagelse, -behandling og -afspilning samtidigt
- Elegant frakobling med ressourceoprydning
- API-nøglevalidering og fejludbredelse
Multimodal input (valgfrit)
Udover stemme understøtter systemet valgfri visuel kontekst:
- Kameratilstand — Streamer webcam-rammer (1fps) for visuel kontekst i samtaler
- Skærmtilstand — Optager skærmindhold til diskussion af information på skærmen
- Billeder ændres størrelse og komprimeres før transmission
- Visuel kontekst forbedrer AI's evne til at give relevante svar
Frontend-grænseflade
- Sessionskontrol — Start/stop lytning med tydelige statusindikatorer
- Statusvisning — Realtidsforbindelse og sessionsstatus (inaktiv, forbinder, aktiv, fejl)
- Temasupport — Lys/mørk tilstand med persistens
- Guidet gennemgang — Trin-for-trin demo for førstegangsbrugere
- WebSocket-styring — Automatisk genforbindelseslogik
AI-modelkonfiguration
- Native lydmodalitet (ingen separat STT/TTS pipeline)
- Konfigurerbart stemmevalg fra flere forudindstillede stemmer
- Systeminstruktioner, der definerer assistentens personlighed, svarstil og sproghåndtering
- Værktøjsdefinitioner for alle tilgængelige funktioner med parametreskemaer
- Automatisk sprogdetektion med svar på samme sprog
Nøglefunktioner
- Forsinkelse på under ét sekund — Native lydmodel eliminerer STT/TTS pipeline-overhead
- Realtids tovejs lyd — Kontinuerlig streaming med < 50 ms latency pr. lydklump
- Funktionskald — Domænespecifikke beregninger udført midt i samtalen
- Naturlig afbrydelse — Brugere kan afbryde assistenten naturligt uden særlige kommandoer
- Multi-sprog — Automatisk sprogdetektion med svar på samme sprog
- Multimodal input — Valgfri kamera- og skærmkontekst for visuel forståelse
- Sessionsstyring — Sessionslivscykluskontrol med låsning og ressourceoprydning
- Makroberegninger — Dynamiske ernæringsjusteringer med makroprofiler pr. fødevare
- Fejlhåndtering — Elegant håndtering af funktionsfejl og netværksafbrydelser
- Udvidelsesbar — Nye funktioner tilføjes ved at definere skema og handler — ingen arkitekturændringer
Resultater
Teknologistak
caseStudyDetail.more Casestudier
Udforsk flere af vores tekniske implementeringer
AI-drevet fakturabehandling med OCR og QuickBooks-integration
En mellemstor virksomhed, der månedligt behandler hundredvis af leverandørfakturaer, havde brug for at eliminere manuel dataindtastning ved automatisk at udtrække fakturadata ved hjælp af AI/OCR og synkronisere dem direkte til QuickBooks for bogføring og sporing af betalinger.
Klient-side annonceindsættelse (CSAI) med SCTE-35-markørparsing og integration af afspillere på flere platforme
En videostreamingplatform skulle implementere klient-side annonceindsættelse (CSAI) på tværs af web-, mobil- og connected TV-apps – hvilket muliggjorde personaliserede annonceringer på enhedsniveau med fuld support for annonceinteraktion (klikbare overlays, følgebannere, skip-knapper), som server-side indsættelse ikke kan tilbyde.
Klar til at Transformere Din Virksomhed?
Lad os drøfte, hvordan vi kan anvende lignende løsninger til dine udfordringer.