Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2022 11:29:19

utyara3
Зарегистрирован: 2021-07-12
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Голосовой ассистент, ValueError: invalid literal for int() with base 10: 'Ошибка'

я решил сделать голосового ассистента, но столкнулся с проблемой 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)

ошибка в строке number = wikipedia.summary(zagolovok) (функция do_this message)
я говорю: найди в википедии и дальше то что хочу найти, например пушкин. он мне говорит, по вашему запросу я нашел такие заголовки …… я выбираю номер заголовка допустим 1, для меня это заголовок номер 1, а для программы индекс 0, поэтому я вычитаю 1, но выдает ошибку.
Traceback (most recent call last):
File “C:\Users\utyara3\Desktop\slave.py”, line 80, in <module>
do_this_message(command)
File “C:\Users\utyara3\Desktop\slave.py”, line 59, in do_this_message
number = wikipedia.summary(zagolovok)
ValueError: invalid literal for int() with base 10: ‘Ошибка’
заранее спасибо

Офлайн

#2 Ноя. 27, 2022 13:11:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

Голосовой ассистент, ValueError: invalid literal for int() with base 10: 'Ошибка'

В функции listen_command() у тебя возвращается строка “Ошибка”. Так эта строка попадает в int().

  
>>> int('Ошибка')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Ошибка'
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version