modify project structure and add download_models.py #3
+2
-2
@@ -6,8 +6,8 @@ __pycache__/
|
|||||||
*$py.class
|
*$py.class
|
||||||
|
|
||||||
# Custom
|
# Custom
|
||||||
model_small/
|
data/model_small/
|
||||||
model_large/
|
data/model_large/
|
||||||
|
|
||||||
# C extensions
|
# C extensions
|
||||||
*.so
|
*.so
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
VA_ALIAS = ('джарвис',)
|
VA_ALIAS = ('джарвис',)
|
||||||
VA_TBR = ('скажи', 'покажи', 'ответь', 'произнеси', 'расскажи', 'сколько', 'слушай')
|
VA_TBR = ('скажи', 'покажи', 'ответь', 'произнеси', 'расскажи', 'сколько', 'слушай')
|
||||||
|
MODEL_NAME = "vosk-model-small-ru-0.22" # vosk-model-ru-0.42
|
||||||
MICROPHONE_INDEX = -1
|
MICROPHONE_INDEX = -1
|
||||||
PICOVOICE_TOKEN = "4xbwaZwZmSHeTiowFl5Rgqsc8CR4FKGV8YueJUlR4Zt2e1kB64IDcA=="
|
PICOVOICE_TOKEN = "4xbwaZwZmSHeTiowFl5Rgqsc8CR4FKGV8YueJUlR4Zt2e1kB64IDcA=="
|
||||||
OPENAI_TOKEN = "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"
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
from Jarvis import Jarvis
|
from modules.Jarvis import Jarvis
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
@@ -10,21 +10,22 @@ import yaml
|
|||||||
from fuzzywuzzy import fuzz
|
from fuzzywuzzy import fuzz
|
||||||
from pvrecorder import PvRecorder
|
from pvrecorder import PvRecorder
|
||||||
|
|
||||||
import config
|
from data import config
|
||||||
from utils import execute_cmd, play
|
from utils import download_models, execute_cmd, play
|
||||||
|
|
||||||
|
|
||||||
class Jarvis:
|
class Jarvis:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
download_models.install_vosk_model()
|
||||||
self.recorder = None
|
self.recorder = None
|
||||||
self.CDIR = os.getcwd()
|
self.CDIR = os.getcwd()
|
||||||
self.VA_CMD_LIST = yaml.safe_load(open('commands.yaml', encoding='utf8'))
|
self.VA_CMD_LIST = yaml.safe_load(open('data/commands.yaml', encoding='utf8'))
|
||||||
self.porcupine = pvporcupine.create(
|
self.porcupine = pvporcupine.create(
|
||||||
access_key=config.PICOVOICE_TOKEN,
|
access_key=config.PICOVOICE_TOKEN,
|
||||||
keywords=['jarvis'],
|
keywords=['jarvis'],
|
||||||
sensitivities=[1]
|
sensitivities=[1]
|
||||||
)
|
)
|
||||||
self.kaldi_rec = vosk.KaldiRecognizer(vosk.Model("model_large"), 16000)
|
self.kaldi_rec = vosk.KaldiRecognizer(vosk.Model("data/model_small"), 16000)
|
||||||
|
|
||||||
def main(self):
|
def main(self):
|
||||||
self.recorder = PvRecorder(
|
self.recorder = PvRecorder(
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from data import config
|
||||||
|
|
||||||
|
|
||||||
|
def install_vosk_model():
|
||||||
|
try:
|
||||||
|
open('data/model_small/README')
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
if sys.platform == "linux" or sys.platform == "linux2":
|
||||||
|
os.system(f"wget https://alphacephei.com/vosk/models/{config.MODEL_NAME}.zip")
|
||||||
|
os.system(f"unzip {config.MODEL_NAME}.zip")
|
||||||
|
os.system(f"mv {config.MODEL_NAME} data/model_small")
|
||||||
|
os.system(f"rm -rf {config.MODEL_NAME}.zip")
|
||||||
|
elif sys.platform == "darwin":
|
||||||
|
os.system(f"curl https://alphacephei.com/vosk/models/{config.MODEL_NAME}.zip")
|
||||||
|
os.system(f"unzip {config.MODEL_NAME}.zip")
|
||||||
|
os.system(f"mv {config.MODEL_NAME} data/model_small")
|
||||||
|
os.system(f"rm -rf {config.MODEL_NAME}.zip")
|
||||||
|
elif sys.platform == "win32":
|
||||||
|
os.system(f"curl https://alphacephei.com/vosk/models/{config.MODEL_NAME}.zip --output 1.zip")
|
||||||
|
os.system('powershell -command "Expand-Archive 1.zip ./"')
|
||||||
|
os.system(f"rename {config.MODEL_NAME} data/model_small")
|
||||||
|
os.system("del /s /q 1.zip")
|
||||||
+1
-1
@@ -15,7 +15,7 @@ def play(self, phrase, wait_done=True):
|
|||||||
if wait_done:
|
if wait_done:
|
||||||
self.recorder.stop()
|
self.recorder.stop()
|
||||||
if filename:
|
if filename:
|
||||||
wave_obj = sa.WaveObject.from_wave_file(f"{self.CDIR}/sound/{filename}")
|
wave_obj = sa.WaveObject.from_wave_file(f"{self.CDIR}/data/sound/{filename}")
|
||||||
play_obj = wave_obj.play()
|
play_obj = wave_obj.play()
|
||||||
if wait_done:
|
if wait_done:
|
||||||
play_obj.wait_done()
|
play_obj.wait_done()
|
||||||
|
|||||||
Reference in New Issue
Block a user