Пожалуйста помогите решить проблему с библиотекой Vosk
пытался сделать голосового ассистента. Для начала изучил как можно превратить текст в речь а потом начал думать как бы сделать так что бы мой голос превращался в текс нашёл библиотеку Vosk установил скачал модуль положил её в папку вместе с кодом пишу её полный путь не помогает пишу просто имя тоже не помогло прошу помогите да понимаю ошибка памоему детская но я даже не предполагаю в чём её суть. Опять же не знаю как показать поэтому напишу тут вот код.
import json, pyaudio
import vosk
from vosk import Model, KaldiRecognizer
model = vosk.Model(r'C:\Users\user\Documents\попытки сделать голосового асистента\small_model.zip')
f = KaldiRecognizer(model, 16000)
r = pyaudio.PyAudio()
c = r.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_duffer=8000)
c.start_c()
def l():
pass
input('good')
последняя функция просто для того что бы понять работает ли код. весь код я взял с ютюба вот проблема которая выскакивает:
ERROR (VoskAPI:Model():model.cc:122) Folder 'C:\Users\user\Documents\попытки сделать голосового асистента\small_model.zip' does not contain model files. Make sure you specified the model path properly in Model constructor. If you are not sure about relative path, use absolute path specification.
Traceback (most recent call last):
File "C:\Users\user\Documents\попытки сделать голосового асистента\тест.py", line 6, in <module>
model = vosk.Model(r'C:\Users\user\Documents\попытки сделать голосового асистента\small_model.zip')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\site-packages\vosk\__init__.py", line 57, in __init__
raise Exception("Failed to create a model")
Exception: Failed to create a model
Ответы (2 шт):
Попробуйте распаковать файл small_model.zip и указать путь к распакованной папке в строке:
model = vosk.Model(r'ПУТЬ_К_РАСПАКОВАННОЙ_ПАПКЕ')
Вот кусок старого кода
import vosk #сама либа
import json #анализ результатов
import queue #получение результатов
import sounddevice as sd
que=queue.Queue(1)
folder='mw/tool/ru' #относительный или абсолютный путь к либе
vosk.SetLogLevel(0)
model = vosk.Model(folder)
samplerate = int(sd.query_devices(None, 'input')['default_samplerate'])
rec = vosk.KaldiRecognizer(model, samplerate)
with sd.RawInputStream(samplerate=samplerate, blocksize = 8000, dtype='int16',
channels=1, callback=lambda *it: que.put(bytes(it[0]))):
data=[]
while True:
data = que.get()
if rec.AcceptWaveform(data):
print(rec.FinalResult())
#{ "text" : ""}
#тут вызов функции обработки полученой инфы то есть реакция ассистента на сказаную фразу
#action(rec.FinalResult()['text'])
break
else:
#это нужно только для отладки
print(rec.PartialResult())
#{ "partial" : ""}
То есть главный цикл воска должен работать постоянно, если у ассистента будет гуи то нужно будет реализовать многопоточность либо взаимодействие скриптов. Так же у воска есть проблемма- постоянный рост оперативной памяти,- перезапуск воска результата не даёт,- только перезапуск скрипта.