Фикс произношения дат и температуры + wheather -лишние файлы

This commit is contained in:
2026-01-10 23:50:02 +03:00
parent 3818f0ad22
commit 8f44fd2460
10 changed files with 295 additions and 82 deletions

View File

@@ -23,7 +23,13 @@ import os
from collections import deque
# Для воспроизведения звуков (mp3)
from pygame import mixer
try:
from pygame import mixer
except Exception as exc:
mixer = None
_MIXER_IMPORT_ERROR = exc
else:
_MIXER_IMPORT_ERROR = None
# Импорт наших модулей
from .audio.wakeword import (
@@ -38,6 +44,7 @@ from .core.cleaner import clean_response
from .audio.tts import speak, initialize as init_tts
from .audio.sound_level import set_volume, parse_volume_text
from .features.alarm import get_alarm_clock
from .features.weather import get_weather_report
# Список стоп-слов, чтобы прервать диалог или остановить ассистента
STOP_WORDS = {
@@ -134,15 +141,25 @@ def main():
# Предварительная инициализация моделей
print("⏳ Инициализация моделей...")
# Инициализация звуковой системы для эффектов
mixer.init()
ding_sound_path = "assets/sounds/ding.wav"
# Инициализация звуковой системы для эффектов (опционально)
ding_sound = None
if os.path.exists(ding_sound_path):
ding_sound = mixer.Sound(ding_sound_path)
ding_sound.set_volume(0.3)
if mixer is None:
print(
"Warning: pygame mixer not available; sound effects disabled."
f" ({_MIXER_IMPORT_ERROR})"
)
else:
print(f"⚠️ Звук {ding_sound_path} не найден")
try:
mixer.init()
except Exception as exc:
print(f"Warning: pygame mixer init failed; sound effects disabled. ({exc})")
else:
ding_sound_path = "assets/sounds/ding.wav"
if os.path.exists(ding_sound_path):
ding_sound = mixer.Sound(ding_sound_path)
ding_sound.set_volume(0.3)
else:
print(f"⚠️ Звук {ding_sound_path} не найден")
get_recognizer().initialize() # Подключение к Deepgram
init_tts() # Загрузка нейросети для синтеза речи (Silero)
@@ -242,8 +259,10 @@ def main():
# Проверка команд будильника ("поставь будильник на 7")
alarm_response = alarm_clock.parse_command(user_text)
if alarm_response:
speak(alarm_response)
last_response = alarm_response
clean_alarm_response = clean_response(alarm_response, language="ru")
speak(clean_alarm_response)
last_response = clean_alarm_response
skip_wakeword = False
continue
# Проверка команды громкости ("громкость 5")
@@ -256,8 +275,9 @@ def main():
if level is not None:
if set_volume(level):
msg = f"Громкость установлена на {level}"
speak(msg)
last_response = msg
clean_msg = clean_response(msg, language="ru")
speak(clean_msg)
last_response = clean_msg
else:
speak("Не удалось установить громкость.")
else:
@@ -265,12 +285,36 @@ def main():
"Я не понял число громкости. Скажите число от одного до десяти."
)
skip_wakeword = True
continue
except Exception as e:
print(f"❌ Ошибка громкости: {e}")
speak("Не удалось изменить громкость.")
skip_wakeword = True
continue
# Проверка команды "Погода"
weather_triggers = [
"погода",
"погоду",
"что на улице",
"какая температура",
"сколько градусов",
"холодно ли",
"жарко ли",
"нужен ли зонт",
"брать ли зонт",
"прогноз погоды",
]
if any(trigger in user_text.lower() for trigger in weather_triggers):
weather_report = get_weather_report()
clean_report = clean_response(weather_report, language="ru")
speak(clean_report)
last_response = clean_report
skip_wakeword = True
continue
# Проверка запроса на перевод
translation_request = parse_translation_request(user_text)
if translation_request: