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, а не у модуля
|
||||
return jsonify({
|
||||
"transcription": voice_inst.get_context_by_limit(3000, order='reversed'),
|
||||
"response1": voice_inst.responses["regular"],
|
||||
"response2": voice_inst.responses["commands"][:VOICE_COMMANDS_RESPONSE_TO_STORE],
|
||||
"response1": list(voice_inst.responses["regular"]),
|
||||
"response2": list(voice_inst.responses["commands"]),
|
||||
"is_running": voice_inst.is_running,
|
||||
"obsidian_settings_fetched": obsidian_settings_fetched
|
||||
})
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import time
|
|||
from typing import Any, Dict, Optional
|
||||
from llm_client import get_llm
|
||||
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_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)
|
||||
|
||||
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"✅🎤 Регулярный анализ голосового ввода завершен.")
|
||||
except Exception as e:
|
||||
print(f"❌🎤 Ошибка регулярного анализа: {e}")
|
||||
|
|
@ -401,13 +407,13 @@ class TitleGenerator:
|
|||
response = self.voice_llm.invoke(llm_messages)
|
||||
|
||||
import app.api as api
|
||||
# Форматируем для вкладки Response 2
|
||||
formatted_res = f"<b>Команда:</b> {text}<br><b>Ответ:</b> {response}"
|
||||
api.voice_inst.responses["commands"].insert(0, formatted_res)
|
||||
|
||||
# Ограничиваем историю команд, чтобы не раздувать память
|
||||
if len(api.voice_inst.responses["commands"]) > VOICE_COMMANDS_RESPONSE_TO_STORE:
|
||||
api.voice_inst.responses["commands"].pop(0)
|
||||
# Форматируем как Markdown для рендеринга на фронте
|
||||
markdown_content = f"**Команда:** {text}\n\n**Ответ:** {response}"
|
||||
new_entry = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"content": markdown_content
|
||||
}
|
||||
api.voice_inst.responses["commands"].appendleft(new_entry)
|
||||
|
||||
print(f"✅🎤 Голосовая команда обработана.")
|
||||
except Exception as e:
|
||||
|
|
|
|||
|
|
@ -6,9 +6,10 @@ import time
|
|||
import numpy as np
|
||||
from vosk import Model, KaldiRecognizer
|
||||
import sounddevice as sd
|
||||
import uuid
|
||||
from collections import deque
|
||||
|
||||
VOICE_COMMANDS_RESPONSE_TO_STORE = 15
|
||||
VOICE_COMMANDS_RESPONSE_TO_STORE = 3
|
||||
|
||||
class VoiceService:
|
||||
def __init__(self, model_path, samplerate=48000):
|
||||
|
|
@ -20,7 +21,10 @@ class VoiceService:
|
|||
self.history = []
|
||||
self.history_lock = threading.Lock()
|
||||
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._stop_event = threading.Event()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user