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
Kickly: AI-drevet projektplatform for startups
Kickly er en AI-drevet projektstyringsplatform bygget til startups – der kombinerer smart opgaveautomatisering, teamsamarbejde og sporing af fremskridt i realtid i ét produkt.
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.
Klar til at Transformere Din Virksomhed?
Lad os drøfte, hvordan vi kan anvende lignende løsninger til dine udfordringer.