Varför släpar en lokal talmodell efter endast när väckningsordsdetektering är aktiv?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

En lokal talmodell kan bli långsammare när aktivering med väckningsord är igång, eftersom det ständigt aktiva detektorsystemet lägger till förbehandling, buffring, schemaläggning och överlämning av ljud.

Utan ett väckningsord kan användaren trycka på en knapp och skicka en ren inspelning direkt till taligenkänningen. Med aktivering via väckningsord fångar hemservern kontinuerligt korta ljudrutor, extraherar funktioner, poängsätter en utlösarmodell, sparar förinspelat ljud och avgör när kontrollen ska överföras till röstaktivitetsdetektering och transkribering. Om dessa steg delar processorkärnor, ljudenheter, köer eller minne kan den extra kontrollpunkten göra en annars snabb lokal modell långsammare, även om själva talmodellen inte har ändrats.

Detektering av väckningsord lägger till en ständigt aktiv inferensloop

En väckningsordsdetektor måste granska ljud kontinuerligt, inte bara efter att användaren har startat en inspelning. Den delar upp signalen i ljudrutor, beräknar akustiska funktioner och utvärderar upprepade gånger en kompakt klassificerare.

Picovoices guide till väckningsord beskriver detektorn som det permanenta aktiveringslagret som körs före den större röstpipeline:n.

Även en liten modell använder schemalagd processortid och minnesbandbredd. På en sparsamt utrustad hemserver kan den kontinuerliga belastningen ta de korta prestandatoppar som VAD, Whisper eller text-till-tal behöver.

Väckningsord och taligenkänning kan duplicera ljudförbehandlingen

Detektorn och talmodellen kan var och en sampla om ljudet, normalisera amplituden, beräkna spektrogram eller konvertera kanaler separat. Separata containrar kan göra denna duplicering svår att upptäcka.

En praktisk Whisper-pipeline visade att ljudförbehandlingssteg ackumulerar fördröjning när de kedjas utan en gemensam strömningsdesign.

Pipelinen blir långsammare även när varje komponent presterar bra i separata tester. Genom att återanvända en avkodad ljudström och en enda stödd samplingsfrekvens försvinner konverteringar som inte tillför något igenkänningsvärde.

Mät funktionsutvinning och omsampling separat från modellinferensen, så att detektorn inte får skulden för arbete som utförs av en ljudadapter.

Förinspelade buffertar kan fördröja överlämningen efter detektering

Ett röstsystem sparar vanligtvis ljud från tiden precis före väckningsordet, så att början av kommandot inte går förlorad. Efter detekteringen måste denna buffert spelas upp igen eller kopieras till igenkännarens ström.

Rhasspy-användare beskriver fördröjning från uppspelningsbufferten mellan utlösardetekteringen och den punkt där ASR börjar ta emot kommandot.

En för stor förinspelad del, en blockerande kopiering eller en fullständig tömning av bufferten kan få igenkännaren att verka långsam, trots att den första inferensen startar sent.

Tidsstämpla utlösaren, den första ASR-rutan, beslutet om talets slut och den första transkriptionen. Det största mellanrummet visar om fördröjningen uppstår före eller under igenkänningen.

-15% OFF
Single board computer zimaboard2

Delade processorkärnor och ljudköer skapar konkurrens

Detektering av väckningsord, VAD, ekokancellering, transkribering och text-till-tal kan alla köras på samma processor. Ett steg kan fördröja ett annat genom trådschemaläggning eller en full ljudkö.

En lokal röstassistentinstallation rapporterar att den totala röstfördröjningen beror på hela pipelinen, inte bara på språk- eller talmodellen.

ZimaSpaces förklaring av dold serveröverbelastning gäller även här: låg genomsnittlig processorbelastning kan dölja en överbelastad kärna eller en serialiserad ljudtråd.

Det är inte alltid nödvändigt att binda varje komponent till separata kärnor, men ködjup, processoranvändning per tråd och bearbetningstid per ljudruta bör ligga under det faktiska intervallet mellan realtidsrutorna.

Falska utlösningar kan starta kostsamt arbete upprepade gånger

En falsk träff på väckningsordet kan starta VAD, läsa in eller väcka talmodellen, spela upp buffrat ljud och vänta på ett kommando som aldrig kommer.

En artikel om arkitektur för väckningsord förklarar behovet av att balansera falska positiva mot missade utlösningar och detekteringsfördröjning.

Frekventa nästan-träffar kan hålla talpipelinen varm eller upptagen, så att det riktiga kommandot hamnar bakom övergivna sessioner.

Logga utlösarens konfidens, utlösningsfrekvens, sessionslängd och om användbart tal följde. Att höja tröskeln hjälper bara om det inte leder till oacceptabelt många falska negativa.

Benchmarka detektorn och överlämningen som separata fördröjningssteg

Jämför tryck-för-att-tala, aktiverat väckningsord, aktiverat väckningsord med stoppad ASR och aktiverat väckningsord under normal bakgrundsbelastning. Använd samma mikrofon, kommando och talmodell.

En teknisk översikt beskriver system för väckningsord som kaskadkopplade strömningssystem där stegen har separata beräknings- och fördröjningsbudgetar.

Registrera fördröjning för ljudrutor, detektortid, väntetid i kö, uppspelning av buffert, väckning av modellen, ASR-förfyllning och avkodning. Optimera sedan det steg som förändras när väckningsordet aktiveras.

Den praktiska lösningen kan vara en mindre detektor, gemensam ljudförbehandling, kortare förinspelning, begränsade köer, dedikerade trådar eller att hålla talmodellen varm. Det är onödigt att byta talmodell när fördröjningen uppstår innan den får ljud.

Teknik- och AI-hubb

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.