Почему при запуске голосового ассистента он завершает свою работу?

Ссылка скопирована
1 ответ

Вот мой код:

import speech_recognition as sr import webbrowser import os  name = open("name.txt", "w+")  with open("registr.txt", "w+") as f:     if f.read() == "1":         main()     if f.read() == "0":         comp = input("Введите имя пользователя: ")         name.write(comp)         f.write("1")         main() # Основной цикл бота def main():     def recognize_speech():         recognizer = sr.Recognizer()         with sr.Microphone() as source:             audio = recognizer.listen(source)             print("Можете говорить!")             try:                 text = recognizer.recognize_google(audio, language="ru-RU")                 return text             except sr.UnknownValueError:                 return "Извините, не могу распознать речь"             except sr.RequestError:                 return "Не могу получить доступ к сервису распознавания речи"      while True:         input_text = recognize_speech()         print(input_text)         if "Найди" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569")         elif "Открой ютуб" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open("https://youtube.com")         elif "Открой ВК" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open("https://vk.com")         elif "Выключи компьютер" in input_text:             os.system('shutdown /s /t 1')         elif "Скачай" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569")         elif "Закрой браузер" in input_text:             os.system('taskkill chrome.exe')         else:             pass

import speech_recognition as sr import webbrowser import os name = open("name.txt", "w+") with open("registr.txt", "w+") as f: if f.read() == "1": main() if f.read() == "0": comp = input("Введите имя пользователя: ") name.write(comp) f.write("1") main() # Основной цикл бота def main(): def recognize_speech(): recognizer = sr.Recognizer() with sr.Microphone() as source: audio = recognizer.listen(source) print("Можете говорить!") try: text = recognizer.recognize_google(audio, language="ru-RU") return text except sr.UnknownValueError: return "Извините, не могу распознать речь" except sr.RequestError: return "Не могу получить доступ к сервису распознавания речи" while True: input_text = recognize_speech() print(input_text) if "Найди" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569") elif "Открой ютуб" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open("https://youtube.com") elif "Открой ВК" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open("https://vk.com") elif "Выключи компьютер" in input_text: os.system('shutdown /s /t 1') elif "Скачай" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569") elif "Закрой браузер" in input_text: os.system('taskkill chrome.exe') else: pass

Дополнительно:

написание "голосового ассистента" бессмысленное баловство для новичков, надо начинать с более простых задач

