A feladat
Egy hangvezérelt AI társeszköz: beszélsz hozzá, válaszol, a személyiségét pedig egy LLM hajtja. Nem egy terméknek álcázott telefonos app, hanem fizikai eszköz, amelynek magától kell bootolnia, csatlakoznia, figyelnie és válaszolnia.
Egy követelmény az első naptól nem volt alku tárgya: minden bájtnyi felhasználói adatnak, beleértve a hangfelvételeket, az átiratokat és a modellhívásokat, az EU-n belül kellett maradnia.
Amit építettünk
A teljes stack egy csapattól érkezett. Az eszközön egy ESP32 rögzíti a hangot, és állandó WebSocket-kapcsolaton streameli felfelé. A Laravel backend vezényli a beszélgetési kört: beszédfelismerés, az LLM-kör, majd a szintetizált beszéd visszastreamelve az eszközre.
Egy Flutter kísérőapp párosítja az eszközt a beállításhoz és a kezeléshez, ugyanazon a valós idejű gerinchálón, mint maga az eszköz.
A beszéd az Azure STT/TTS-en fut, a nyelvi modell a Google Vertex AI-on. Mindkettőt régiónként választottuk ki, így a pipeline az EU-n belül marad, egzotikus self-hosting nélkül.
A nehéz részek
A hangeszközök a késleltetésen állnak vagy buknak. Egy kérés-válasz API adóvevőnek hat, ezért minden streamelve megy: a hang felfelé, a szintetizált beszéd lefelé, egyetlen teljes duplex WebSocketen.
A mikrokontrollerek nem bocsátanak meg. Az újracsatlakozási logikát, a pufferelést és a hibaállapotokat egy polcon ülő, lakossági Wi-Fi-n lógó eszközre kellett méretezni, nem adatközpontra.
Kulcsdöntések
Menedzselt AI, régióhoz rögzítve
A modellek self-hostolása garantálta volna a rezidenciát, de szétfeszítette volna a scope-ot. Az Azure Speech és a Vertex AI is kínál EU-régiókat, így egyszerre kaptunk menedzselt megbízhatóságot és EU-rezidenciát.
WebSocket a kérés-válasz helyett
A beszélgetés stream, nem űrlapbeküldés. Egyetlen állandó kapcsolat viszi a hangot mindkét irányba, és elég alacsonyan tartja a köröket ahhoz, hogy élőnek hasson.
Egy csapat, teljes stack
A firmware, az app, a backend és az AI-pipeline együtt épült. Amikor két réteg közötti interfészen változtatni kellett, még aznap megváltozott, szállítók közötti egyeztetés nélkül.
Eredmény
- A teljes stack házon belül készült el: ESP32 firmware, Flutter app, Laravel backend.
- Végponttól végpontig EU-s adatrezidencia, a mikrofontól a modellig és vissza.
- Valós idejű hangkör WebSocketen, lakossági Wi-Fi-re méretezve.
Gyakori kérdések
- Mi kell egy egyedi AI-hangasszisztens eszköz megépítéséhez?
- Négy réteg, amelynek együtt kell elkészülnie: az eszköz firmware-e (itt egy ESP32, amely rögzíti és streameli a hangot), a backend, amely a beszédfelismerést, az LLM-kört és a beszédszintézist vezényli (Laravel), egy kísérő mobilapp a beállításhoz (Flutter), és maga az AI-pipeline. Mind a négyet házon belül építettük, így ha két réteg közötti interfészen változtatni kellett, még aznap megtörtént.
- Lehet egy hangalapú AI-termék teljesen EU-s adatrezidenciájú?
- Igen, méghozzá a modellek self-hostolása nélkül. Az Azure Speech és a Google Vertex AI is kínál EU-régiókat, így a beszédfelismerés, a nyelvi modell és a beszédszintézis mind EU-s adatközponthoz rögzíthető. A hangfelvételek, az átiratok és a modellhívások soha nem hagyják el az EU-t.
- Hogyan lehet a hangalapú AI késleltetését beszélgetés-szintre szorítani?
- Mindent streamelni kell. A kérés-válasz API adóvevőnek hat, ezért az eszköz egyetlen teljes duplex WebSocket-kapcsolatot tart: a hang felfelé streamel, miközben a szintetizált beszéd lefelé, így a körök elég rövidek ahhoz, hogy élőnek hasson.