Проблема Python Голосовой помошник

Vertom

Новичок
Пользователь
Апр 26, 2020
7
1
3
1.Windows 10
2.Python 3.7.4
3.
4.
написал код давно где то месяца 6 назад когда то наткунлся на проблему не нашёл решение и сбросил сегодня у меня была идея что то пробовать по устранению ошибки но не смог даже запустить как тут вот такая ошибка что это вообще озночает


Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\__init__.py", line 20, in init
eng = _activeEngines[driverName]
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\weakref.py", line 137, in __getitem__
o = self.data[key]()
KeyError: None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "edithen.py", line 195, in <module>
speak_engine = pyttsx3.init()
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\__init__.py", line 22, in init
eng = Engine(driverName, debug)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\engine.py", line 30, in __init__
self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\driver.py", line 52, in __init__
self._driver = self._module.buildDriver(weakref.proxy(self))
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 23, in buildDriver
return SAPI5Driver(proxy)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 43, in __init__
self.setProperty('voice', self.getProperty('voice'))
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 88, in setProperty
token = self._tokenFromId(value)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 68, in _tokenFromId
tokens = self._tts.GetVoices()
File "C:\Users\User\AppData\Local\Temp\gen_py\3.7\C866CA3A-32F7-11D2-9602-00C04F8EE628x0x5x4.py", line 2957, in GetVoices
, OptionalAttributes)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\__init__.py", line 467, in _ApplyTypes_
self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147200967), None)
 

Vertom

Новичок
Пользователь
Апр 26, 2020
7
1
3
код не поместился а вот и код

Python:
     # Голосовой ассистент  1.4.3 BETA
import os
import time
import pyowm
import speech_recognition as sr
from fuzzywuzzy import fuzz
import pyttsx3
import datetime
import webbrowser
import subprocess
import logging
import sys
import subprocess
from colorama import init
from colorama import Fore, Back, Style
import warnings
import random



init()


print( Fore.GREEN )










