From 0f4ae3a80cf4556849aab075b5359d0e5fe7413a Mon Sep 17 00:00:00 2001 From: Daniil Klimov Date: Tue, 14 Apr 2026 18:22:01 +0300 Subject: [PATCH] Edit new session --- satellite/modes.py | 39 ++++++++++++++++++++++++++++++--------- satellite/tts.py | 6 +++--- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/satellite/modes.py b/satellite/modes.py index e901a57..f3da859 100644 --- a/satellite/modes.py +++ b/satellite/modes.py @@ -1,22 +1,42 @@ import os import sys -from .config import GATEWAY_URL, AGENT, log +from .config import GATEWAY_URL, AGENT, AGENTS, log from .audio import record from .tts import speak, stop_speaking -from .llm import ask_agent_stream, is_reset_command +from .llm import ask_agent_stream, is_reset_command, VOICE_SESSION_KEY WAKE_THRESHOLD = float(os.getenv("WAKE_THRESHOLD", "0.5")) def _handle_reset(text: str, agent_id: str) -> bool: - """Команда сброса — на сервере OpenClaw сессия рулится session_key, клиент только сообщает.""" - if is_reset_command(text): - msg = "Начинаю новую сессию." - print(f"🔄 {msg}") - speak(msg, agent_id) - return True - return False + """Команда сброса — отправляет slash-команду /new в OpenClaw (без озвучки ответа).""" + if not is_reset_command(text): + return False + + cfg = AGENTS.get(agent_id, AGENTS["cosmo"]) + print("🔄 Отправляю /new в OpenClaw") + try: + cfg["session"].post( + f"{cfg['gateway_url']}/v1/chat/completions", + headers={ + "x-ocplatform-model": cfg["voice_model"], + "x-openclaw-session-key": cfg.get("session_key", VOICE_SESSION_KEY), + }, + json={ + "model": cfg["agent"], + "stream": False, + "messages": [{"role": "user", "content": "/new"}], + }, + timeout=30, + ) + except Exception: + log.exception("Не удалось отправить /new") + + msg = "Начинаю новую сессию." + print(f"🔄 {msg}") + speak(msg, agent_id) + return True def _conversation_loop(agent_id: str, agent_name: str = "Cosmo"): @@ -76,6 +96,7 @@ def run_with_porcupine(): stream = audio.open(rate=16000, channels=1, format=pyaudio.paInt16, input=True, frames_per_buffer=1280) + print("✅ Слушаю через OpenWakeWord...") # print("\nСкажи 'Космо' или 'Люся'...\n") # TODO: после подключения Люси try: diff --git a/satellite/tts.py b/satellite/tts.py index de0c398..d7d9bbf 100644 --- a/satellite/tts.py +++ b/satellite/tts.py @@ -70,11 +70,11 @@ def _speak_elevenlabs(text: str, agent_id: str): return voice_settings = VoiceSettings( - stability=0.5, # ниже = живее интонация (для multilingual_v2) + stability=0.4, # ниже = живее интонация (для multilingual_v2) similarity_boost=0.8, - style=0.0, # выше = эмоциональнее + style=0.1, # выше = эмоциональнее use_speaker_boost=True, - speed=1.0 + speed=1.1 ) audio_stream = client.text_to_speech.convert(