Sleep after 4s of follow-up silence

This commit is contained in:
2026-02-16 19:12:58 +03:00
parent 182361c547
commit 0d61b92760
2 changed files with 17 additions and 14 deletions

View File

@@ -272,8 +272,9 @@ def main():
# (True = режим диалога, слушаем сразу. False = ждем "Alexandr")
skip_wakeword = False
# После первой активации по wake word остаемся в диалоге до явной стоп-команды.
continuous_followup_mode = True
# После ответа ассистент ждет продолжение фразы 4 секунды.
# Если речи нет, выходим из диалога и снова ждем wake word.
followup_idle_timeout_seconds = 4.0
# Контекст уточнения "на какое время поставить ...".
# Может быть: "timer", "alarm".
@@ -338,14 +339,16 @@ def main():
continue # Продолжаем цикл
else:
# Режим диалога (Follow-up): ждем продолжения речи без "Alexandr"
if continuous_followup_mode:
print("👂 Непрерывный диалог: слушаю следующий вопрос...")
else:
print("👂 Слушаю продолжение диалога (5 сек)...")
# Ждем начала речи 5 сек. Если начали говорить, слушаем до 7 сек.
print(
"👂 Слушаю продолжение диалога "
f"({followup_idle_timeout_seconds:.0f} сек)..."
)
# Ждем начала речи 4 сек. Если начали говорить, слушаем до 7 сек.
try:
user_text = listen(
timeout_seconds=7.0, detection_timeout=5.0, fast_stop=True
timeout_seconds=7.0,
detection_timeout=followup_idle_timeout_seconds,
fast_stop=True,
)
except Exception as e:
print(f"Ошибка при прослушивании: {e}")
@@ -358,15 +361,15 @@ def main():
skip_wakeword = False
continue
if not user_text and not continuous_followup_mode:
if not user_text:
# Пользователь промолчал — выходим из режима диалога, засыпаем.
skip_wakeword = False
continue
# --- Шаг 2: Анализ распознанного текста ---
if not user_text:
# В непрерывном режиме не требуем повторный wake word после тишины.
skip_wakeword = continuous_followup_mode
# Пустой ввод: без лишних ответов возвращаемся к ожиданию wake word.
skip_wakeword = False
continue
# Проверка на команду "Стоп"
@@ -558,12 +561,12 @@ def main():
except Exception as init_error:
print(f"Ошибка переинициализации STT: {init_error}")
speak("Произошла ошибка при распознавании речи.")
skip_wakeword = continuous_followup_mode
skip_wakeword = False
continue
if not text_to_translate:
speak("Я не расслышал текст для перевода.")
skip_wakeword = continuous_followup_mode
skip_wakeword = False
continue
# Выполняем перевод через AI