Jak poprawić wydajność
Wtyczka wykorzystuje różne metody akceleracji GPU w zależności od platformy: Vulkan na Windows oraz Metal na platformach Mac i iOS, co znacząco przyspiesza proces rozpoznawania. Na innych platformach wtyczka wykorzystuje CPU + instrukcje wewnętrzne (intrinsics) do przyspieszenia. Możesz jednak dodatkowo poprawić wydajność wtyczki, stosując się do poniższych zaleceń:
-
Używaj wykrywania aktywności głosowej (Voice Activity Detection - VAD)
Zdecydowanie zaleca się używanie wykrywania aktywności głosowej, aby poprawi ć responsywność rozpoznawania poprzez wysyłanie mowy do rozpoznania zaraz po tym, jak użytkownik przestanie mówić, zamiast czekać na ustalone przedziały czasowe. Szczególnie zalecane jest użycie Silero VAD w tym celu. Szczegółowe instrukcje implementacji znajdują się w dokumentacji wykrywania aktywności głosowej.
-
Zmniejsz rozmiar kroku (Step Size)
Domyślnie rozmiar kroku wynosi 5000 ms (5 sekund), co oznacza, że dane audio są rozpoznawane co 5 sekund podczas przechwytywania. Jeśli chcesz rozpoznawać dane audio częściej, możesz zmniejszyć rozmiar kroku, na przykład do 500 ms (0,5 sekundy). Jednakże, jeśli VAD jest aktywny (co jest zazwyczaj zalecane, chyba że masz specyficzne wymagania dotyczące stałych interwałów), zaleca się nie polegać na zmniejszaniu rozmiaru kroku. Przy użyciu VAD w typowych konfiguracjach, takich jak Rozpoznawanie komend aktywowanych głosem lub Automatyczna inicjalizacja rozpoznawania głosu z przetwarzaniem końcowego bufora, mowa i tak zostanie rozpoznana zaraz po tym, jak użytkownik przestanie mówić.
-
Użyj mniejszego modelu językowego
Możesz rozważyć użycie mniejszego modelu językowego, takiego jak
Tiny Quantized (Q5_1)
, aby zmniejszyć rozmiar modelu i poprawić wydajność. Instrukcje, jak wybrać model językowy, znajdują się tutaj. -
Optymalizuj zarządzanie stanem rozpoznawania
Podczas pracy z wejściem mikrofonowym unikaj niepotrzebnych zatrzymań i uruchomień rozpoznawania mowy. Zamiast często wywoływać
StopSpeechRecognition
iStartSpeechRecognition
, co wymaga ponownej alokacji zasobów, rozważ bezpośrednie sterowanie wejściem audio. Na przykład, w przypadku przechwytywalnej fali dźwiękowej (capturable sound wave), używajStopCapture
iStartCapture
do zarządzania przepływem audio, utrzymując jednocześnie aktywny wątek rozpoznawania.