Fix storing of response - now deque both
This commit is contained in:
parent
b30ca3cc14
commit
a6053b3be6
|
|
@ -383,8 +383,8 @@ def get_voice_status():
|
||||||
# 2. Вызываем метод у экземпляра voice_inst, а не у модуля
|
# 2. Вызываем метод у экземпляра voice_inst, а не у модуля
|
||||||
return jsonify({
|
return jsonify({
|
||||||
"transcription": voice_inst.get_context_by_limit(3000, order='reversed'),
|
"transcription": voice_inst.get_context_by_limit(3000, order='reversed'),
|
||||||
"response1": voice_inst.responses["regular"],
|
"response1": list(voice_inst.responses["regular"]),
|
||||||
"response2": voice_inst.responses["commands"][:VOICE_COMMANDS_RESPONSE_TO_STORE],
|
"response2": list(voice_inst.responses["commands"]),
|
||||||
"is_running": voice_inst.is_running,
|
"is_running": voice_inst.is_running,
|
||||||
"obsidian_settings_fetched": obsidian_settings_fetched
|
"obsidian_settings_fetched": obsidian_settings_fetched
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import time
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional
|
||||||
from llm_client import get_llm
|
from llm_client import get_llm
|
||||||
from langchain_core.messages import SystemMessage, HumanMessage
|
from langchain_core.messages import SystemMessage, HumanMessage
|
||||||
import os
|
import uuid
|
||||||
|
|
||||||
DEFAULT_SUMMARIZATION_LLM_NAME = "gemini-2.0-flash-lite" # "mistral-small-latest" # "mistral-small-latest" #"gemini-2.0-flash-r"
|
DEFAULT_SUMMARIZATION_LLM_NAME = "gemini-2.0-flash-lite" # "mistral-small-latest" # "mistral-small-latest" #"gemini-2.0-flash-r"
|
||||||
DEFAULT_VOICE_LLM_NAME = "gemini-2.0-flash-lite" # "gemini-3.0-flash-openrouter"
|
DEFAULT_VOICE_LLM_NAME = "gemini-2.0-flash-lite" # "gemini-3.0-flash-openrouter"
|
||||||
|
|
@ -385,7 +385,13 @@ class TitleGenerator:
|
||||||
response = self.voice_llm.invoke(llm_messages)
|
response = self.voice_llm.invoke(llm_messages)
|
||||||
|
|
||||||
import app.api as api
|
import app.api as api
|
||||||
api.voice_inst.responses["regular"] = response # Записываем в Response 1
|
new_entry = {
|
||||||
|
"id": str(uuid.uuid4()),
|
||||||
|
"content": response
|
||||||
|
}
|
||||||
|
# Используем appendleft для автоматического управления размером deque
|
||||||
|
api.voice_inst.responses["regular"].appendleft(new_entry)
|
||||||
|
|
||||||
print(f"✅🎤 Регулярный анализ голосового ввода завершен.")
|
print(f"✅🎤 Регулярный анализ голосового ввода завершен.")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"❌🎤 Ошибка регулярного анализа: {e}")
|
print(f"❌🎤 Ошибка регулярного анализа: {e}")
|
||||||
|
|
@ -401,13 +407,13 @@ class TitleGenerator:
|
||||||
response = self.voice_llm.invoke(llm_messages)
|
response = self.voice_llm.invoke(llm_messages)
|
||||||
|
|
||||||
import app.api as api
|
import app.api as api
|
||||||
# Форматируем для вкладки Response 2
|
# Форматируем как Markdown для рендеринга на фронте
|
||||||
formatted_res = f"<b>Команда:</b> {text}<br><b>Ответ:</b> {response}"
|
markdown_content = f"**Команда:** {text}\n\n**Ответ:** {response}"
|
||||||
api.voice_inst.responses["commands"].insert(0, formatted_res)
|
new_entry = {
|
||||||
|
"id": str(uuid.uuid4()),
|
||||||
# Ограничиваем историю команд, чтобы не раздувать память
|
"content": markdown_content
|
||||||
if len(api.voice_inst.responses["commands"]) > VOICE_COMMANDS_RESPONSE_TO_STORE:
|
}
|
||||||
api.voice_inst.responses["commands"].pop(0)
|
api.voice_inst.responses["commands"].appendleft(new_entry)
|
||||||
|
|
||||||
print(f"✅🎤 Голосовая команда обработана.")
|
print(f"✅🎤 Голосовая команда обработана.")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,10 @@ import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from vosk import Model, KaldiRecognizer
|
from vosk import Model, KaldiRecognizer
|
||||||
import sounddevice as sd
|
import sounddevice as sd
|
||||||
|
import uuid
|
||||||
from collections import deque
|
from collections import deque
|
||||||
|
|
||||||
VOICE_COMMANDS_RESPONSE_TO_STORE = 15
|
VOICE_COMMANDS_RESPONSE_TO_STORE = 3
|
||||||
|
|
||||||
class VoiceService:
|
class VoiceService:
|
||||||
def __init__(self, model_path, samplerate=48000):
|
def __init__(self, model_path, samplerate=48000):
|
||||||
|
|
@ -20,7 +21,10 @@ class VoiceService:
|
||||||
self.history = []
|
self.history = []
|
||||||
self.history_lock = threading.Lock()
|
self.history_lock = threading.Lock()
|
||||||
self.last_processed_timestamp = 0.0
|
self.last_processed_timestamp = 0.0
|
||||||
self.responses = {"regular": "", "commands": []}
|
self.responses = {
|
||||||
|
"regular": deque(maxlen=VOICE_COMMANDS_RESPONSE_TO_STORE),
|
||||||
|
"commands": deque(maxlen=VOICE_COMMANDS_RESPONSE_TO_STORE)
|
||||||
|
}
|
||||||
self.lock = threading.Lock()
|
self.lock = threading.Lock()
|
||||||
self._stop_event = threading.Event()
|
self._stop_event = threading.Event()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user