@Lazarusnode13
Хобби:Программирование, Електроника, Музыка

Здравствуйте, как написать функцию который берет ответы из JSON и передает в python?

Помогите написать функцию или приведите краткий пример
ОП: ubuntu 20.04
===================================================
мне нужно написать голосового помощника, который берет ответы из JSON( конечно в соответствие с вопросом ), (я уже написал распознавание речи и вывод речи на экран, да еще в слух может читать через терминал с помощью RHVoice).
Помогите!. Это хобби, в дальнейшем планирую на программиста поступать, по этому и развиваюсь заранее
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
import json
import random

# json - так json
ANSWERS = json.loads('{"привет": ["Привет", "Хай", "Здоровеньки булы"], "как дела": ["Норм", "А у тебя?"]}')

answer = lambda x:random.choice(ANSWERS.get(x.lower(), ['Не понял вопроса']))


answer('Привет')
# Привет
answer('Как дела')
# А у тебя?
answer('ваыва')
# Не понял вопроса
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Lazarusnode13 Автор вопроса
Хобби:Программирование, Електроника, Музыка
import time
import datetime
from vosk import Model, KaldiRecognizer  # оффлайн-распознавание от Vosk
import speech_recognition  # распознавание пользовательской речи (Speech-To-Text)
import wave  # создание и чтение аудиофайлов формата wav
import json  # работа с json-файлами и json-строками
import os  # работа с файлами
import subprocess
import requests

def assistent(*args: tuple):
    with microphone:
        value = ""
        one = 'echo Алиса слушает | RHVoice-test -p anna'
        subprocess.call(one, shell=True)
        recognizer.adjust_for_ambient_noise(microphone, duration=2)
        try:
            audio = recognizer.listen(microphone, 6, 5)

            with open("voices-my.wav", "wb") as file:
                file.write(audio.get_wav_data())

        except speech_recognition.WaitTimeoutError:
            print("Повтори пожалуйста:\n")
            one = 'echo Повтори пожалуйста | RHVoice-test -p anna'
            subprocess.call(one, shell=True)
            return

        try:
            if not os.path.exists("images/vosk-model-small-ru-0.15"):
                print("Нет пакета Vosk")
                exit(1)

            audio_file = wave.open("voices-my.wav", "rb")
            model = Model("images/vosk-model-small-ru-0.15")
            offline = KaldiRecognizer(model, audio_file.getframerate())

            data = audio_file.readframes(audio_file.getnframes())
            if len(data) > 0:
                if offline.AcceptWaveform(data):
                    value = offline.Result()

                    value = json.loads(value)
                    value = value["text"]
        except:
            error = 'echo не могу распознать речь| RHVoice-test -p anna'
            subprocess.call(error, shell=True)

    return value

if __name__ == "__main__":

    recognizer = speech_recognition.Recognizer()
    microphone = speech_recognition.Microphone()

    while True:

        voice_input = assistent()
        os.remove("voices-my.wav")
        print(voice_input)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы