diff --git a/Command.py b/Command.py index b693e82..8d108c0 100644 --- a/Command.py +++ b/Command.py @@ -15,6 +15,7 @@ # from abc import ABC, abstractmethod # for abstract class and methods +from fuzzywuzzy import fuzz class Command(ABC): _list = [] # list of all commands @@ -88,13 +89,13 @@ class Command(ABC): chances[i] = 0 for weight, words in obj.getKeywords().items(): for word in words: - if word in string: - chances[i] += weight + chances[i] += fuzz.partial_ratio(word, string) * weight print(chances) if( sum( chances.values() ) ): top = max( chances.values() ) / sum( chances.values() ) * 100 else: return list[0] + print(top) for i, chance in chances.items(): if chance == max( chances.values() ): return list[i] diff --git a/SmallTalk/__init__.py b/SmallTalk/__init__.py index 63a34ca..74c82c6 100644 --- a/SmallTalk/__init__.py +++ b/SmallTalk/__init__.py @@ -28,7 +28,6 @@ keywords = {} void = SmallTalk('Undefined', keywords) void.setStart(method) ################################################################################ -################################################################################ def method(): now = datetime.datetime.now() hours = now.hour%12 @@ -95,9 +94,9 @@ def method(): return f'Сейчас {get_str_num(hours%12, 0)} {str_hour}, {get_str_num(minutes, 1)} {str_minute}' keywords = { - 5: ['который час', 'сколько времени', 'время', 'часов'], - 2: ['текущее', 'сейчас', 'час'], - 0.5: ['сколько'] + 10: ['который час', 'сколько времени'], + 5: ['текущее', 'сейчас', 'час', 'время'], + 1: ['сколько'] } ctime = SmallTalk('Current Time', keywords) ctime.setStart(method) diff --git a/SmallTalk/__pycache__/SmallTalk.cpython-37.pyc b/SmallTalk/__pycache__/SmallTalk.cpython-37.pyc deleted file mode 100644 index b3da322..0000000 Binary files a/SmallTalk/__pycache__/SmallTalk.cpython-37.pyc and /dev/null differ diff --git a/SmallTalk/__pycache__/__init__.cpython-37.pyc b/SmallTalk/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index ab2156e..0000000 Binary files a/SmallTalk/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/Text2Speech/TTS.py b/Text2Speech/TTS.py index 6faafde..9238696 100644 --- a/Text2Speech/TTS.py +++ b/Text2Speech/TTS.py @@ -2,23 +2,39 @@ from google.cloud import texttospeech import os import pygame import time +import mmap os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "Text2Speech/archie-test-key.json" -class speech: - def __init__(this, text, voice, path): - this._text = text - this._voice = voice - this._path = path +class Speech: + _list = [] + def __init__(this, text, voice, path, standart = False): + this._text = text + this._voice = voice + this._path = path + this._standart = standart + if(standart): Speech.append(this) def speak(this): - print(f'Говорю: {this._text}') - pygame.mixer.init() - pygame.mixer.music.load(this._path) - pygame.mixer.music.play() - while pygame.mixer.music.get_busy() == True: - time.sleep(0.1) + if( os.path.exists(this._path) ): + print(f'Говорю: {this._text}') + with open(this._path) as f: + with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as audio: + pygame.mixer.init() + pygame.mixer.music.load(audio) + pygame.mixer.music.play() + while pygame.mixer.music.get_busy(): + time.sleep(0.1) + if(not this._standart): os.remove(this._path) -class engine: + @staticmethod + def append(obj): + Speech._list.append(obj) + + @staticmethod + def getList(): + return Speech._list + +class Engine: def __init__(this, name = 'ru-RU-Wavenet-B'): # os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "archie-test-key.json" this._name = name @@ -29,13 +45,13 @@ class engine: name = name, ssml_gender = texttospeech.SsmlVoiceGender.FEMALE) - def generate(this, text): + def generate(this, text, standart = False): + dir = f'audio/{this._name}' + path = f'{dir}/{text}.mp3' + if( os.path.exists(path) ): return Speech(text, this._name, path, standart) synthesis_input = texttospeech.SynthesisInput(text=text) response = this._client.synthesize_speech(input = synthesis_input, voice = this._voice, audio_config = this._audio_config) - dir = f'audio/{this._name}/' - path = f'{dir}/{text}.mp3' if not os.path.exists(dir): os.makedirs(dir) - if not os.path.exists(path): - with open(path, 'wb') as out: - out.write(response.audio_content) - return speech(text, this._name, path) + with open(path, 'wb') as out: + out.write(response.audio_content) + return Speech(text, this._name, path, standart) diff --git a/Text2Speech/__pycache__/TTS.cpython-37.pyc b/Text2Speech/__pycache__/TTS.cpython-37.pyc deleted file mode 100644 index 3c3d1f2..0000000 Binary files a/Text2Speech/__pycache__/TTS.cpython-37.pyc and /dev/null differ diff --git a/Text2Speech/__pycache__/__init__.cpython-37.pyc b/Text2Speech/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 5386e9d..0000000 Binary files a/Text2Speech/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/Text2Speech/audio/ru-RU-Wavenet-B/Йоу-йоу-йоу. Я живой!.mp3 b/Text2Speech/audio/ru-RU-Wavenet-B/Йоу-йоу-йоу. Я живой!.mp3 deleted file mode 100644 index c5c0223..0000000 Binary files a/Text2Speech/audio/ru-RU-Wavenet-B/Йоу-йоу-йоу. Я живой!.mp3 and /dev/null differ diff --git a/Text2Speech/audio/ru-RU-Wavenet-B/Привет всем! Я научился разговаривать!.mp3 b/Text2Speech/audio/ru-RU-Wavenet-B/Привет всем! Я научился разговаривать!.mp3 deleted file mode 100644 index 928034d..0000000 Binary files a/Text2Speech/audio/ru-RU-Wavenet-B/Привет всем! Я научился разговаривать!.mp3 and /dev/null differ diff --git a/__pycache__/Command.cpython-37.pyc b/__pycache__/Command.cpython-37.pyc deleted file mode 100644 index 4a001a6..0000000 Binary files a/__pycache__/Command.cpython-37.pyc and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Команда не распознана.mp3 b/audio/ru-RU-Wavenet-B/Команда не распознана.mp3 deleted file mode 100644 index 49df4b0..0000000 Binary files a/audio/ru-RU-Wavenet-B/Команда не распознана.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Привет.mp3 b/audio/ru-RU-Wavenet-B/Привет.mp3 new file mode 100644 index 0000000..8099851 Binary files /dev/null and b/audio/ru-RU-Wavenet-B/Привет.mp3 differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок четыре минуты.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок четыре минуты.mp3 deleted file mode 100644 index 82e50c2..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок четыре минуты.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часов, тридцать две минуты .mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часов, тридцать две минуты .mp3 deleted file mode 100644 index 8f7aa81..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часов, тридцать две минуты .mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят восемь минут.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят восемь минут.mp3 deleted file mode 100644 index 489a8dc..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят восемь минут.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят минут.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят минут.mp3 deleted file mode 100644 index 8de57ed..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят минут.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят одна минута.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят одна минута.mp3 deleted file mode 100644 index 63a6ae3..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят одна минута.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят три минуты.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят три минуты.mp3 deleted file mode 100644 index 0e88f9d..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, пятьдесят три минуты.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок восемь минут.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок восемь минут.mp3 deleted file mode 100644 index dd0e49c..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок восемь минут.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок девять минут.mp3 b/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок девять минут.mp3 deleted file mode 100644 index c2c5e3b..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас четыре часа, сорок девять минут.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас шестьнадцать часов, сорок одна минута.mp3 b/audio/ru-RU-Wavenet-B/Сейчас шестьнадцать часов, сорок одна минута.mp3 deleted file mode 100644 index ec17c1e..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас шестьнадцать часов, сорок одна минута.mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчас шестьнадцать часов, тридцать минут .mp3 b/audio/ru-RU-Wavenet-B/Сейчас шестьнадцать часов, тридцать минут .mp3 deleted file mode 100644 index 032c532..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчас шестьнадцать часов, тридцать минут .mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчасшестьнадцать часов, двадцать восемь минут .mp3 b/audio/ru-RU-Wavenet-B/Сейчасшестьнадцать часов, двадцать восемь минут .mp3 deleted file mode 100644 index 6b4ce30..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчасшестьнадцать часов, двадцать восемь минут .mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Сейчасшестьнадцать часов, двадцать девять минут .mp3 b/audio/ru-RU-Wavenet-B/Сейчасшестьнадцать часов, двадцать девять минут .mp3 deleted file mode 100644 index e81e8ef..0000000 Binary files a/audio/ru-RU-Wavenet-B/Сейчасшестьнадцать часов, двадцать девять минут .mp3 and /dev/null differ diff --git a/audio/ru-RU-Wavenet-B/Я не понимаю.mp3 b/audio/ru-RU-Wavenet-B/Я не понимаю.mp3 deleted file mode 100644 index e89199f..0000000 Binary files a/audio/ru-RU-Wavenet-B/Я не понимаю.mp3 and /dev/null differ diff --git a/test.py b/test.py index db1f9be..d522d16 100644 --- a/test.py +++ b/test.py @@ -5,7 +5,10 @@ from Command import Command import SmallTalk import Text2Speech -archie = Text2Speech.engine() +archie = Text2Speech.Engine() + +archie.generate('Привет', True) +Text2Speech.Speech.getList()[0].speak() while True: string = str(input('-> '))