Czy lokalny asystent głosowy może działać w wielu pomieszczeniach za pomocą jednego serwera wnioskowania?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Tak. Wiele pomieszczeń może współdzielić jeden lokalny serwer wnioskowania głosowego. Każde pomieszczenie potrzebuje satelity z mikrofonem i głośnikiem, natomiast cięższe zadania rozpoznawania mowy, rozumowania za pomocą modelu językowego i syntezy mowy mogą działać centralnie na serwerze domowym. System najlepiej skaluje się, gdy wykrywanie słowa wybudzającego lub aktywności głosowej odbywa się blisko mikrofonu, dzięki czemu bezczynne pomieszczenia nie przesyłają stale dźwięku do serwera.

Głównym ograniczeniem nie jest liczba pomieszczeń. Jest nim liczba osób mówiących jednocześnie oraz ilość mocy obliczeniowej wymaganej przez każdy etap potoku. Sześć w większości bezczynnych satelitów może być łatwiejsze w obsłudze niż dwa pomieszczenia generujące nakładające się zadania Whisper, LLM i TTS.

Jak wygląda architektura lokalnego głosu w wielu pomieszczeniach?

Satelita w kuchni ----Satelita w sypialni -----Satelita w biurze -------> Lokalny serwer głosowy
Satelita w salonie --/      |
                              +-- STT
                              +-- intencja / LLM
                              +-- TTS
                              +-- Home Assistant / narzędzia

Zadanie satelity może pozostać lekkie: przechwytywać dźwięk, wykrywać słowo wybudzające lub mowę, oznaczać żądanie tożsamością pomieszczenia, odtwarzać zwrócony dźwięk i opcjonalnie obsługiwać lokalne elementy sterowania wyciszeniem.

Obecna integracja Wyoming w Home Assistant jest dobrym przykładem takiego rozdzielenia. Może łączyć Assist z lokalnymi systemami rozpoznawania mowy, syntezy mowy i wykrywania słów wybudzających, takimi jak Whisper, Piper, Speech-to-Phrase i openWakeWord.

Dlaczego lokalne wykrywanie słowa wybudzającego tak bardzo pomaga

Jeśli każdy satelita przesyła dźwięk do serwera przez całą dobę, ruch sieciowy jest zwykle nadal możliwy do opanowania w przewodowej lub stabilnej sieci LAN Wi-Fi, ale centralny komputer musi stale analizować wiele strumieni audio. Tworzy to również większą powierzchnię naruszenia prywatności, ponieważ dźwięk tła z każdego pomieszczenia dociera do centralnej usługi.

Lepszy projekt wygląda tak:

Satelita pomieszczenia
  |
  +-- lokalne słowo wybudzające / VAD
  |
  +-- dopiero po wyzwoleniu
          |
          v
      wypowiedź w strumieniu
          |
          v
   centralne wnioskowanie

Dokumentacja satelitów głosowych Home Assistant opisuje tryby ciągłego przesyłania strumieniowego, przesyłania strumieniowego po wykryciu mowy oraz lokalnego wykrywania słowa wybudzającego. Zwraca też uwagę, że niewielki sprzęt satelitarny może lokalnie obsługiwać wykrywanie słowa wybudzającego i oczyszczanie dźwięku, dzięki czemu można używać wielu satelitów bez nakładania takiego samego obciążenia na centralny serwer.

Jeden serwer nie oznacza jednej współdzielonej rozmowy

To najważniejsza reguła na poziomie aplikacji. Proces wnioskowania może być współdzielony, ale każde pomieszczenie lub użytkownik potrzebuje własnego stanu sesji.

Współdzielone centralnie Osobno dla każdego pomieszczenia / sesji
Wagi modelu Whisper Bufor audio
Wagi modelu LLM Historia rozmowy
Model głosu Piper Tożsamość pomieszczenia
Złącza narzędzi Kontekst użytkownika / uprawnień
GPU lub NPU Miejsce docelowe odpowiedzi

Bez tego rozdzielenia kolejne polecenie, takie jak „wyłącz to”, mogłoby przypadkowo odziedziczyć kontekst z innego pomieszczenia. Serwer powinien dołączać identyfikator sesji do każdej wypowiedzi i przekazywać go przez STT, rozpoznawanie intencji, wykonywanie narzędzi oraz odtwarzanie TTS.

