Форум сайта python.su
import os import json import pyaudio import yaml import subprocess from vosk import Model, KaldiRecognizer def load_commands(): with open(os.path.join('commands', '1', 'command.yaml'), 'r') as file: commands = yaml.safe_load(file) return commands def recognize_speech(): model = Model("model_small") recognizer = KaldiRecognizer(model, 16000) p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000) stream.start_stream() while True: print("Ожидание команды:") data = stream.read(4000) if len(data) == 0: break if recognizer.AcceptWaveform(data): result = json.loads(recognizer.Result()) if "джарвис" in result['text'].lower(): print("Джарвис активирован, слушаю...") while True: data = stream.read(4000) if recognizer.AcceptWaveform(data): command_result = json.loads(recognizer.Result()) command_text = command_result.get('text') if command_text: print(f"Команда: {command_text}") # Здесь вы можете добавить свою логику для обработки команд if "отмена" in command_text.lower(): print("Команда отмены.") break elif not process_command(command_text): # Если команда не распознана print("Команда не распознана, начинаю слушать снова...") break def process_command(command): commands = load_commands() for cmd in commands['list']: if command in cmd['voice']['phrases']: # Здесь вы можете добавить свою логику для обработки команд print(f"Выполняется команда: {cmd['command']['exe_path']}") subprocess.run([cmd['command']['exe_path']] + cmd['command']['exe_args']) return True # Если команда не распознана, верните False return False if __name__ == "__main__": while True: command = recognize_speech() if command: print(f"Распознанная команда: {command}") if cancel_command(command): print("Команда отмены.") break # Здесь вы можете добавить свою логику для обработки команд
Офлайн
def load_commands(): with open(os.path.join('commands', '1', 'command.yaml'), 'r') as file: commands = yaml.safe_load(file) print("1commands") print("2commands") return commands
Офлайн