Добрый день.Пытаюсь сделать письменного-голосового помощника на данный момент он работает только в письменном форме . Мне хочется чтобы программа меня попросила чтобы я ввёл команду а я мог либо с помощью клавиатуры ввести её либо нажать на Ctrl я сказал команду микрофон меня послушал через сервера гугл преобразовал речь в текст и записали вместо меня
Python:
import speech_recognition as sr
import win32com.client
import keyboard
import webbrowser
import datetime
import random
pravda=True
speaker=win32com.client.Dispatch("SAPI.SpVoice")
def voicecommand():
r = sr.Recognizer() # Создаем объект на основе библиотеки speech_recognition и вызываем метод для определения данных
with sr.Microphone() as source:# Начинаем прослушивать микрофон и записываем данные в source
print("Говорите")# Просто вывод, чтобы мы знали когда говорить
r.pause_threshold = 1# Устанавливаем паузу, чтобы прослушивание началось лишь по прошествию 1 секунды
r.adjust_for_ambient_noise(source, duration=1)# используем adjust_for_ambient_noise для удаления посторонних шумов из аудио дорожки
audio = r.listen(source)# Полученные данные записываем в переменную audio пока мы получили лишь mp3 звук
try: # Обрабатываем все при помощи исключений
"""
Распознаем данные из mp3 дорожки.
Указываем что отслеживаемый язык русский.
Благодаря lower() приводим все в нижний регистр.
Теперь мы получили данные в формате строки,
которые спокойно можем проверить в условиях
"""
zadanie = r.recognize_google(audio, language="ru-RU").lower()
# что сказал пользователь
print("Вы сказали:"+zadanie)# что сказал пользователь
command=zadanie
except sr.UnknownValueError:# Если не смогли распознать текст, то будет вызвана эта ошибка
# Здесь просто проговариваем слова "Я вас не поняла"
# и вызываем снова функцию command() для
# получения текста от пользователя
print("Я вас не поняла")
zadanie = voicecommand()
name5=("Окжма")
name4=("Ок жма")
name3=("окжма")
name2=("ок жма")
name1=("okjma")
name=("ok jma")
b=input("Вызовите меня:")
if b==name or b==name1 or b==name2 or b==name3 or b==name4 or b==name5:
print("Слушаю повелитель")
speaker.Speak("слушаю повелитель")
command=(' '.join(input("Введите вашу команду:").split())) or voicecommand()
else:
print("Меня зовут не " + (b))
speaker.Speak("Меня зовут не" +(b))
speaker.Speak("Назовите меня правильно")
b=input("Назовите меня правильно:")
if b==name or b==name1 or b==name2 or b==name3 or b==name4 or b==name5:
print("Слушаю повелитель")
speaker.Speak("Слушаю повелитель")
command=(' '.join(input("Введите вашу команду:").split()))
else:
print("Бан")
speaker.Speak("Бан")
raise SystemExit
pravda=True
while pravda:
napominanie3=1
napominanie2=1
napominanie1=1
randomhislo=random.randint(1,100000)
joke=random.randint(1,3)#переменная для показа шуток
coin=random.randint(1,3)#переменная для команды броска монеты
now=datetime.datetime.now()#команда для времини
f=int(random.uniform(1,10))
if joke==1 and (command=="Расскажи анекдот") or joke==1 and (command=="расскажи анекдот") or joke==1 and (command=="Пошути") or joke==1 and (command=="пошути"):
print("Идут значит 2 рэпера, один в кепке, другой тоже звизды получит")
speaker.Speak("Идут значит 2 рэпера, один в кепке, другой тоже звизды получит")
command=(' '.join(input("Введите вашу команду:").split()))
if joke==2 and (command=="Расскажи анекдот") or joke==2 and (command=="расскажи анекдот") or joke==2 and (command=="Пошути") or joke==2 and (command=="пошути"):
print("Сидят две блондинки за столиком в кафе. Одна говорит: — Какой-то странный сегодня кофе. — Дура, это же чай. Официант: — Девочки, не ссортесь! Может еще какао?")
speaker.Speak("Сидят две блондинки за столиком в кафе. Одна говорит: — Какой-то странный сегодня кофе. — Дура, это же чай. Официант: — Девочки, не ссортесь! Может еще какао?")
command=(' '.join(input("Введите вашу команду:").split()))
if joke==3 and (command=="Расскажи анекдот") or joke==3 and (command=="расскажи анекдот") or joke==3 and (command=="Пошути") or joke==3 and (command=="пошути"):
print("Я никогда не обижаюсь, я просто меняю мнение о человеке")
speaker.Speak("Я никогда не обижаюсь, я просто меняю мнение о человеке")
command=(' '.join(input("Введите вашу команду:").split()))
if coin==1 and (command=="Брось монету") or coin==1 and (command=="брось монету") or coin==1 and (command=="Брось монетку") or coin==1 and (command=="брось монетку"):
print("Орел")
speaker.Speak("Орёл")
command=(' '.join(input("Введите вашу команду:").split()))
if coin==2 and (command=="Брось монету") or coin==2 and (command=="брось монету") or coin==2 and (command=="Брось монетку") or coin==2 and (command=="брось монетку"):
print("Решка")
speaker.Speak("Решка")
command=(' '.join(input("Введите вашу команду:").split()))
if coin==3 and (command=="Брось монету") or coin==3 and (command=="брось монету") or coin==3 and (command=="Брось монетку") or coin==3 and (command=="брось монетку"):
print("Монетка упала ребром")
speaker.Speak("Монетка упала ребром")
command=(' '.join(input("Введите вашу команду:").split()))
if(command=="Погода") or (command=="погода") or (command=="Покажи погоду") or (command=="покажи погоду") or (command=="открой погоду"):
pravda=False
print("Открываю")
speaker.Speak("Открываю")
webbrowser.open('https://yandex.ru/pogoda/tomsk?utm_source=serp&utm_campai..', new=1)
pravda=True
command=(' '.join(input("Введите вашу команду:").split()))
if(command=="Вк") or (command=="вк") or (command=="Открой вк") or (command=="открой вк") or 'вк' in zadanie :
pravda=False
print("Открываю")
speaker.Speak("Открываю")
webbrowser.open("https://vk.com/feed",new=1)
pravda=True
command=(' '.join(input("Введите вашу команду:").split()))
if(command=="Музыка") or (command=="музыка") or (command=="включи музыку") or (command=="Включи музыку"):
pravda=False
print("Включаю")
speaker.Speak("Включаю")
webbrowser.open("https://music.yandex.ru/home",new=1)
pravda=True
command=(' '.join(input("Введите вашу команду:").split()))
if(command=="Ютуб") or (command=="ютуб") or (command=="включи видео") or (command=="YouTube") or (command=="Youtube") or (command=="youtube") or (command=="Включи видео") or (command=="Открой ютуб") or (command=="открой ютуб"):
pravda=False
print("Открываю")
speaker.Speak("Открываю")
webbrowser.open("https://www.youtube.com",new=1)
pravda=True
command=(' '.join(input("Введите вашу команду:").split()))
if command==("циферки") or (command=="цифры") or (command=="посчитай") or (command=="Посчитай"):
print("1")
pravda=False
a=1
while a<1000:
a=a+1
print(a)
print("Расчет окончен")
speaker.Speak("Расчет окончен")
pravda=True
command=(' '.join(input("Введите вашу команду:").split()))
if command==(":)"):
print (":)")
command=(' '.join(input("Введите вашу команду:").split()))
if(command=="случайное число") or (command=="Случайное число") or (command=="рандомное число") or (command=="Рандомное число"):
print (randomhislo)
speaker.Speak(randomhislo)
command=(' '.join(input("Введите вашу команду:").split()))
if(command=="который час") or (command=="Который час") or (command=="покажи время") or (command=="Покажи время"):
print ("Текущая дата и время с использованием атрибутов:")
print ("Текущий год: %d" % now.year)
speaker.Speak("Текущий год: %d" % now.year)
print ("Текущий месяц: %d"% now.month)
speaker.Speak("Текущий месяц: %d"% now.month)
print ("Текущий день: %d" % now.day)
speaker.Speak("Текущий день: %d" % now.day)
print ("Текущий час: %d" % now.hour)
speaker.Speak("Текущий час: %d" % now.hour)
print ("Текущая минута: %d" % now.minute)
speaker.Speak("Текущая минута: %d" % now.minute)
command=(' '.join(input("Введите вашу команду:").split()))