# настройки
opts = {
    "alias": ('','','','', ' ',''),
    "tbr": ('скажи','расскажи','покажи','сколько','произнеси','какая','открываю','смотреть','включи','заглинуть','','','','','','','','','','','','','',''),
    "cmds": {
        
        #manual
        "stop": ('отключись','конец работы'),
        "name": ('Tommy','Thomas','Томас','Томми', 'Томи ',''),
        "ctime": ('текущее время','сейчас времени','который час', 'какой сейчас час'),
        "cweather": ('текущее погода','какая погода','сейчас погода', 'какая сейчас температура'),
        "shutdownpc": ('Отключи Компютер','Отключи пк'),
        "lockpc": ('Блокируй Компютер', "Блокируй пк", ),
        "restartpc": ('Перезагрузи компютер', 'Перезагрузка'),
        "after_long_time": ('Привет', 'Доброе Утро', 'Добрый день', 'Добрый Вечер'),

        #programs & games
        "team": ('тимвивер','TeamViewer','тимвиуер','тимвиуэр','teamviewer'),
        "notepad": ('блокнот','notepad',),
        "sublime": ('sublime','саблайм'),
        "csgo": ('включи кс го','ксго','кс го','countre strike','cs go'),
        

        #Webbrowser
        "youtube": ('youtube','youtub','ютуб','you tube'),
        "peaky": ('peaky','острые козырьки','козырьки','peaky blinders','blinders'),
        "movie": ('смотреть фильм','watch film','film','фильм'),
        "vk": ('вконтакте', 'вк'),
        "fb": ('facebook', 'фейсбук'),
        "YTfind": ('смотреть видео про ','видео про ','ищи в ютубе ','',),
        "findgoogle": ('Найди в Гугл ','Ищи в гугле ','Найти в гугле ','Прогугли ', 'найти google '),

        # Webbrowser (music)
        "music": ('включи музыку','воспроизведи музыку'),
        "radio": ('воспроизведи radio','включи радио'),
        "progmusic": ('Музыка для програмирование', "музыку для кодов", "что-то для програмирование"),
        "mindmusic": ('музыка' ,'музыку', 'просто музыку'),
        "guf": ('guf','гуф'),
        "bass":('Басс', "Bass", 'Бас','Музыку для машины','Музыку типа бас','Музыку типа басс','Музыку бас','Музыку басс'),
        'sad': ('Грустную музыку', 'Музыку Томаса шелби', 'музыку шелби'),


        #Others
        "citate": ('скажи цитату', 'цитата'),
        "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.startswith(opts["alias"]) or not voice.startswith(opts["alias"]) :
            # обращаются к пятнице
            cmd = voice
 
            for x in opts['alias']:
                cmd = cmd.replace(x, "").strip()
          
            for x in opts['tbr']:
                cmd = cmd.replace(x, "").strip()


          
            # распознаем и выполняем команду
            cmd = recognize_cmd(cmd)
            execute_cmd(cmd['cmd'])


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

    
 
def recognize_cmd(cmd):
    RC = {'cmd': '', 'percent': 0}
    for c,v in opts['cmds'].items():
 
        for x in v:
            vrt = fuzz.ratio(cmd, x)
            if vrt > RC['percent']:
                RC['cmd'] = c
                RC['percent'] = vrt
  
    return RC
 
def execute_cmd(cmd):

#manual

    if cmd == 'ctime':
        #сказать текущее время
        now = datetime.datetime.now()
        speak("Сейчас " + str(now.hour) + ":" + str(now.minute)),

    elif cmd == 'cweather':
        #сказать текущюю погоду
        owm = pyowm.OWM('f1525354194f15e2642d73cc952ae28b', language='ru')
        observation = owm.weather_at_place('Yerevan')
        w = observation.get_weather()
        temperature = w.get_temperature('celsius')['temp']
        status = w.get_detailed_status()

        speak('Сэр, В городе Ереван Сейчас ' + status + ",\n" + "Температура " + str(temperature)),
 
    elif cmd == 'name':
        speak("Слушаю, Сэр",)

  #  elif cmd == "stop":
    #    speak("disconnected")
    #    sys.exit(),

    elif cmd == "shutdownpc":
        os.system(speak('Выключение Компютера...'), 'shutdown -s'),

    elif cmd == "lockpc":
        os.system(speak('Выход из Системы...'), 'shutdown /l'),

    elif cmd == "restartpc":
        os.system(speak("Перезагрузка Компютера..."), 'shutdown /r'),

   # elif cmd == "after_long_time":
        



#programs & games 

    elif cmd == "csgo":
        file = open('D:\\Steam\\steamapps\\common\\Counter-Strike Global Offensive\\Counter-Strike.exe'),

    elif cmd == "notepad":
        os.system('"C:/Windows/System32/notepad.exe"'),

    elif cmd == "sublime":
        os.system('"C:/Windows/System32/notepad.exe"'),

#Webbrowser
    elif cmd == "vk":
        webbrowser.open_new_tab('https://vk.com/feed'),

    elif cmd == "fb":
        webbrowser.open_new_tab('https://www.facebook.com/'),

    elif cmd == "youtube":
            webbrowser.open_new_tab('https://www.youtube.com/'),

    elif cmd == "peaky":
            webbrowser.open_new_tab('http://goodserials.tv/serials/drama/ostrye_kozyrki_1/6-1-0-145'),

    elif cmd == "movie":
        webbrowser.open_new_tab('https://yandex.ru/yandsearch?text=Смотреть+онлайн+фильм+' + statement, speak("Выберите сайт где смотреть фильм")),

    elif cmd == "YTfind":
        webbrowser.open_new_tab('http://www.youtube.com/results?search_query=' + statement, ),

    elif cmd == "findgoogle":
        webbrowser.open_new_tab('https://yandex.ru/yandsearch?text=' + statement ),


# Webbrowser (music)
    elif cmd == "guf":
        webbrowser.open_new_tab('https://www.youtube.com/watch?v=jcl1qjq4Sps&list=RDjcl1qjq4Sps&start_radio=1'),

    elif cmd == "progmusic":
        webbrowser.open_new_tab('https://www.youtube.com/watch?v=ALbDv_4mM0g'),

    elif cmd == "mindmusic":
        webbrowser.open_new_tab("https://www.youtube.com/watch?v=yj_fk0_3FJ0"),

    elif cmd == "bass":
        webbrowser.open_new_tab("https://www.youtube.com/watch?v=mPzX62uFphs"),
    
    elif cmd == 'music':
        os.system("D:\\Sublime\\Python\\Jarvis\\moskva.mp3"),

    elif cmd == 'sad':
        webbrowser.open_new_tab("https://www.youtube.com/watch?v=IaVVoGl9dYc"),

    

#Others
    elif cmd == 'stupid1':
        # рассказать анекдот
        speak("Вы, не научили меня анекдотам Сэр"),

    elif cmd == "citate":
        speak('You know, gentlemen, there is hell and there is another place below hell. I will remember everything and forget nothing'),



 
    else:
        speak('Сэр, Команда не распознана'),

 

 



# запуск

r = sr.Recognizer()
m = sr.Microphone(device_index = 18)
 
with m as source:
    r.adjust_for_ambient_noise(source)
 
speak_engine = pyttsx3.init()

 
# Только если у вас установлены голоса для синтеза речи!
voices = speak_engine.getProperty('voices')
speak_engine.setProperty('voice', voices[4].id)

input_str = 'E.D.I.T.H.'
length = 17


if( len(input_str) % 2 ):
    length += 1

print( ('{0:^'+str(length)+'}').format(input_str) )

input_str = 'activated!'
length = 17


if( len(input_str) % 2 ):
    length += 1

print( ('{0:^'+str(length)+'}').format(input_str) )

speak("С возвращением, сэр")

 
stop_listening = r.listen_in_background(m, callback)   



# infinitе loop

while True:
    time.sleep(0.1)
 

Форум IT Специалистов