Уведомления

Группа в Telegram: @pythonsu

#1 Июль 8, 2019 13:54:23

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

голосовой асистент

Недавно я написал вот такой код
import os
import time
import speech_recognition as sr
from fuzzywuzzy import fuzz
import pyttsx3
import datetime

opts = {
“alias”: ('Никита','Никич','Никитос'),
“tbr”: ('скажи','раскажи','покажи','обьясни'),
“cmds”: {
“ctime”'текущее время','сколько время','сколько времени','который час','который час','время'),
“radio”: ('включи музыку','музыка','воспроизведи музыку','включи музон'),
“stupid1”: ('раскажи анекдот','раскажи прикол','рассмеши меня')
}
}

#функции
def speak(what):
print( what )
speak_engine.say( what )
speak_engine.runAndWait()
speak_engine.stop()

def callback(recognizer,audio):
try:
voice = recognizer.recognize_google(audio, language = “ru-RU”).lower()
print(" Распознано: " + voice)

if voice.startwith(opts):
#обращаемся к Никите
cmd = voice

for x in opts:
cmd = cmd.replace(x, “”).strip()

for x in opts:
cmd = cmd.replace(x, “”).strip()

#распознаём и выводим команду
cmd = recognize_cmd(cmd)
execute_cmd(cmd)

except sr.UnknownValueError:
print(" Голос не распознан“)
except sr.RequestError as e:
print(” Неизвестная ошибкабпроверьте интернет!")

def recognize_cmd(cmd):
RC = {'cmd': ‘', ’percent': 0}
for c,v in opts.items():

for x in v:
vrt = fuzz.ratio(cmd, x)
if vrt > RC:
RC = c
RC = vrt

return RC

def execute_cmd(cmd):
if cmd == ‘ctime’:
#текущее время
now = datetime.now()
speak(“сейчас ” + str(now.hour) + “:” + str (now.minute))

elif cmd == ‘stupid1’:
#расказать анекдот
speak(“мой разработчик не научил меня анекдотам”)

#запуск
r = sr.Recognizer()
m = sr.Microphone(device_index=1)

with m as source:
r.adjust_for_ambient_noise(source)

speak_engine = pyttsx3.init()

#только если установлены голоса для синтеза речи!
voices = speak_engine.getProperty('voices')


speak(“добрый день, хозяин”)
speak(“Никита слушает”)

stop_listening = r.listen_in_background(m, callback)
while True: time.sleep(0.1)



и вот ошибка:



C:\python\python.exe CUsers/asus/PycharmProjects/test/test1.py
C:\python\lib\site-packages\fuzzywuzzy\fuzz.py:11: UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning
warnings.warn('Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning')
добрый день, хозяин
Никита слушает
Exception in thread Thread-1:
Traceback (most recent call last):
File “C:\python\lib\threading.py”, line 917, in _bootstrap_inner
self.run()
File “C:\python\lib\threading.py”, line 865, in run
Распознано: расскажи анекдот
self._target(*self._args, **self._kwargs)
File “C:\python\lib\site-packages\speech_recognition\__init__.py”, line 697, in threaded_listen
if running: callback(self, audio)
File “CUsers/asus/PycharmProjects/test/test1.py”, line 30, in callback
if voice.startwith(opts):
AttributeError: ‘str’ object has no attribute ‘startwith’

Офлайн

#2 Июль 8, 2019 14:16:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

голосовой асистент

startswith



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version