Kontekst pomieszczenia może usprawnić krótkie polecenia

System obsługujący wiele pomieszczeń ma informacje, których nie ma pojedynczy inteligentny głośnik: wie, gdzie znajduje się mikrofon.

Zamiast zmuszać użytkownika do mówienia za każdym razem „wyłącz światła w salonie”, satelita może dostarczyć identyfikator obszaru:

wypowiedziane: "wyłącz światła"
pomieszczenie:   "kuchnia"

rozwiązana akcja:
Home Assistant -> światła w kuchni -> wyłącz

Jest to szczególnie przydatne w deterministycznym sterowaniu domem, gdzie krótkie polecenia nie powinny wymagać kosztownego modelu LLM ogólnego przeznaczenia. Analiza ZimaSpace rozwoju lokalnego przetwarzania w Home Assistant wyjaśnia, dlaczego ukierunkowane lokalne potoki mogą współistnieć z większymi modelami przy bardziej otwartych żądaniach.

Co stanie się pierwszym wąskim gardłem?

Głos to potok przetwarzania, więc najwolniejszy wymagany etap określa odczuwalne opóźnienie.

Etap Typowe obciążenie zasobów Ryzyko obsługi wielu pomieszczeń
Słowo wybudzające / VAD Mały procesor CPU w satelicie Niskie przy rozproszeniu
Rozpoznawanie mowy CPU/GPU, przepustowość pamięci Wysokie podczas nakładającej się mowy
Intencja / LLM GPU/CPU + pamięć podręczna KV Wysokie w przypadku otwartych żądań
Wykonywanie narzędzi Opóźnienie sieci / usługi Zależy od celu
Synteza mowy CPU/GPU Umiarkowane
Odtwarzanie dźwięku LAN Zwykle niskie

W zastosowaniach domowych jednoczesne mówienie często zdarza się rzadko. Dzięki temu serwer może kolejkować krótkie serie zamiast zapewniać moc obliczeniową wystarczającą do ciągłej jednoczesnej rozmowy ze wszystkich pomieszczeń.

Czy STT, LLM i TTS mogą współdzielić jedną kartę GPU?

Mogą, ale znaczenie mają pamięć i harmonogramowanie. Jednoczesne załadowanie kilku modeli może zużyć więcej pamięci VRAM, niż wymaga tego dowolny pojedynczy etap. Mały serwer może korzystać z różnych urządzeń lub trybów wykonywania:

  • STT na CPU lub iGPU;
  • LLM na GPU;
  • TTS na CPU;
  • lub szeregować krótkie zadania STT/LLM/TTS na jednym akceleratorze.

Drugi projekt pozwala zaoszczędzić na sprzęcie, ale może zwiększyć opóźnienia, gdy dwa pomieszczenia mówią jednocześnie. Mierz czas do pierwszej transkrypcji i czas do pierwszego dźwięku, zamiast tylko surowej liczby tokenów na sekundę.

Zapobiegaj wyzwalaniu mikrofonu w jednym pomieszczeniu przez głośnik w innym

Obsługa głosowa w wielu pomieszczeniach wiąże się z problemem akustycznym: własny TTS asystenta może zostać usłyszany przez innego satelitę i zinterpretowany jako nowe żądanie.

Użyj:

  • lokalne słowa wybudzające zamiast otwartej transkrypcji wszystkich dźwięków;
  • eliminacja echa i redukcja szumów;
  • stan odtwarzania, aby satelita mógł w razie potrzeby wyłączyć mikrofon podczas własnej odpowiedzi;
  • głośność zależna od pomieszczenia;
  • krótkie sformułowania odpowiedzi przy rutynowym sterowaniu.

Nie rozwiązuj sprzężeń, wyciszając wszystkie mikrofony w domu za każdym razem, gdy odezwie się jeden głośnik; niepotrzebnie utrudnia to jednoczesne korzystanie z pomieszczeń.

Jak dobrać wielkość kolejki na serwerze domowym?

Zacznij od realistycznej równoczesności. Dom zamieszkany przez cztery osoby, wyposażony w osiem satelitów, rzadko może przekraczać dwa jednoczesne żądania. Skonfiguruj ograniczoną kolejkę, zamiast pozwalać, aby zadania audio gromadziły się bez limitu.

