feat: switch wake word to waltron
This commit is contained in:
@@ -13,7 +13,7 @@ import time
|
||||
import pyaudio
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
from ..core.config import DEEPGRAM_API_KEY, SAMPLE_RATE
|
||||
from ..core.config import DEEPGRAM_API_KEY, SAMPLE_RATE, WAKE_WORD_ALIASES
|
||||
from deepgram import (
|
||||
DeepgramClient,
|
||||
DeepgramClientOptions,
|
||||
@@ -50,13 +50,13 @@ logging.getLogger("deepgram").setLevel(logging.WARNING)
|
||||
|
||||
# Базовые пороги для остановки STT
|
||||
INITIAL_SILENCE_TIMEOUT_SECONDS = 5.0
|
||||
POST_SPEECH_SILENCE_TIMEOUT_SECONDS = 3.5
|
||||
POST_SPEECH_SILENCE_TIMEOUT_SECONDS = 2.0
|
||||
# Длинный защитный предел, чтобы не обрывать обычную длинную фразу.
|
||||
# Фактическое завершение происходит примерно после 3.5 сек тишины после речи.
|
||||
# Фактическое завершение происходит примерно после 2.0 сек тишины после речи.
|
||||
MAX_ACTIVE_SPEECH_SECONDS = 300.0
|
||||
|
||||
_FAST_STOP_UTTERANCE_RE = re.compile(
|
||||
r"^(?:(?:александр|алесандр|alexander|alexandr)\s+)?"
|
||||
r"^(?:(?:" + "|".join(re.escape(alias) for alias in WAKE_WORD_ALIASES) + r")\s+)?"
|
||||
r"(?:стоп|хватит|перестань|прекрати|замолчи|тихо|пауза)"
|
||||
r"(?:\s+(?:пожалуйста|please))?$",
|
||||
flags=re.IGNORECASE,
|
||||
|
||||
@@ -6,7 +6,7 @@ Supports interruption via wake word detection using threading.
|
||||
|
||||
# Модуль синтеза речи (TTS - Text-to-Speech).
|
||||
# Использует нейросеть Silero TTS для качественной русской речи.
|
||||
# Также поддерживает прерывание речи, если пользователь скажет "Alexandr".
|
||||
# Также поддерживает прерывание речи по wake word.
|
||||
|
||||
import re
|
||||
import threading
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"""
|
||||
Wake word detection module using Porcupine.
|
||||
Listens for the "Alexandr" wake word.
|
||||
Listens for the configured wake word.
|
||||
"""
|
||||
|
||||
# Этот модуль отвечает за "уши" ассистента в режиме ожидания.
|
||||
# Он использует библиотеку Porcupine для эффективного (мало CPU) обнаружения ключевой фразы "Alexandr".
|
||||
# Он использует библиотеку Porcupine для эффективного (мало CPU) обнаружения ключевой фразы.
|
||||
|
||||
import pvporcupine
|
||||
import pyaudio
|
||||
@@ -14,6 +14,7 @@ from ..core.config import (
|
||||
PORCUPINE_ACCESS_KEY,
|
||||
PORCUPINE_KEYWORD_PATH,
|
||||
PORCUPINE_SENSITIVITY,
|
||||
WAKE_WORD,
|
||||
)
|
||||
from ..core.audio_manager import get_audio_manager
|
||||
|
||||
@@ -47,7 +48,7 @@ class WakeWordDetector:
|
||||
self.pa = self._audio_manager.get_pyaudio()
|
||||
self._open_stream()
|
||||
print(
|
||||
"🎤 Ожидание wake word 'Alexandr' "
|
||||
f"🎤 Ожидание wake word '{WAKE_WORD}' "
|
||||
f"(sens={PORCUPINE_SENSITIVITY:.2f}, mic_rate={self._capture_sample_rate})..."
|
||||
)
|
||||
|
||||
@@ -133,7 +134,7 @@ class WakeWordDetector:
|
||||
|
||||
def wait_for_wakeword(self, timeout: float = None) -> bool:
|
||||
"""
|
||||
Блокирующая функция: ждет, пока не будет услышана фраза "Alexandr"
|
||||
Блокирующая функция: ждет, пока не будет услышана wake word
|
||||
или пока не истечет timeout.
|
||||
|
||||
Args:
|
||||
|
||||
Reference in New Issue
Block a user