Fix: подавление логов VoskAPI при загрузке модели

- KALDI_VERBOSITY=0 для отключения логирования
- Перенаправление stderr во время загрузки модели
- Логи Kaldi больше не засоряют вывод

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mirivlad 2026-03-19 00:02:20 +08:00
parent 763b33026a
commit 3f5d37db38
1 changed files with 13 additions and 5 deletions

View File

@ -17,18 +17,19 @@ class SpeechRecognizer:
self.model = None self.model = None
self.recognizer = None self.recognizer = None
# Отключаем логирование VoskAPI/Kaldi
os.environ["KALDI_VERBOSITY"] = "0"
def load_model(self): def load_model(self):
if not self.enabled: if not self.enabled:
return return
# Отключаем логирование VoskAPI чтобы не засорять логи
import logging as py_logging
py_logging.getLogger("VoskAPI").setLevel(py_logging.ERROR)
try: try:
if self.model_name == "vosk": if self.model_name == "vosk":
from vosk import Model, KaldiRecognizer from vosk import Model, KaldiRecognizer
import json import json
import sys
import io
# Путь к модели в папке проекта # Путь к модели в папке проекта
model_path = "./models/vosk/vosk-model-ru-0.22" model_path = "./models/vosk/vosk-model-ru-0.22"
@ -36,8 +37,15 @@ class SpeechRecognizer:
logger.error(f"Модель Vosk не найдена по пути {model_path}") logger.error(f"Модель Vosk не найдена по пути {model_path}")
return return
# Временно отключаем stderr для подавления логов Kaldi
old_stderr = sys.stderr
sys.stderr = io.StringIO()
self.model = Model(model_path) self.model = Model(model_path)
# Восстанавливаем stderr
sys.stderr = old_stderr
elif self.model_name == "whisper": elif self.model_name == "whisper":
from faster_whisper import WhisperModel from faster_whisper import WhisperModel