Ты вызываешь main() до того, как ты её объявил.
Освой основы языка сначала.

  • Не помогло Vindicar
  • Alwex0920, покажи исправленный код и текст ошибки, которую код выводит. Будем разбираться.
  • Vindicar, Ошибку не выводит
    Вот код
    import speech_recognition as sr import webbrowser import os  # Основной цикл бота def main():     def recognize_speech():         recognizer = sr.Recognizer()         with sr.Microphone() as source:             audio = recognizer.listen(source)             print("Можете говорить!")             try:                 text = recognizer.recognize_google(audio, language="ru-RU")                 return text             except sr.UnknownValueError:                 return "Извините, не могу распознать речь"             except sr.RequestError:                 return "Не могу получить доступ к сервису распознавания речи"      while True:         input_text = recognize_speech()         print(input_text)         if "Найди" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569")         elif "Открой ютуб" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open("https://youtube.com")         elif "Открой ВК" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open("https://vk.com")         elif "Выключи компьютер" in input_text:             os.system('shutdown /s /t 1')         elif "Скачай" in input_text:             chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s'             webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569")         elif "Закрой браузер" in input_text:             os.system('taskkill chrome.exe')         else:             pass  name = open("name.txt", "w+")  with open("registr.txt", "w+") as f:     if f.read() == "1":         main()     if f.read() == "0":         comp = input("Введите имя пользователя: ")         name.write(comp)         f.write("1")         main()

    import speech_recognition as sr import webbrowser import os # Основной цикл бота def main(): def recognize_speech(): recognizer = sr.Recognizer() with sr.Microphone() as source: audio = recognizer.listen(source) print("Можете говорить!") try: text = recognizer.recognize_google(audio, language="ru-RU") return text except sr.UnknownValueError: return "Извините, не могу распознать речь" except sr.RequestError: return "Не могу получить доступ к сервису распознавания речи" while True: input_text = recognize_speech() print(input_text) if "Найди" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569") elif "Открой ютуб" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open("https://youtube.com") elif "Открой ВК" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open("https://vk.com") elif "Выключи компьютер" in input_text: os.system('shutdown /s /t 1') elif "Скачай" in input_text: chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' webbrowser.get(chrome_path).open(f"https://yandex.ru/search/?text={input_text}&lr=63&clid=2271258&win=569") elif "Закрой браузер" in input_text: os.system('taskkill chrome.exe') else: pass name = open("name.txt", "w+") with open("registr.txt", "w+") as f: if f.read() == "1": main() if f.read() == "0": comp = input("Введите имя пользователя: ") name.write(comp) f.write("1") main()

  • Alwex0920, у тебя очень кривая работа с f.
    Во-первых, read() читает ВЕСЬ файл до конца. А значит, если ты записал туда 0 и поставил после него перевод строки, то результат чтения будет "0n" и "0rn", а не "0". Даже если перевод строки не поставлен, будет очень легко ошибиться и поставить его впоследствии. Это можно починить, если сделать strip() прочитанной строке.

    Во-вторых, когда ты делаешь read() или write(), чтение/запись происходит по текущей позиции в файле. После чтения/записи эта позиция сдвигается. Иными словами, у вызова f.read() без параметров есть побочный эффект - текущая позиция чтения/записи файла окажется в конце файла. Как следствие, второй вызов f.read(), который ты делаешь для сравнения с "0", гарантированно прочитает пустую строку. Просто хочется спросить: тебе по пальцу отрубают за использование лишних переменных, или как? Что мешало сохранить результат вызова f.read() в переменную, и дальше работать с ней? Тогда у тебя был бы только один вызов read().

    В-третьих, после вызова read() у тебя позиция чтения/записи будет в конце файла. Так что вызов f.write("1") допишет единицу в конец файла, вместо того, чтобы записать её поверх нуля. А потому у тебя в файле будет записано "01", и твой код снова не сработает

    Ну и в-четвёртых, да - ты ничего не делаешь, если содержимое файла не соответствует твоим ожиданием.
    А потом удивляешься, что программа ничего не делает.
    С учётом этого, ты мог бы организовать код примерно так (ПРИМЕРНО! не списывай его вслепую, а постарайся понять):

    with open("registr.txt", "w+") as f:     content = f.read() content = content.strip() if content == "0":     ... elif content == "1":  # почитай, что делает elif     ... else:  # в файле не 0 и не 1     print('Неожиданное содержимое файла registr.txt!', repr(content))

    with open("registr.txt", "w+") as f: content = f.read() content = content.strip() if content == "0": ... elif content == "1": # почитай, что делает elif ... else: # в файле не 0 и не 1 print('Неожиданное содержимое файла registr.txt!', repr(content))

    А вообще я бы посоветовал освоить модуль configparser или json, и читать/записывать конфиг с их помощью. Не понадобится чёртова прорва текстовых файлов, да и в целом многие вещи они берут на себя.

  • Vindicar, Спасибо большое, даже стыдно стало за этот вопрос.
  • Alwex0920, не стыдно не знать - стыдно не учиться. Дерзай. =)
  • Vindicar, спасибо
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

Существует несколько причин, по которым голосовой ассистент может завершать свою работу. Ниже перечислены некоторые из наиболее распространенных причин и способы их решения:

1. Недостаточные ресурсы устройства: Проверьте, что устройство, на котором запущен голосовой ассистент, имеет достаточно свободного места на диске и оперативной памяти. Если устройство работает на грани своих возможностей, это может привести к завершению работы ассистента.

2. Проблемы с сетью: Проверьте подключение к Интернету. Если устройство потеряло связь с сетью, голосовой ассистент может завершить свою работу. Убедитесь, что подключение стабильное и быстрое.

3. Проблемы с программным обеспечением: Убедитесь, что у вас установлена последняя версия приложения голосового ассистента. Иногда устаревшие версии программного обеспечения могут вызывать неполадки.

4. Конфликты с другими приложениями: Проверьте, что другие приложения не мешают работе голосового ассистента. Закройте все ненужные программы, которые могут конфликтовать с ассистентом.

5. Неправильные настройки: Проверьте настройки голосового ассистента и убедитесь, что они корректно сконфигурированы. Иногда неправильные настройки могут вызывать проблемы с работой ассистента.

Если после проверки всех вышеперечисленных причин проблема не решится, попробуйте перезапустить устройство или обратитесь к службе поддержки производителя голосового ассистента для получения дополнительной помощи.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно