Форум сайта python.su
я решил сделать голосового ассистента, но столкнулся с проблемой ValueError: invalid literal for int() with base 10: ‘Ошибка’. Я почитал, и это значит что я хочу преобразовать пустую строку в число, но эта информация мне никак не помогла. Подскажите как это исправить. Вот код:
import pyttsx3 import speech_recognition as sr import webbrowser as wb import subprocess import wikipedia wikipedia.set_lang("ru") def listen_command(): r = sr.Recognizer() with sr.Microphone() as source: print("Скажите команду: ") r.pause_threshold = 0.5 r.adjust_for_ambient_noise(source) audio = r.listen(source) try: our_speech = r.recognize_google(audio, language = "ru-RU") print("Вы сказали: " + our_speech) return our_speech except sr.UnknownValueError: return("Ошибка") except sr.RequestError: return("Ошибка") def do_this_message(message): message = message.lower() if "привет" in message: say_message("Здравствуй повелитель") elif "как дела" in message: say_message("У меня все отлично") elif "пока" in message: say_message("Пока!") exit() elif "найди" in message: say_message("Уже ищу") mes = message.split("найди") mes.pop(0) mes = "".join(mes) wb.open("https://www.google.com/search?q=" + mes) elif "steam" in message: say_message("Уже запускаю") subprocess.Popen(r"C:\Program Files (x86)\Steam\steam.exe") elif "telegram" in message: say_message("Уже запускаю") subprocess.Popen(r"C:\Users\utyara3\AppData\Roaming\Telegram Desktop\Telegram.exe") elif "википедия" in message: say_message("Уже ищу") mes = message.split("википедия ") mes.pop(0) mes = "".join(mes) zagolovok = wikipedia.search(mes, results = 3) say_message("По вашему запросу я нашел такие заголовки: " + " ".join(zagolovok)) say_message("Назовите номер заголовка, который вы выбрали") result = listen_command() number = wikipedia.summary(zagolovok[int(result)-1]) else: say_message("Комманда не распознана!") def say_message(message): engine.say(message) engine.runAndWait() print(message) engine = pyttsx3.init() engine.setProperty("rate", 150) engine.setProperty("volume", 1) while True: command = listen_command() do_this_message(command)
Офлайн
В функции listen_command() у тебя возвращается строка “Ошибка”. Так эта строка попадает в int().
>>> int('Ошибка') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'Ошибка' >>>
Офлайн