Дополнительно
Добавить в избранноеits_niks
Новичок
Всем, привет!
Решил я тут написать небольшого помощника, если его можно так назвать.
Нуу-с... Приступим.
Возможности помощника:
Python 3.9.6
Кому лень все вводить держите архив(модель + скрипт): https://wdfiles.ru/2673d6
Не знаю зачем VT на архив, но держите: https://www.virustotal.com/gui/file...20a112eac7de66b27d3a81b340e3ef29c34?nocache=1
Запуск - start.bat
Спасибо, пока!
Решил я тут написать небольшого помощника, если его можно так назвать.
Нуу-с... Приступим.
Заходим на сайт [preview]https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio [/preview]и скачиваем нужную версию модуля в формате WHL.
Заходим в CMD и пишем
pip install {путь к файлу whl}
Например:
pip install C:\Users\Nikita\Downloads\PyAudio-0.2.11-cp39-cp39-win_amd64.whl
Так, PyAudio установили, поехали дальше.
Заходим в CMD и пишем
pip install {путь к файлу whl}
Например:
pip install C:\Users\Nikita\Downloads\PyAudio-0.2.11-cp39-cp39-win_amd64.whl
Так, PyAudio установили, поехали дальше.
Устанавливаем Vosk
[SRCI]pip install vosk[/SRCI]
Заходим на сайт [preview]https://alphacephei.com/vosk/models [/preview]ищем модель на русском(да в принципе не важно, если вам надо на английском, то можете такую скачать), их там 2 штуки(маленькая и большая), я для демонстрации скачал маленькую(43MB). Закидываете ее в папку с скриптом и готово.
[SRCI]pip install vosk[/SRCI]
Заходим на сайт [preview]https://alphacephei.com/vosk/models [/preview]ищем модель на русском(да в принципе не важно, если вам надо на английском, то можете такую скачать), их там 2 штуки(маленькая и большая), я для демонстрации скачал маленькую(43MB). Закидываете ее в папку с скриптом и готово.
Python:
pip install fuzzywuzzy
pip install pyttsx3
Создаем файлы:
На 10 строке должны ввести название папки с моделью.
Папка должна выглядеть так:
Ну и все вроде)
Код:
import json
import pyaudio
from vosk import Model, KaldiRecognizer, SetLogLevel
from fuzzywuzzy import fuzz
import sys, webbrowser, colorama, datetime, pyttsx3, random, os
class Helper():
def __init__(self):
SetLogLevel(-1)
model = Model("./vosk-model-small-ru-0.22")
self.rec = KaldiRecognizer(model, 16000)
p = pyaudio.PyAudio()
self.stream = p.open(format=pyaudio.paInt16, channels=1,
rate=16000, input=True, frames_per_buffer=8000)
self.stream.start_stream()
self.cmds = {
('время', 'сколько времени', 'какой час', 'сколько время') : self.get_time,
('спасибо', 'от души', 'сенк') : self.thx,
('прощай', 'пока', 'до свидания', 'гуд бай') : self.exit,
('привет', 'ку', 'приветствую', 'хелоу') : self.hello,
}
self.engine = pyttsx3.init()
self.engine.setProperty('rate', 200)
self.engine.setProperty('volume', 1)
# Выход
def exit(self):
list_1 = ['Надеюсь мы скоро увидимся', 'Рада была помочь', 'Пока пока', 'Я отключаюсь']
self.say(random.choice(list_1))
self.engine.stop()
os.system('cls')
raise SystemExit(0)
# Поиск
def google(self, text):
url = f'https://www.google.com/search?q={" ".join(text)}'
self.say(f'Ищу в интернете: {" ".join(text)}')
webbrowser.open(url)
# Приветствие
def hello(self):
hello_list = ['привет', 'ку', 'приветствую', 'хелоу', 'дарова', 'здорово']
self.say(random.choice(hello_list))
# Открытие браузера
def open_browser(self, task):
links = {
('ютуб', 'ютюб'): 'https://youtube.com/',
('вк', 'вконтакте', 'контакт'): 'https:vk.com/feed',
('браузер', 'интернет', 'гугл'): 'https://google.com/',
('инстаграм', 'инста', 'инсту'): 'https://www.instagram.com/',
}
j = 0
if 'и' in task:
task = task.replace('и', '').replace(' ', ' ')
double_task = task.split()
if j != len(double_task):
for i in range(len(double_task)):
for vals in links:
for word in vals:
if fuzz.ratio(word, double_task[i]) > 75:
webbrowser.open(links[vals])
self.say('Открываю ' + double_task[i])
j += 1
os.system('cls')
print("Я вас слушаю...")
break
# Получить время
def get_time(self):
now = datetime.datetime.now()
self.engine.say("Сейчас " + str(now.hour) + ":" + str(now.minute))
self.engine.runAndWait()
# Спасибо
def thx(self):
thx_list = ['На здоровье', 'Обращайся', 'Не за что', 'Не стоит благодарности', 'Это моя работа', 'Обращайтесь еще', 'Рад был помочь']
self.say(random.choice(thx_list))
# Говорилка
def say(self, text):
self.engine.say(text)
self.engine.runAndWait()
# Слушание
def listen(self):
print("Я вас слушаю...")
while True:
data = self.stream.read(4000, exception_on_overflow=False)
if self.rec.AcceptWaveform(data) and len(data) > 0:
answer = json.loads(self.rec.Result())
if answer["text"]:
yield answer["text"]
# Распознование речи
def recognize(self):
for text in self.listen():
if text.startswith(('открой', 'запусти', 'зайди', 'зайди на')):
self.open_browser(text)
elif text.startswith(('узнай', 'найди')):
self.google(text.split()[1:])
else:
for word in text.split():
for keywords in self.cmds:
if word in keywords:
self.cmds[keywords]()
if __name__ == '__main__':
Helper().recognize()
Код:
py main.py
pause
Папка должна выглядеть так:
Ну и все вроде)
Возможности помощника:
- Возможность открыть определенный сайт.
- Возможность узнать инфу в гугле.
- Возможность узнать время.
- Помощник умеет здороваться и прощаться. Также отвечает на спасибо.
Python 3.9.6
Кому лень все вводить держите архив(модель + скрипт): https://wdfiles.ru/2673d6
Не знаю зачем VT на архив, но держите: https://www.virustotal.com/gui/file...20a112eac7de66b27d3a81b340e3ef29c34?nocache=1
Запуск - start.bat
Спасибо, пока!