żądanie głosowe
   |
   +-- dostępny slot -> uruchom teraz
   |
   +-- krótka kolejka -> „chwileczkę” / czekaj
   |
   +-- kolejka pełna -> wyraźnie zgłoś błąd

Priorytety również mogą pomóc: deterministyczne polecenia sterowania oświetleniem nie powinny czekać za długą odpowiedzią konwersacyjną LLM. Kieruj szybkie intencje sterowania domem przez mniejszy potok, a duży model rezerwuj dla pytań, które rzeczywiście go wymagają.

Prywatność poprawia się, gdy serwer jest lokalny, ale uprawnienia nadal mają znaczenie

Centralne lokalne wnioskowanie utrzymuje dźwięk poza usługą chmurową, ale każdy satelita uzyskuje teraz dostęp do uprzywilejowanego systemu, który może sterować zamkami, oświetleniem, multimediami i alarmami oraz uzyskiwać dostęp do prywatnych danych.

Powiąż kontekst pomieszczenia i użytkownika z zasadami uprawnień. Satelita w pokoju gościnnym może sterować oświetleniem i temperaturą, ale nie powinien uzyskiwać dostępu do kalendarzy ani prywatnych plików na serwerze NAS. Pokój dziecka może mieć zupełnie inny zestaw narzędzi.

W przypadku szerszej warstwy orkiestracji przewodnik po granicy zaufania lokalnych narzędzi AI wyjaśnia, dlaczego samo rozpoznawanie głosu nie powinno nadawać uprawnień administracyjnych.

Lista kontrolna wdrożenia głosu w wielu pomieszczeniach

  • Nadaj każdemu satelicie stabilny identyfikator pomieszczenia.
  • W miarę możliwości uruchamiaj wykrywanie słowa wybudzającego lub VAD na satelicie.
  • Utrzymuj oddzielny stan rozmowy dla każdego pomieszczenia i sesji.
  • Używaj szybkiej, deterministycznej ścieżki do rutynowych poleceń sterowania domem.
  • Kolejkuj wymagające zadania STT/LLM z ograniczonym limitem równoczesności.
  • Mierz opóźnienia przy jednoczesnym korzystaniu przez wielu użytkowników.
  • Włącz redukcję echa i zapobieganie sprzężeniom zwrotnym.
  • Przydziel każdemu pomieszczeniu tylko potrzebne mu narzędzia.
  • Zachowaj lokalny mechanizm awaryjny dla podstawowych poleceń sterowania domem.

Najczęściej zadawane pytania

Czy każde pomieszczenie potrzebuje własnego komputera AI?

Nie. Satelity mogą być niedrogimi punktami końcowymi z mikrofonem i głośnikiem. Wymagające modele mogą działać jednokrotnie na centralnym serwerze.

Czy wiele pomieszczeń może jednocześnie komunikować się z serwerem?

Tak, jeśli środowisko uruchomieniowe ma wystarczającą przepustowość jednoczesną lub krótką kolejkę. Każde żądanie wymaga oddzielnego stanu sesji i dźwięku, nawet gdy wagi modelu są współdzielone.

Czy wykrywanie słowa wybudzającego powinno odbywać się centralnie?

Tak, ale lokalne wykrywanie słowa wybudzającego ogranicza ciągłe przesyłanie dźwięku, obciążenie centralnego serwera i narażenie prywatności. Zwykle jest to prostsza konstrukcja dla wielu pomieszczeń, gdy sprzęt satelitarny ją obsługuje.

Ostateczny werdykt

Jeden lokalny serwer wnioskowania może obsługiwać cały dom pełen satelitów głosowych. Zachowaj prostotę punktów końcowych, przenieś wykrywanie słowa wybudzającego bliżej pomieszczenia, scentralizuj wymagające modele i odizoluj każdą sesję. Dobieraj wydajność pod kątem jednoczesnych wypowiedzi, a nie liczby głośników, i kieruj rutynowe polecenia przez szybką lokalną ścieżkę, aby długa rozmowa z LLM-em w jednym pomieszczeniu nie spowalniała odczuwalnie reszty domu.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

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.