diff --git a/.gitignore b/.gitignore index 9bb619f..525719c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ __pycache__/ *.py[cod] *$py.class +# Custom +model_small/ + # C extensions *.so diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..7f9be7c --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,42 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/jarvis.iml b/.idea/jarvis.iml new file mode 100644 index 0000000..b55f7bb --- /dev/null +++ b/.idea/jarvis.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..b1d0f0b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..fbd2bfc --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Crysis2 Sounds/FTP-СОЕДИНЕНИЕ УСТАНОВЛЕНО.wav b/Crysis2 Sounds/FTP-СОЕДИНЕНИЕ УСТАНОВЛЕНО.wav deleted file mode 100644 index 3bdfa81..0000000 Binary files a/Crysis2 Sounds/FTP-СОЕДИНЕНИЕ УСТАНОВЛЕНО.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВОПРОС.wav b/Crysis2 Sounds/ВОПРОС.wav deleted file mode 100644 index cd01508..0000000 Binary files a/Crysis2 Sounds/ВОПРОС.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВОСКЛИЦАНИЕ.wav b/Crysis2 Sounds/ВОСКЛИЦАНИЕ.wav deleted file mode 100644 index 24ed836..0000000 Binary files a/Crysis2 Sounds/ВОСКЛИЦАНИЕ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВОССТАНОВЛЕНИЕ.wav b/Crysis2 Sounds/ВОССТАНОВЛЕНИЕ.wav deleted file mode 100644 index 0dea541..0000000 Binary files a/Crysis2 Sounds/ВОССТАНОВЛЕНИЕ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВХОД В WINDOWS.wav b/Crysis2 Sounds/ВХОД В WINDOWS.wav deleted file mode 100644 index 6c43af8..0000000 Binary files a/Crysis2 Sounds/ВХОД В WINDOWS.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВХОДЯЩИЙ ЗВОНОК.wav b/Crysis2 Sounds/ВХОДЯЩИЙ ЗВОНОК.wav deleted file mode 100644 index 8709c43..0000000 Binary files a/Crysis2 Sounds/ВХОДЯЩИЙ ЗВОНОК.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВЫБРАТЬ.wav b/Crysis2 Sounds/ВЫБРАТЬ.wav deleted file mode 100644 index 2989bf6..0000000 Binary files a/Crysis2 Sounds/ВЫБРАТЬ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ВЫХОД ИЗ WINDOWS (2).wav b/Crysis2 Sounds/ВЫХОД ИЗ WINDOWS (2).wav deleted file mode 100644 index f952e29..0000000 Binary files a/Crysis2 Sounds/ВЫХОД ИЗ WINDOWS (2).wav and /dev/null differ diff --git a/Crysis2 Sounds/ВЫХОД ИЗ WINDOWS.wav b/Crysis2 Sounds/ВЫХОД ИЗ WINDOWS.wav deleted file mode 100644 index 3b3b7a2..0000000 Binary files a/Crysis2 Sounds/ВЫХОД ИЗ WINDOWS.wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗАБЛОКИРОВАНО ВСПЛЫВАЮЩЕЕ ОКНО.wav b/Crysis2 Sounds/ЗАБЛОКИРОВАНО ВСПЛЫВАЮЩЕЕ ОКНО.wav deleted file mode 100644 index bfb0eb6..0000000 Binary files a/Crysis2 Sounds/ЗАБЛОКИРОВАНО ВСПЛЫВАЮЩЕЕ ОКНО.wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗАВЕРШЕНИЕ ПЕЧАТИ.wav b/Crysis2 Sounds/ЗАВЕРШЕНИЕ ПЕЧАТИ.wav deleted file mode 100644 index b6a7cdd..0000000 Binary files a/Crysis2 Sounds/ЗАВЕРШЕНИЕ ПЕЧАТИ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗАВЕРШЕНИЕ РАБОТЫ WINDOWS (2).wav b/Crysis2 Sounds/ЗАВЕРШЕНИЕ РАБОТЫ WINDOWS (2).wav deleted file mode 100644 index 26f4d66..0000000 Binary files a/Crysis2 Sounds/ЗАВЕРШЕНИЕ РАБОТЫ WINDOWS (2).wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗАВЕРШЕНИЕ РАБОТЫ WINDOWS.wav b/Crysis2 Sounds/ЗАВЕРШЕНИЕ РАБОТЫ WINDOWS.wav deleted file mode 100644 index 0e7519a..0000000 Binary files a/Crysis2 Sounds/ЗАВЕРШЕНИЕ РАБОТЫ WINDOWS.wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗАКОНЧИТЬ ОБЗОР.wav b/Crysis2 Sounds/ЗАКОНЧИТЬ ОБЗОР.wav deleted file mode 100644 index 36ceccb..0000000 Binary files a/Crysis2 Sounds/ЗАКОНЧИТЬ ОБЗОР.wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗАКРЫТИЕ ПРОГРАММЫ.wav b/Crysis2 Sounds/ЗАКРЫТИЕ ПРОГРАММЫ.wav deleted file mode 100644 index 65ed8d4..0000000 Binary files a/Crysis2 Sounds/ЗАКРЫТИЕ ПРОГРАММЫ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ЗВЕЗДОЧКА.wav b/Crysis2 Sounds/ЗВЕЗДОЧКА.wav deleted file mode 100644 index a34d8f4..0000000 Binary files a/Crysis2 Sounds/ЗВЕЗДОЧКА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ИЗМЕНЕНИЕ ТЕМЫ WINDOWS.wav b/Crysis2 Sounds/ИЗМЕНЕНИЕ ТЕМЫ WINDOWS.wav deleted file mode 100644 index 2630fed..0000000 Binary files a/Crysis2 Sounds/ИЗМЕНЕНИЕ ТЕМЫ WINDOWS.wav and /dev/null differ diff --git a/Crysis2 Sounds/КОНТРОЛЬ УЧЕТНЫХ ЗАПИСЕЙ WINDOWS.wav b/Crysis2 Sounds/КОНТРОЛЬ УЧЕТНЫХ ЗАПИСЕЙ WINDOWS.wav deleted file mode 100644 index 2666960..0000000 Binary files a/Crysis2 Sounds/КОНТРОЛЬ УЧЕТНЫХ ЗАПИСЕЙ WINDOWS.wav and /dev/null differ diff --git a/Crysis2 Sounds/КОПИРОВАНИЕ - ПЕРЕМЕЩЕНИЕ ЗАВЕРШЕНО.wav b/Crysis2 Sounds/КОПИРОВАНИЕ - ПЕРЕМЕЩЕНИЕ ЗАВЕРШЕНО.wav deleted file mode 100644 index 09b89cc..0000000 Binary files a/Crysis2 Sounds/КОПИРОВАНИЕ - ПЕРЕМЕЩЕНИЕ ЗАВЕРШЕНО.wav and /dev/null differ diff --git a/Crysis2 Sounds/КРИТИЧЕСКАЯ ОШИБКА.wav b/Crysis2 Sounds/КРИТИЧЕСКАЯ ОШИБКА.wav deleted file mode 100644 index 2e772a1..0000000 Binary files a/Crysis2 Sounds/КРИТИЧЕСКАЯ ОШИБКА.wav and /dev/null differ diff --git a/Crysis2 Sounds/НАЧАТЬ ОБЗОР.wav b/Crysis2 Sounds/НАЧАТЬ ОБЗОР.wav deleted file mode 100644 index d54f059..0000000 Binary files a/Crysis2 Sounds/НАЧАТЬ ОБЗОР.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОБНАРУЖЕН КАНАЛ.wav b/Crysis2 Sounds/ОБНАРУЖЕН КАНАЛ.wav deleted file mode 100644 index e2a4be0..0000000 Binary files a/Crysis2 Sounds/ОБНАРУЖЕН КАНАЛ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОБНАРУЖЕН ПОСТАВЩИК УСЛУГ ПОИСКА (2).wav b/Crysis2 Sounds/ОБНАРУЖЕН ПОСТАВЩИК УСЛУГ ПОИСКА (2).wav deleted file mode 100644 index 68a0e25..0000000 Binary files a/Crysis2 Sounds/ОБНАРУЖЕН ПОСТАВЩИК УСЛУГ ПОИСКА (2).wav and /dev/null differ diff --git a/Crysis2 Sounds/ОБНАРУЖЕН ПОСТАВЩИК УСЛУГ ПОИСКА.wav b/Crysis2 Sounds/ОБНАРУЖЕН ПОСТАВЩИК УСЛУГ ПОИСКА.wav deleted file mode 100644 index 1347364..0000000 Binary files a/Crysis2 Sounds/ОБНАРУЖЕН ПОСТАВЩИК УСЛУГ ПОИСКА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОТКЛЮЧЕНИЕ УСТРОЙСТВА.wav b/Crysis2 Sounds/ОТКЛЮЧЕНИЕ УСТРОЙСТВА.wav deleted file mode 100644 index a9c159b..0000000 Binary files a/Crysis2 Sounds/ОТКЛЮЧЕНИЕ УСТРОЙСТВА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОТКРЫТИЕ ПРОГРАММЫ.wav b/Crysis2 Sounds/ОТКРЫТИЕ ПРОГРАММЫ.wav deleted file mode 100644 index 9bb7439..0000000 Binary files a/Crysis2 Sounds/ОТКРЫТИЕ ПРОГРАММЫ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОЧИСТКА КОРЗИНЫ.wav b/Crysis2 Sounds/ОЧИСТКА КОРЗИНЫ.wav deleted file mode 100644 index 99d8cc7..0000000 Binary files a/Crysis2 Sounds/ОЧИСТКА КОРЗИНЫ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОШИБКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА (2).wav b/Crysis2 Sounds/ОШИБКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА (2).wav deleted file mode 100644 index e055e3a..0000000 Binary files a/Crysis2 Sounds/ОШИБКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА (2).wav and /dev/null differ diff --git a/Crysis2 Sounds/ОШИБКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА.wav b/Crysis2 Sounds/ОШИБКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА.wav deleted file mode 100644 index 9e40ded..0000000 Binary files a/Crysis2 Sounds/ОШИБКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОШИБКА ПРОГРАММЫ.wav b/Crysis2 Sounds/ОШИБКА ПРОГРАММЫ.wav deleted file mode 100644 index c677233..0000000 Binary files a/Crysis2 Sounds/ОШИБКА ПРОГРАММЫ.wav and /dev/null differ diff --git a/Crysis2 Sounds/ОШИБКА ФАКСА.wav b/Crysis2 Sounds/ОШИБКА ФАКСА.wav deleted file mode 100644 index d21b986..0000000 Binary files a/Crysis2 Sounds/ОШИБКА ФАКСА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ПЕРЕДАЧА ЗАВЕРШЕНА.wav b/Crysis2 Sounds/ПЕРЕДАЧА ЗАВЕРШЕНА.wav deleted file mode 100644 index f295615..0000000 Binary files a/Crysis2 Sounds/ПЕРЕДАЧА ЗАВЕРШЕНА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ПОДКЛЮЧЕНИЕ УСТРОЙСТВА.wav b/Crysis2 Sounds/ПОДКЛЮЧЕНИЕ УСТРОЙСТВА.wav deleted file mode 100644 index ea0d10f..0000000 Binary files a/Crysis2 Sounds/ПОДКЛЮЧЕНИЕ УСТРОЙСТВА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ПОИСК ЗАВЕРШЕН.wav b/Crysis2 Sounds/ПОИСК ЗАВЕРШЕН.wav deleted file mode 100644 index fbdf15c..0000000 Binary files a/Crysis2 Sounds/ПОИСК ЗАВЕРШЕН.wav and /dev/null differ diff --git a/Crysis2 Sounds/РАЗВЕРТЫВАНИЕ.wav b/Crysis2 Sounds/РАЗВЕРТЫВАНИЕ.wav deleted file mode 100644 index 7651051..0000000 Binary files a/Crysis2 Sounds/РАЗВЕРТЫВАНИЕ.wav and /dev/null differ diff --git a/Crysis2 Sounds/РАСКРЫТИЕ ВСПЛЫВАЮЩЕГО МЕНЮ.wav b/Crysis2 Sounds/РАСКРЫТИЕ ВСПЛЫВАЮЩЕГО МЕНЮ.wav deleted file mode 100644 index 3d1c3f7..0000000 Binary files a/Crysis2 Sounds/РАСКРЫТИЕ ВСПЛЫВАЮЩЕГО МЕНЮ.wav and /dev/null differ diff --git a/Crysis2 Sounds/РАСПАКОВКА ЗАВЕРШЕНА.wav b/Crysis2 Sounds/РАСПАКОВКА ЗАВЕРШЕНА.wav deleted file mode 100644 index 360a100..0000000 Binary files a/Crysis2 Sounds/РАСПАКОВКА ЗАВЕРШЕНА.wav and /dev/null differ diff --git a/Crysis2 Sounds/СВЕРТЫВАНИЕ.wav b/Crysis2 Sounds/СВЕРТЫВАНИЕ.wav deleted file mode 100644 index 0297860..0000000 Binary files a/Crysis2 Sounds/СВЕРТЫВАНИЕ.wav and /dev/null differ diff --git a/Crysis2 Sounds/СИГНАЛ НИЗКОГО ЗАРЯДА БАТАРЕЙ.wav b/Crysis2 Sounds/СИГНАЛ НИЗКОГО ЗАРЯДА БАТАРЕЙ.wav deleted file mode 100644 index 50b4a4f..0000000 Binary files a/Crysis2 Sounds/СИГНАЛ НИЗКОГО ЗАРЯДА БАТАРЕЙ.wav and /dev/null differ diff --git a/Crysis2 Sounds/СИГНАЛ ПОЛНОЙ РАЗРЯДКИ БАТАРЕЙ.wav b/Crysis2 Sounds/СИГНАЛ ПОЛНОЙ РАЗРЯДКИ БАТАРЕЙ.wav deleted file mode 100644 index 2c7aeb0..0000000 Binary files a/Crysis2 Sounds/СИГНАЛ ПОЛНОЙ РАЗРЯДКИ БАТАРЕЙ.wav and /dev/null differ diff --git a/Crysis2 Sounds/СИСТЕМНОЕ УВЕДОМЛЕНИЕ.wav b/Crysis2 Sounds/СИСТЕМНОЕ УВЕДОМЛЕНИЕ.wav deleted file mode 100644 index b8a915e..0000000 Binary files a/Crysis2 Sounds/СИСТЕМНОЕ УВЕДОМЛЕНИЕ.wav and /dev/null differ diff --git a/Crysis2 Sounds/УВЕДОМЛЕНИЕ О ПОЛУЧЕНИИ ПОЧТЫ.wav b/Crysis2 Sounds/УВЕДОМЛЕНИЕ О ПОЛУЧЕНИИ ПОЧТЫ.wav deleted file mode 100644 index 7eef2fe..0000000 Binary files a/Crysis2 Sounds/УВЕДОМЛЕНИЕ О ПОЛУЧЕНИИ ПОЧТЫ.wav and /dev/null differ diff --git a/Crysis2 Sounds/УВЕДОМЛЕНИЕ О ПРИХОДЕ ФАКСА.wav b/Crysis2 Sounds/УВЕДОМЛЕНИЕ О ПРИХОДЕ ФАКСА.wav deleted file mode 100644 index 29eba6b..0000000 Binary files a/Crysis2 Sounds/УВЕДОМЛЕНИЕ О ПРИХОДЕ ФАКСА.wav and /dev/null differ diff --git a/Crysis2 Sounds/УДАЛЕНИЕ ЗАВЕРШЕНО.wav b/Crysis2 Sounds/УДАЛЕНИЕ ЗАВЕРШЕНО.wav deleted file mode 100644 index 73ce1e5..0000000 Binary files a/Crysis2 Sounds/УДАЛЕНИЕ ЗАВЕРШЕНО.wav and /dev/null differ diff --git a/Crysis2 Sounds/УПАКОВКА ЗАВЕРШЕНА (2).wav b/Crysis2 Sounds/УПАКОВКА ЗАВЕРШЕНА (2).wav deleted file mode 100644 index 185a422..0000000 Binary files a/Crysis2 Sounds/УПАКОВКА ЗАВЕРШЕНА (2).wav and /dev/null differ diff --git a/Crysis2 Sounds/УПАКОВКА ЗАВЕРШЕНА.wav b/Crysis2 Sounds/УПАКОВКА ЗАВЕРШЕНА.wav deleted file mode 100644 index cd2ff2d..0000000 Binary files a/Crysis2 Sounds/УПАКОВКА ЗАВЕРШЕНА.wav and /dev/null differ diff --git a/Crysis2 Sounds/ФАКС ОТПРАВЛЕН.wav b/Crysis2 Sounds/ФАКС ОТПРАВЛЕН.wav deleted file mode 100644 index d92aac4..0000000 Binary files a/Crysis2 Sounds/ФАКС ОТПРАВЛЕН.wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Да сэр(второй).wav b/Jarvis Sound Pack/used/Да сэр(второй).wav deleted file mode 100644 index fd889b1..0000000 Binary files a/Jarvis Sound Pack/used/Да сэр(второй).wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Да сэр.wav b/Jarvis Sound Pack/used/Да сэр.wav deleted file mode 100644 index af80afc..0000000 Binary files a/Jarvis Sound Pack/used/Да сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Есть.wav b/Jarvis Sound Pack/used/Есть.wav deleted file mode 100644 index af33414..0000000 Binary files a/Jarvis Sound Pack/used/Есть.wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Загружаю сэр.wav b/Jarvis Sound Pack/used/Загружаю сэр.wav deleted file mode 100644 index d42baf5..0000000 Binary files a/Jarvis Sound Pack/used/Загружаю сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Запрос выполнен сэр.wav b/Jarvis Sound Pack/used/Запрос выполнен сэр.wav deleted file mode 100644 index 7e163f4..0000000 Binary files a/Jarvis Sound Pack/used/Запрос выполнен сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/К вашим услугам сэр.wav b/Jarvis Sound Pack/used/К вашим услугам сэр.wav deleted file mode 100644 index 0f438db..0000000 Binary files a/Jarvis Sound Pack/used/К вашим услугам сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Как пожелаете .wav b/Jarvis Sound Pack/used/Как пожелаете .wav deleted file mode 100644 index 9ba3794..0000000 Binary files a/Jarvis Sound Pack/used/Как пожелаете .wav and /dev/null differ diff --git a/Jarvis Sound Pack/used/Отключаю питание.wav b/Jarvis Sound Pack/used/Отключаю питание.wav deleted file mode 100644 index 103b3c4..0000000 Binary files a/Jarvis Sound Pack/used/Отключаю питание.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Включилось аварийное резервное питание.wav b/Jarvis Sound Pack/Включилось аварийное резервное питание.wav deleted file mode 100644 index b7b9965..0000000 Binary files a/Jarvis Sound Pack/Включилось аварийное резервное питание.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Восточное побережье.wav b/Jarvis Sound Pack/Восточное побережье.wav deleted file mode 100644 index c4908f4..0000000 Binary files a/Jarvis Sound Pack/Восточное побережье.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Вы создали новый элемент.wav b/Jarvis Sound Pack/Вы создали новый элемент.wav deleted file mode 100644 index 8ebd4f7..0000000 Binary files a/Jarvis Sound Pack/Вы создали новый элемент.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Выхожу на грид оракл.wav b/Jarvis Sound Pack/Выхожу на грид оракл.wav deleted file mode 100644 index 4e18a52..0000000 Binary files a/Jarvis Sound Pack/Выхожу на грид оракл.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Да, это поможет вам оставаться незамеченным.wav b/Jarvis Sound Pack/Да, это поможет вам оставаться незамеченным.wav deleted file mode 100644 index a2e6717..0000000 Binary files a/Jarvis Sound Pack/Да, это поможет вам оставаться незамеченным.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Джарвис - приветствие 2.wav b/Jarvis Sound Pack/Джарвис - приветствие 2.wav deleted file mode 100644 index 3e03046..0000000 Binary files a/Jarvis Sound Pack/Джарвис - приветствие 2.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Джарвис - приветствие.wav b/Jarvis Sound Pack/Джарвис - приветствие.wav deleted file mode 100644 index 359699a..0000000 Binary files a/Jarvis Sound Pack/Джарвис - приветствие.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Для полетов на другие планеты слелует усовершенствовать экзосистемы.wav b/Jarvis Sound Pack/Для полетов на другие планеты слелует усовершенствовать экзосистемы.wav deleted file mode 100644 index 19f408f..0000000 Binary files a/Jarvis Sound Pack/Для полетов на другие планеты слелует усовершенствовать экзосистемы.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Другой информации нет.wav b/Jarvis Sound Pack/Другой информации нет.wav deleted file mode 100644 index ca6cf3f..0000000 Binary files a/Jarvis Sound Pack/Другой информации нет.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Еще один заряд израсходован.wav b/Jarvis Sound Pack/Еще один заряд израсходован.wav deleted file mode 100644 index 0575f7b..0000000 Binary files a/Jarvis Sound Pack/Еще один заряд израсходован.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/11 %.wav b/Jarvis Sound Pack/Заряд батареи, %/11 %.wav deleted file mode 100644 index 41e2a1d..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/11 %.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/2 %.wav b/Jarvis Sound Pack/Заряд батареи, %/2 %.wav deleted file mode 100644 index c4fee76..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/2 %.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/7 %.wav b/Jarvis Sound Pack/Заряд батареи, %/7 %.wav deleted file mode 100644 index 10c25a4..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/7 %.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/Сэр, энергия 19 %.wav b/Jarvis Sound Pack/Заряд батареи, %/Сэр, энергия 19 %.wav deleted file mode 100644 index b14febb..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/Сэр, энергия 19 %.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/Энергия 13%.wav b/Jarvis Sound Pack/Заряд батареи, %/Энергия 13%.wav deleted file mode 100644 index 52c550d..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/Энергия 13%.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/Энергия 15 %.wav b/Jarvis Sound Pack/Заряд батареи, %/Энергия 15 %.wav deleted file mode 100644 index 14539dc..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/Энергия 15 %.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Заряд батареи, %/Энергия 48% и падает сэр.wav b/Jarvis Sound Pack/Заряд батареи, %/Энергия 48% и падает сэр.wav deleted file mode 100644 index f96d8bc..0000000 Binary files a/Jarvis Sound Pack/Заряд батареи, %/Энергия 48% и падает сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Импортирую установки, начинаю калибровку виртуальной среды.wav b/Jarvis Sound Pack/Импортирую установки, начинаю калибровку виртуальной среды.wav deleted file mode 100644 index c7c26a1..0000000 Binary files a/Jarvis Sound Pack/Импортирую установки, начинаю калибровку виртуальной среды.wav and /dev/null differ diff --git a/Jarvis Sound Pack/К сожалению его невозможно синтезировать.wav b/Jarvis Sound Pack/К сожалению его невозможно синтезировать.wav deleted file mode 100644 index 1dbce84..0000000 Binary files a/Jarvis Sound Pack/К сожалению его невозможно синтезировать.wav and /dev/null differ diff --git a/Jarvis Sound Pack/К сожалению устройство которое сохраняет вам жизнь в то же время убивает вас.wav b/Jarvis Sound Pack/К сожалению устройство которое сохраняет вам жизнь в то же время убивает вас.wav deleted file mode 100644 index ac7ebf1..0000000 Binary files a/Jarvis Sound Pack/К сожалению устройство которое сохраняет вам жизнь в то же время убивает вас.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Мы подключены и готовы.wav b/Jarvis Sound Pack/Мы подключены и готовы.wav deleted file mode 100644 index f918c76..0000000 Binary files a/Jarvis Sound Pack/Мы подключены и готовы.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Мы работаем над проектом сэр 2.wav b/Jarvis Sound Pack/Мы работаем над проектом сэр 2.wav deleted file mode 100644 index 264649b..0000000 Binary files a/Jarvis Sound Pack/Мы работаем над проектом сэр 2.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Начинаю автоматическую сборку.wav b/Jarvis Sound Pack/Начинаю автоматическую сборку.wav deleted file mode 100644 index 459b304..0000000 Binary files a/Jarvis Sound Pack/Начинаю автоматическую сборку.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Начинаю диагностику системы (второй).wav b/Jarvis Sound Pack/Начинаю диагностику системы (второй).wav deleted file mode 100644 index cb9931b..0000000 Binary files a/Jarvis Sound Pack/Начинаю диагностику системы (второй).wav and /dev/null differ diff --git a/Jarvis Sound Pack/Начинаю диагностику системы.wav b/Jarvis Sound Pack/Начинаю диагностику системы.wav deleted file mode 100644 index 54935c8..0000000 Binary files a/Jarvis Sound Pack/Начинаю диагностику системы.wav and /dev/null differ diff --git a/Jarvis Sound Pack/О чем я думал, обычно у нас все веселенькое.wav b/Jarvis Sound Pack/О чем я думал, обычно у нас все веселенькое.wav deleted file mode 100644 index 15c12fa..0000000 Binary files a/Jarvis Sound Pack/О чем я думал, обычно у нас все веселенькое.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Образ создан (второй).wav b/Jarvis Sound Pack/Образ создан (второй).wav deleted file mode 100644 index f3a1c2f..0000000 Binary files a/Jarvis Sound Pack/Образ создан (второй).wav and /dev/null differ diff --git a/Jarvis Sound Pack/Образ создан.wav b/Jarvis Sound Pack/Образ создан.wav deleted file mode 100644 index 88101be..0000000 Binary files a/Jarvis Sound Pack/Образ создан.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Отключаю питание, начинаю диагностику системы.wav b/Jarvis Sound Pack/Отключаю питание, начинаю диагностику системы.wav deleted file mode 100644 index 8213635..0000000 Binary files a/Jarvis Sound Pack/Отключаю питание, начинаю диагностику системы.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Отслеживание звонка не завершено.wav b/Jarvis Sound Pack/Отслеживание звонка не завершено.wav deleted file mode 100644 index ccffbfd..0000000 Binary files a/Jarvis Sound Pack/Отслеживание звонка не завершено.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Очень тонкое замечание сэр.wav b/Jarvis Sound Pack/Очень тонкое замечание сэр.wav deleted file mode 100644 index 6db6a12..0000000 Binary files a/Jarvis Sound Pack/Очень тонкое замечание сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Поздравляю сэр.wav b/Jarvis Sound Pack/Поздравляю сэр.wav deleted file mode 100644 index 6b208b2..0000000 Binary files a/Jarvis Sound Pack/Поздравляю сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Предлагаемый элемент может стать безвредной заменой палладию.wav b/Jarvis Sound Pack/Предлагаемый элемент может стать безвредной заменой палладию.wav deleted file mode 100644 index 5f1bb10..0000000 Binary files a/Jarvis Sound Pack/Предлагаемый элемент может стать безвредной заменой палладию.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Приближается мисс поттс =).wav b/Jarvis Sound Pack/Приближается мисс поттс =).wav deleted file mode 100644 index 15486f8..0000000 Binary files a/Jarvis Sound Pack/Приближается мисс поттс =).wav and /dev/null differ diff --git a/Jarvis Sound Pack/Проверка завершена.wav b/Jarvis Sound Pack/Проверка завершена.wav deleted file mode 100644 index 298e96f..0000000 Binary files a/Jarvis Sound Pack/Проверка завершена.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Район Нью-Йорка, Манхэттэн и окрестности.wav b/Jarvis Sound Pack/Район Нью-Йорка, Манхэттэн и окрестности.wav deleted file mode 100644 index 7320b88..0000000 Binary files a/Jarvis Sound Pack/Район Нью-Йорка, Манхэттэн и окрестности.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Рассказ про Ивана Ванко.wav b/Jarvis Sound Pack/Рассказ про Ивана Ванко.wav deleted file mode 100644 index 1ebf233..0000000 Binary files a/Jarvis Sound Pack/Рассказ про Ивана Ванко.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Реактор не предназначен для длительных полетов.wav b/Jarvis Sound Pack/Реактор не предназначен для длительных полетов.wav deleted file mode 100644 index 86a75da..0000000 Binary files a/Jarvis Sound Pack/Реактор не предназначен для длительных полетов.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Реактор принял модифицированное ядро.wav b/Jarvis Sound Pack/Реактор принял модифицированное ядро.wav deleted file mode 100644 index d515510..0000000 Binary files a/Jarvis Sound Pack/Реактор принял модифицированное ядро.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Сканирование макета завершено.wav b/Jarvis Sound Pack/Сканирование макета завершено.wav deleted file mode 100644 index ff1c34d..0000000 Binary files a/Jarvis Sound Pack/Сканирование макета завершено.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Создать визуальный образ по новым спецификациям.wav b/Jarvis Sound Pack/Создать визуальный образ по новым спецификациям.wav deleted file mode 100644 index 46539d8..0000000 Binary files a/Jarvis Sound Pack/Создать визуальный образ по новым спецификациям.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Сохранить его в центральной базе данных Stark Industries.wav b/Jarvis Sound Pack/Сохранить его в центральной базе данных Stark Industries.wav deleted file mode 100644 index f0a0e41..0000000 Binary files a/Jarvis Sound Pack/Сохранить его в центральной базе данных Stark Industries.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Судя по всему, использование костюма железного человека усугубляет ваше состояние.wav b/Jarvis Sound Pack/Судя по всему, использование костюма железного человека усугубляет ваше состояние.wav deleted file mode 100644 index 52a2ead..0000000 Binary files a/Jarvis Sound Pack/Судя по всему, использование костюма железного человека усугубляет ваше состояние.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Сэр, вы под прицелом, нужен обманный маневр.wav b/Jarvis Sound Pack/Сэр, вы под прицелом, нужен обманный маневр.wav deleted file mode 100644 index 4d1ec3d..0000000 Binary files a/Jarvis Sound Pack/Сэр, вы под прицелом, нужен обманный маневр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Сэр, для реальной попытки полета не просчитаны еще террабайты данных.wav b/Jarvis Sound Pack/Сэр, для реальной попытки полета не просчитаны еще террабайты данных.wav deleted file mode 100644 index 73d683d..0000000 Binary files a/Jarvis Sound Pack/Сэр, для реальной попытки полета не просчитаны еще террабайты данных.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Сэр, не будете дергаться больно не будет.wav b/Jarvis Sound Pack/Сэр, не будете дергаться больно не будет.wav deleted file mode 100644 index 86b3657..0000000 Binary files a/Jarvis Sound Pack/Сэр, не будете дергаться больно не будет.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Сэр, похоже его костюм может летать.wav b/Jarvis Sound Pack/Сэр, похоже его костюм может летать.wav deleted file mode 100644 index c53f8c3..0000000 Binary files a/Jarvis Sound Pack/Сэр, похоже его костюм может летать.wav and /dev/null differ diff --git a/Jarvis Sound Pack/У вас на исходе и время, и варианты решения проблемы.wav b/Jarvis Sound Pack/У вас на исходе и время, и варианты решения проблемы.wav deleted file mode 100644 index 76ed0cd..0000000 Binary files a/Jarvis Sound Pack/У вас на исходе и время, и варианты решения проблемы.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Я перезагрузился сэр.wav b/Jarvis Sound Pack/Я перезагрузился сэр.wav deleted file mode 100644 index 78453f3..0000000 Binary files a/Jarvis Sound Pack/Я перезагрузился сэр.wav and /dev/null differ diff --git a/Jarvis Sound Pack/Я провел симуляции со всеми известными элементами.wav b/Jarvis Sound Pack/Я провел симуляции со всеми известными элементами.wav deleted file mode 100644 index 82985d6..0000000 Binary files a/Jarvis Sound Pack/Я провел симуляции со всеми известными элементами.wav and /dev/null differ diff --git a/README.md b/README.md index 7eee37f..b655b5b 100644 --- a/README.md +++ b/README.md @@ -19,5 +19,12 @@ You can get the latest from the [official website.](https://alphacephei.com/vosk # Python version I was using Python `3.8.3`, but it should work on any newer version. +# ToDo +- Адекватная архитектура кода, собрать всё и переписать from the ground up. +- Задержка воспроизведения звука на основе реальной длительности .wav файла (прогружать при запуске?) +- Speech to intent? +- Отключать self listening protection во время воспроизведения с наушников. +- Указание из списка или по имени будет реализовано позже. + # Author (2022) Abraham Tugalov \ No newline at end of file diff --git a/_stt.py b/_stt.py deleted file mode 100644 index 870cc09..0000000 --- a/_stt.py +++ /dev/null @@ -1,60 +0,0 @@ -import torch -import sounddevice as sd -import speech_recognition as sr -import time -import numpy -from glob import glob - -device = torch.device('cpu') -model, decoder, utils = torch.hub.load(repo_or_dir='snakers4/silero-models', - model='silero_stt', - language='en', # en, ru - device=device) -(read_batch, split_into_batches, - read_audio, prepare_model_input) = utils - - -def callback(_r, audio): - try: - # CONVERT raw wav data to NumPy array - # wav_raw = audio.get_wav_data() - # data_s16 = numpy.frombuffer(wav_raw, dtype=numpy.int16, count=len(wav_raw) // 2, offset=0) - # np_audio = data_s16 * 0.5 ** 15 - - # Play it via sounddevice - #sd.play(np_audio, m.SAMPLE_RATE) - #time.sleep(len(np_audio) / m.SAMPLE_RATE) - #sd.stop() - - print("Распознание ...") - - # TODO: fix crutch, pass audio data directly as a model input of Silero STT - with open('speech.wav', 'wb') as f: - f.write(audio.get_wav_data()) - - test_files = glob('speech.wav') - batches = split_into_batches(test_files, batch_size=10) - input = prepare_model_input(read_batch(batches[0]), - device=device) - - output = model(input) - for example in output: - print(decoder(example.cpu())) - - # voice = recognizer.recognize_google(audio, language="ru-RU").lower() - # print("[log] Распознано: " + voice) - - except sr.UnknownValueError: - print("[log] Голос не распознан!") - - -# запуск -r = sr.Recognizer() -r.pause_threshold = 0.5 -m = sr.Microphone(device_index=1) - -with m as source: - r.adjust_for_ambient_noise(source) - -stop_listening = r.listen_in_background(m, callback) -while True: time.sleep(0.1) diff --git a/commands.yaml b/commands.yaml new file mode 100644 index 0000000..dc191dc --- /dev/null +++ b/commands.yaml @@ -0,0 +1,157 @@ +gaming_mode_off: +- рабочий режим +- вернись в рабочий режим +- переключись на компьютер +- обратно на компьютер +- отключи игровой режим +- выйди из игрового режима +- вернись на компьютер +- выход с игрового режима +- рабочее пространство +- вернись в игровой режим +- выключи игровой режим +gaming_mode_on: +- включи игровой режим +- перейди в игровой режим +- я хочу поиграть +- переключись на телевизор +music: +- давай музыку +- музыка +- яндекс музыка +- включи музыку +- открой музыку +- послушаем музыку +- хочу музыку +- врубай музло +- включи что-то послушать +- давай что-то послушаем +music_next: +- следующий трек +- следующая мелодия +- следующая песня +- переключи трек +- переключи музыку +- переключи мелодию +- переключи песню +- следующая музыка +music_off: +- выключи музыку +- отруби музыку +- убери музыку +- отключи музыку +- закрой музыку +- останови музыку +- хватит музыки +music_prev: +- предыдущая музыка +- предыдущий трек +- предыдущая мелодия +- предыдущая песня +- верни трек +- верни мелодию +- верни песню +- верни прошлый трек +- верни прошлую мелодию +- верни прошлую песню +- верни прошлую музыку +- верни то что играло +- давай предыдущий трек +- переключи музыку обратно +- переключи на прошлый трек +- переключи на прошлую мелодию +- переключи на прошлую песню +music_save: +- сохрани трек +- мне нравится трек +- сохрани песню +- мне нравится песня +- добавь трек в избранное +- добавь песню в избранное +- запомни мелодию +- запомни трек +- запомни песню +- добавь мелодию в избранное +- сохрани то что сейчас играет +- добавь то что сейчас играет в избранное +- лайкни трек +- лайкни мелодию +- лайкни песню +'off': +- выключись +- вырубись +- завершить работу +- закройся +- отключись +- заверши свою работу +- на сегодня хватит +- выгрузи себя из памяти +- ты мне надоел +- пора спать +open_browser: +- открой браузер +- запусти браузер +- открой гугл хром +- гугл хром +open_google: +- открой гугл +- гугл +- запусти гугл +open_youtube: +- открой ютуб +- ютуб +- запусти ютуб +sound_off: +- выключи звук +- беззвучный режим +- режим без звука +- отключи звук +sound_on: +- включи звук +- режим со звуком +- верни звук +stupid: +- ты дурак +- ты дебил +- ты глупый +- ты тупой +switch_to_dynamics: +- переключи на динамики +- включи динамики +- перейди на динамики +- давай звук в динамики +- давай звук на динамики +- переключи звук в динамики +- переключи звук на динамики +- переключи на колонки +- включи колонки +- перейди на колонки +- давай звук в колонки +- давай звук на колонки +- переключи звук в колонки +- переключи звук на колонки +switch_to_headphones: +- переключи на наушники +- включи наушники +- перейди на наушники +- давай звук в наушники +- давай звук на наушники +- переключи звук в наушники +- переключи звук на наушники +- переключи на кракены +- включи кракены +- перейди на кракены +- давай звук в кракены +- давай звук на кракены +- переключи звук в кракены +- переключи звук на кракены +thanks: +- спасибо +- молодец +- респект +- ты супер +- отличная работа +- ты крут +- ты большой молодец +- ты реально крут +- ты афигенный \ No newline at end of file diff --git a/config.py b/config.py index 4f111cc..cac005f 100644 --- a/config.py +++ b/config.py @@ -1,49 +1,24 @@ +from dotenv import load_dotenv +import os + +# Find .env file with os variables +load_dotenv("dev.env") + +# Конфигурация VA_NAME = 'Jarvis' - VA_VER = "3.0" +VA_ALIAS = ('джарвис',) +VA_TBR = ('скажи', 'покажи', 'ответь', 'произнеси', 'расскажи', 'сколько', 'слушай') -VA_ALIAS = ('джарвис', 'кеша', 'кеш', 'инокентий', 'иннокентий', 'кишун', 'киш', 'кишаня', 'кешечка', 'кэш', 'кэша') - -VA_TBR = ('скажи', 'покажи', 'ответь', 'произнеси', 'расскажи', 'сколько') - -MICROPHONE_INDEX = 0 # ID микрофона (можете просто менять ID пока при запуске не отобразится нужный) +# ID микрофона (можете просто менять ID пока при запуске не отобразится нужный) +# -1 это стандартное записывающее устройство +MICROPHONE_INDEX = -1 +# Путь к браузеру Google Chrome CHROME_PATH = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' -PICOVOICE_TOKEN = "<ТУТ ТОКЕН PICOVOICE>" +# Токен Picovoice +PICOVOICE_TOKEN = os.getenv('PICOVOICE_TOKEN') -OPENAI_TOKEN = "<ТУТ ТОКЕН CHAT-GPT>" - -VA_CMD_LIST = { - "open_browser": ('открой браузер', 'запусти браузер', 'открой гугл хром', 'гугл хром'), - "open_youtube": ('открой ютуб', 'ютуб', 'запусти ютуб'), - "open_google": ('открой гугл', 'гугл', 'запусти гугл'), - - "sound_off": ('выключи звук', 'беззвучный режим', 'режим без звука', 'отключи звук'), - "sound_on": ('включи звук', 'режим со звуком', 'верни звук'), - - "thanks": ('спасибо', 'молодец', 'респект', 'ты супер', 'отличная работа', 'ты крут', 'ты большой молодец', 'ты реально крут', 'ты афигенный'), - - "stupid": ('ты дурак', 'ты дебил', 'ты глупый', 'ты тупой'), - - "gaming_mode_off": ("рабочий режим", "вернись в рабочий режим", "переключись на компьютер", "обратно на компьютер", "отключи игровой режим", "выйди из игрового режима", "вернись на компьютер", "выход с игрового режима", "рабочее пространство", "вернись в игровой режим", "выключи игровой режим"), - "gaming_mode_on": ("включи игровой режим", "перейди в игровой режим", "я хочу поиграть", "переключись на телевизор"), - - "music": ('давай музыку', 'музыка', "яндекс музыка", "включи музыку", "открой музыку", "послушаем музыку", "хочу музыку", "врубай музло", "включи что-то послушать", "давай что-то послушаем"), - "music_off": ('выключи музыку', 'отруби музыку', 'убери музыку', 'отключи музыку', 'закрой музыку', 'останови музыку', 'хватит музыки'), - "music_save": ('сохрани трек', 'мне нравится трек', 'сохрани песню', 'мне нравится песня', 'добавь трек в избранное', 'добавь песню в избранное', 'запомни мелодию', 'запомни трек', 'запомни песню', 'добавь мелодию в избранное', 'сохрани то что сейчас играет', 'добавь то что сейчас играет в избранное', 'лайкни трек', 'лайкни мелодию', 'лайкни песню'), - - "music_next": ('следующий трек', "следующая мелодия", "следующая песня", "переключи трек", "переключи музыку", "переключи мелодию", "переключи песню", "следующая музыка"), - "music_prev": ('предыдущая музыка', 'предыдущий трек', "предыдущая мелодия", "предыдущая песня", "верни трек", "верни мелодию", "верни песню", "верни прошлый трек", "верни прошлую мелодию", "верни прошлую песню", "верни прошлую музыку", "верни то что играло", "давай предыдущий трек", "переключи музыку обратно", "переключи на прошлый трек", "переключи на прошлую мелодию", "переключи на прошлую песню"), - - "switch_to_headphones": ('переключи на наушники', 'включи наушники', 'перейди на наушники', 'давай звук в наушники', 'давай звук на наушники', 'переключи звук в наушники', 'переключи звук на наушники', - 'переключи на кракены', 'включи кракены', 'перейди на кракены', 'давай звук в кракены', 'давай звук на кракены', 'переключи звук в кракены', 'переключи звук на кракены'), - "switch_to_dynamics": ('переключи на динамики', 'включи динамики', 'перейди на динамики', 'давай звук в динамики', 'давай звук на динамики', 'переключи звук в динамики', 'переключи звук на динамики', - 'переключи на колонки', 'включи колонки', 'перейди на колонки', 'давай звук в колонки', 'давай звук на колонки', 'переключи звук в колонки', 'переключи звук на колонки'), - - "off": ('выключись', "вырубись", "завершить работу", "закройся", "отключись", "заверши свою работу", "на сегодня хватит", "выгрузи себя из памяти", "ты мне надоел", "пора спать"), - - # "help": ('список команд', 'команды', 'что ты умеешь', 'твои навыки', 'навыки'), - # "ctime": ('время', 'текущее время', 'сейчас времени', 'который час'), - # "joke": ('расскажи анекдот', 'рассмеши', 'шутка', 'расскажи шутку', 'пошути', 'развесели') -} \ No newline at end of file +# Токен OpenAI +OPENAI_TOKEN = os.getenv('OPENAI_TOKEN') diff --git a/dev.env b/dev.env new file mode 100644 index 0000000..8c01669 --- /dev/null +++ b/dev.env @@ -0,0 +1,2 @@ +PICOVOICE_TOKEN=Hl7tfFyDT+S6fLhcT2nngK2qXsbhAwMsrVVp0Y9G0A2IfLlsPTm9eg== +OPENAI_TOKEN=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 \ No newline at end of file diff --git a/latest_silero_models.yml b/latest_silero_models.yml deleted file mode 100644 index 79b0281..0000000 --- a/latest_silero_models.yml +++ /dev/null @@ -1,507 +0,0 @@ -# pre-trained STT models -stt_models: - en: - latest: - meta: - name: "en_v6" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit: "https://models.silero.ai/models/en/en_v6.jit" - onnx: "https://models.silero.ai/models/en/en_v5.onnx" - jit_q: "https://models.silero.ai/models/en/en_v6_q.jit" - jit_xlarge: "https://models.silero.ai/models/en/en_v6_xlarge.jit" - onnx_xlarge: "https://models.silero.ai/models/en/en_v6_xlarge.onnx" - v6: - meta: - name: "en_v6" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit: "https://models.silero.ai/models/en/en_v6.jit" - onnx: "https://models.silero.ai/models/en/en_v5.onnx" - jit_q: "https://models.silero.ai/models/en/en_v6_q.jit" - jit_xlarge: "https://models.silero.ai/models/en/en_v6_xlarge.jit" - onnx_xlarge: "https://models.silero.ai/models/en/en_v6_xlarge.onnx" - v5: - meta: - name: "en_v5" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit: "https://models.silero.ai/models/en/en_v5.jit" - onnx: "https://models.silero.ai/models/en/en_v5.onnx" - onnx_q: "https://models.silero.ai/models/en/en_v5_q.onnx" - jit_q: "https://models.silero.ai/models/en/en_v5_q.jit" - jit_xlarge: "https://models.silero.ai/models/en/en_v5_xlarge.jit" - onnx_xlarge: "https://models.silero.ai/models/en/en_v5_xlarge.onnx" - v4_0: - meta: - name: "en_v4_0" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit_large: "https://models.silero.ai/models/en/en_v4_0_jit_large.model" - onnx_large: "https://models.silero.ai/models/en/en_v4_0_large.onnx" - v3: - meta: - name: "en_v3" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit: "https://models.silero.ai/models/en/en_v3_jit.model" - onnx: "https://models.silero.ai/models/en/en_v3.onnx" - jit_q: "https://models.silero.ai/models/en/en_v3_jit_q.model" - jit_skip: "https://models.silero.ai/models/en/en_v3_jit_skips.model" - jit_large: "https://models.silero.ai/models/en/en_v3_jit_large.model" - onnx_large: "https://models.silero.ai/models/en/en_v3_large.onnx" - jit_xsmall: "https://models.silero.ai/models/en/en_v3_jit_xsmall.model" - jit_q_xsmall: "https://models.silero.ai/models/en/en_v3_jit_q_xsmall.model" - onnx_xsmall: "https://models.silero.ai/models/en/en_v3_xsmall.onnx" - v2: - meta: - name: "en_v2" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit: "https://models.silero.ai/models/en/en_v2_jit.model" - onnx: "https://models.silero.ai/models/en/en_v2.onnx" - tf: "https://models.silero.ai/models/en/en_v2_tf.tar.gz" - v1: - meta: - name: "en_v1" - sample: "https://models.silero.ai/examples/en_sample.wav" - labels: "https://models.silero.ai/models/en/en_v1_labels.json" - jit: "https://models.silero.ai/models/en/en_v1_jit.model" - onnx: "https://models.silero.ai/models/en/en_v1.onnx" - tf: "https://models.silero.ai/models/en/en_v1_tf.tar.gz" - de: - latest: - meta: - name: "de_v1" - sample: "https://models.silero.ai/examples/de_sample.wav" - labels: "https://models.silero.ai/models/de/de_v1_labels.json" - jit: "https://models.silero.ai/models/de/de_v1_jit.model" - onnx: "https://models.silero.ai/models/de/de_v1.onnx" - tf: "https://models.silero.ai/models/de/de_v1_tf.tar.gz" - v1: - meta: - name: "de_v1" - sample: "https://models.silero.ai/examples/de_sample.wav" - labels: "https://models.silero.ai/models/de/de_v1_labels.json" - jit_large: "https://models.silero.ai/models/de/de_v1_jit.model" - onnx: "https://models.silero.ai/models/de/de_v1.onnx" - tf: "https://models.silero.ai/models/de/de_v1_tf.tar.gz" - v3: - meta: - name: "de_v3" - sample: "https://models.silero.ai/examples/de_sample.wav" - labels: "https://models.silero.ai/models/de/de_v1_labels.json" - jit_large: "https://models.silero.ai/models/de/de_v3_large.jit" - v4: - meta: - name: "de_v4" - sample: "https://models.silero.ai/examples/de_sample.wav" - labels: "https://models.silero.ai/models/de/de_v1_labels.json" - jit_large: "https://models.silero.ai/models/de/de_v4_large.jit" - onnx_large: "https://models.silero.ai/models/de/de_v4_large.onnx" - es: - latest: - meta: - name: "es_v1" - sample: "https://models.silero.ai/examples/es_sample.wav" - labels: "https://models.silero.ai/models/es/es_v1_labels.json" - jit: "https://models.silero.ai/models/es/es_v1_jit.model" - onnx: "https://models.silero.ai/models/es/es_v1.onnx" - tf: "https://models.silero.ai/models/es/es_v1_tf.tar.gz" - ua: - latest: - meta: - name: "ua_v3" - sample: "https://models.silero.ai/examples/ua_sample.wav" - credits: - datasets: - speech-recognition-uk: https://github.com/egorsmkv/speech-recognition-uk - labels: "https://models.silero.ai/models/ua/ua_v1_labels.json" - jit: "https://models.silero.ai/models/ua/ua_v3_jit.model" - jit_q: "https://models.silero.ai/models/ua/ua_v3_jit_q.model" - onnx: "https://models.silero.ai/models/ua/ua_v3.onnx" - v3: - meta: - name: "ua_v3" - sample: "https://models.silero.ai/examples/ua_sample.wav" - credits: - datasets: - speech-recognition-uk: https://github.com/egorsmkv/speech-recognition-uk - labels: "https://models.silero.ai/models/ua/ua_v1_labels.json" - jit: "https://models.silero.ai/models/ua/ua_v3_jit.model" - jit_q: "https://models.silero.ai/models/ua/ua_v3_jit_q.model" - onnx: "https://models.silero.ai/models/ua/ua_v3.onnx" - v1: - meta: - name: "ua_v1" - sample: "https://models.silero.ai/examples/ua_sample.wav" - credits: - datasets: - speech-recognition-uk: https://github.com/egorsmkv/speech-recognition-uk - labels: "https://models.silero.ai/models/ua/ua_v1_labels.json" - jit: "https://models.silero.ai/models/ua/ua_v1_jit.model" - jit_q: "https://models.silero.ai/models/ua/ua_v1_jit_q.model" -tts_models: - ru: - ru_v3: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/ru_v3.pt' - sample_rate: [8000, 24000, 48000] - aidar_v2: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/v2_aidar.pt' - sample_rate: [8000, 16000] - aidar_8khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_aidar_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_aidar_8000.jit' - sample_rate: 8000 - aidar_16khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_aidar_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_aidar_16000.jit' - sample_rate: 16000 - baya_v2: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/v2_baya.pt' - sample_rate: [8000, 16000] - baya_8khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_baya_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_baya_8000.jit' - sample_rate: 8000 - baya_16khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_baya_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_baya_16000.jit' - sample_rate: 16000 - irina_v2: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/v2_irina.pt' - sample_rate: [8000, 16000] - irina_8khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_irina_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_irina_8000.jit' - sample_rate: 8000 - irina_16khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_irina_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_irina_16000.jit' - sample_rate: 16000 - kseniya_v2: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/v2_kseniya.pt' - sample_rate: [8000, 16000] - kseniya_8khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_kseniya_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_kseniya_8000.jit' - sample_rate: 8000 - kseniya_16khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_kseniya_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_kseniya_16000.jit' - sample_rate: 16000 - natasha_v2: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/v2_natasha.pt' - sample_rate: [8000, 16000] - natasha_8khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_natasha_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_natasha_8000.jit' - sample_rate: 8000 - natasha_16khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_natasha_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_natasha_16000.jit' - sample_rate: 16000 - ruslan_v2: - latest: - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - package: 'https://models.silero.ai/models/tts/ru/v2_ruslan.pt' - sample_rate: [8000, 16000] - ruslan_8khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_ruslan_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_ruslan_8000.jit' - sample_rate: 8000 - ruslan_16khz: - latest: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_ruslan_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~абвгдеёжзийклмнопрстуфхцчшщъыьэюя +.,!?…:;–' - example: 'В н+едрах т+ундры в+ыдры в г+етрах т+ырят в в+ёдра +ядра к+едров.' - jit: 'https://models.silero.ai/models/tts/ru/v1_ruslan_16000.jit' - sample_rate: 16000 - en: - lj_v2: - latest: - example: 'Can you can a canned can into an un-canned can like a canner can can a canned can into an un-canned can?' - package: 'https://models.silero.ai/models/tts/en/v2_lj.pt' - sample_rate: [8000, 16000] - lj_8khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyz .,!?…:;–' - example: 'Can you can a canned can into an un-canned can like a canner can can a canned can into an un-canned can?' - jit: 'https://models.silero.ai/models/tts/en/v1_lj_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyz .,!?…:;–' - example: 'Can you can a canned can into an un-canned can like a canner can can a canned can into an un-canned can?' - jit: 'https://models.silero.ai/models/tts/en/v1_lj_8000.jit' - sample_rate: 8000 - lj_16khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyz .,!?…:;–' - example: 'Can you can a canned can into an un-canned can like a canner can can a canned can into an un-canned can?' - jit: 'https://models.silero.ai/models/tts/en/v1_lj_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyz .,!?…:;–' - example: 'Can you can a canned can into an un-canned can like a canner can can a canned can into an un-canned can?' - jit: 'https://models.silero.ai/models/tts/en/v1_lj_16000.jit' - sample_rate: 16000 - de: - thorsten_v2: - latest: - example: 'Fischers Fritze fischt frische Fische, Frische Fische fischt Fischers Fritze.' - package: 'https://models.silero.ai/models/tts/de/v2_thorsten.pt' - sample_rate: [8000, 16000] - thorsten_8khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyzäöüß .,!?…:;–' - example: 'Fischers Fritze fischt frische Fische, Frische Fische fischt Fischers Fritze.' - jit: 'https://models.silero.ai/models/tts/de/v1_thorsten_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyzäöüß .,!?…:;–' - example: 'Fischers Fritze fischt frische Fische, Frische Fische fischt Fischers Fritze.' - jit: 'https://models.silero.ai/models/tts/de/v1_thorsten_8000.jit' - sample_rate: 8000 - thorsten_16khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyzäöüß .,!?…:;–' - example: 'Fischers Fritze fischt frische Fische, Frische Fische fischt Fischers Fritze.' - jit: 'https://models.silero.ai/models/tts/de/v1_thorsten_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyzäöüß .,!?…:;–' - example: 'Fischers Fritze fischt frische Fische, Frische Fische fischt Fischers Fritze.' - jit: 'https://models.silero.ai/models/tts/de/v1_thorsten_16000.jit' - sample_rate: 16000 - es: - tux_v2: - latest: - example: 'Hoy ya es ayer y ayer ya es hoy, ya llegó el día, y hoy es hoy.' - package: 'https://models.silero.ai/models/tts/es/v2_tux.pt' - sample_rate: [8000, 16000] - tux_8khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyzáéíñóú .,!?…:;–¡¿' - example: 'Hoy ya es ayer y ayer ya es hoy, ya llegó el día, y hoy es hoy.' - jit: 'https://models.silero.ai/models/tts/es/v1_tux_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyzáéíñóú .,!?…:;–¡¿' - example: 'Hoy ya es ayer y ayer ya es hoy, ya llegó el día, y hoy es hoy.' - jit: 'https://models.silero.ai/models/tts/es/v1_tux_8000.jit' - sample_rate: 8000 - tux_16khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyzáéíñóú .,!?…:;–¡¿' - example: 'Hoy ya es ayer y ayer ya es hoy, ya llegó el día, y hoy es hoy.' - jit: 'https://models.silero.ai/models/tts/es/v1_tux_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyzáéíñóú .,!?…:;–¡¿' - example: 'Hoy ya es ayer y ayer ya es hoy, ya llegó el día, y hoy es hoy.' - jit: 'https://models.silero.ai/models/tts/es/v1_tux_16000.jit' - sample_rate: 16000 - fr: - gilles_v2: - latest: - example: 'Je suis ce que je suis, et si je suis ce que je suis, qu’est ce que je suis.' - package: 'https://models.silero.ai/models/tts/fr/v2_gilles.pt' - sample_rate: [8000, 16000] - gilles_8khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyzéàèùâêîôûç .,!?…:;–' - example: 'Je suis ce que je suis, et si je suis ce que je suis, qu’est ce que je suis.' - jit: 'https://models.silero.ai/models/tts/fr/v1_gilles_8000.jit' - sample_rate: 8000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyzéàèùâêîôûç .,!?…:;–' - example: 'Je suis ce que je suis, et si je suis ce que je suis, qu’est ce que je suis.' - jit: 'https://models.silero.ai/models/tts/fr/v1_gilles_8000.jit' - sample_rate: 8000 - gilles_16khz: - latest: - tokenset: '_~abcdefghijklmnopqrstuvwxyzéàèùâêîôûç .,!?…:;–' - example: 'Je suis ce que je suis, et si je suis ce que je suis, qu’est ce que je suis.' - jit: 'https://models.silero.ai/models/tts/fr/v1_gilles_16000.jit' - sample_rate: 16000 - v1: - tokenset: '_~abcdefghijklmnopqrstuvwxyzéàèùâêîôûç .,!?…:;–' - example: 'Je suis ce que je suis, et si je suis ce que je suis, qu’est ce que je suis.' - jit: 'https://models.silero.ai/models/tts/fr/v1_gilles_16000.jit' - sample_rate: 16000 - ba: - aigul_v2: - latest: - example: 'Салауат Юлаевтың тормошо һәм яҙмышы хаҡындағы документтарҙың һәм шиғри әҫәрҙәренең бик аҙ өлөшө генә һаҡланған.' - package: 'https://models.silero.ai/models/tts/ba/v2_aigul.pt' - sample_rate: [8000, 16000] - language_name: 'bashkir' - xal: - erdni_v2: - latest: - example: 'Һорвн, дөрвн күн ирәд, һазань чиңгнв. Байн Цецн хаана һорвн көвүн күүндҗәнә.' - package: 'https://models.silero.ai/models/tts/xal/v2_erdni.pt' - sample_rate: [8000, 16000] - language_name: 'kalmyk' - tt: - dilyara_v2: - latest: - example: 'Ис+әнмесез, с+аумысез, нишл+әп кәҗәгезн+е с+аумыйсыз, әтәчег+ез күк+әй салг+ан, нишл+әп чыг+ып +алмыйсыз.' - package: 'https://models.silero.ai/models/tts/tt/v2_dilyara.pt' - sample_rate: [8000, 16000] - language_name: 'tatar' - uz: - dilnavoz_v2: - latest: - example: 'Tanishganimdan xursandman.' - package: 'https://models.silero.ai/models/tts/uz/v2_dilnavoz.pt' - sample_rate: [8000, 16000] - language_name: 'uzbek' - ua: - mykyta_v2: - latest: - example: 'К+отики - пухн+асті жив+отики.' - package: 'https://models.silero.ai/models/tts/ua/v22_mykyta_48k.pt' - sample_rate: [8000, 24000, 48000] - language_name: 'ukrainian' - multi: - multi_v2: - latest: - package: 'https://models.silero.ai/models/tts/multi/v2_multi.pt' - sample_rate: [8000, 16000] - speakers: - aidar: - lang: 'ru' - example: 'Съ+ешьте ещ+ё +этих м+ягких франц+узских б+улочек, д+а в+ыпейте ч+аю.' - baya: - lang: 'ru' - example: 'Съ+ешьте ещ+ё +этих м+ягких франц+узских б+улочек, д+а в+ыпейте ч+аю.' - kseniya: - lang: 'ru' - example: 'Съ+ешьте ещ+ё +этих м+ягких франц+узских б+улочек, д+а в+ыпейте ч+аю.' - irina: - lang: 'ru' - example: 'Съ+ешьте ещ+ё +этих м+ягких франц+узских б+улочек, д+а в+ыпейте ч+аю.' - ruslan: - lang: 'ru' - example: 'Съ+ешьте ещ+ё +этих м+ягких франц+узских б+улочек, д+а в+ыпейте ч+аю.' - natasha: - lang: 'ru' - example: 'Съ+ешьте ещ+ё +этих м+ягких франц+узских б+улочек, д+а в+ыпейте ч+аю.' - thorsten: - lang: 'de' - example: 'Fischers Fritze fischt frische Fische, Frische Fische fischt Fischers Fritze.' - tux: - lang: 'es' - example: 'Hoy ya es ayer y ayer ya es hoy, ya llegó el día, y hoy es hoy.' - gilles: - lang: 'fr' - example: 'Je suis ce que je suis, et si je suis ce que je suis, qu’est ce que je suis.' - lj: - lang: 'en' - example: 'Can you can a canned can into an un-canned can like a canner can can a canned can into an un-canned can?' - dilyara: - lang: 'tt' - example: 'Пес+и пес+и песик+әй, борыннар+ы бәләк+әй.' -te_models: - latest: - package: "https://models.silero.ai/te_models/v2_4lang_q.pt" - languages: ['en', 'de', 'ru', 'es'] - punct: '.,-!?—' - v2: - package: "https://models.silero.ai/te_models/v2_4lang_q.pt" - languages: ['en', 'de', 'ru', 'es'] - punct: '.,-!?—' diff --git a/main.py b/main.py index 88fbb1c..1f0e408 100644 --- a/main.py +++ b/main.py @@ -1,52 +1,36 @@ -# КЕША 3.0 (aka Jarvis) -""" - ВНИМАНИЕ!!! - Пока что это максимально сырой прототип. - Позже будет опубликована нормальная версия с удобной установкой и поддержкой всего чего только можно. - А пока что, код ниже к вашим услугам, сэр :) - - @TODO: - 0. Адекватная архитектура кода, собрать всё и переписать from the ground up. - 1. Задержка воспроизведения звука на основе реальной длительности .wav файла (прогружать при запуске?) - 2. Speech to intent? - 3. Отключать self listening protection во время воспроизведения с наушников. - 4. Указание из списка или по имени будет реализовано позже. -""" - +import datetime +import json import os +import queue import random +import struct +import subprocess +import sys +import time +from ctypes import POINTER, cast +import openai import pvporcupine import simpleaudio as sa -from pvrecorder import PvRecorder -from rich import print import vosk -import sys -import queue -import json -import struct -import config +import yaml +from comtypes import CLSCTX_ALL from fuzzywuzzy import fuzz -import tts -import datetime -from num2t4ru import num2text -import subprocess -import time - -from ctypes import POINTER, cast -from comtypes import CLSCTX_ALL, COMObject +from pvrecorder import PvRecorder from pycaw.pycaw import ( AudioUtilities, IAudioEndpointVolume ) +from rich import print -import openai -from gpytranslate import SyncTranslator +import config +import tts +# some consts CDIR = os.getcwd() - -# init translator -t = SyncTranslator() +VA_CMD_LIST = yaml.safe_load( + open('commands.yaml', 'rt', encoding='utf8'), +) # init openai openai.api_key = config.OPENAI_TOKEN @@ -68,12 +52,11 @@ q = queue.Queue() def gpt_answer(message): - model_engine = "text-davinci-003" - max_tokens = 128 # default 1024 - prompt = t.translate(message, targetlang="en") + model_engine = "gpt-3.5-turbo" + max_tokens = 256 # default 1024 completion = openai.Completion.create( engine=model_engine, - prompt=prompt.text, + prompt=message, max_tokens=max_tokens, temperature=0.5, top_p=1, @@ -81,8 +64,7 @@ def gpt_answer(message): presence_penalty=0 ) - translated_result = t.translate(completion.choices[0].text, targetlang="ru") - return translated_result.text + return completion.choices[0].text # play(f'{CDIR}\\sound\\ok{random.choice([1, 2, 3, 4])}.wav') @@ -90,7 +72,7 @@ def play(phrase, wait_done=True): global recorder filename = f"{CDIR}\\sound\\" - if phrase == "greet": # for py 3.8 + if phrase == "greet": # for py 3.8 filename += f"greet{random.choice([1, 2, 3])}.wav" elif phrase == "ok": filename += f"ok{random.choice([1, 2, 3])}.wav" @@ -111,13 +93,13 @@ def play(phrase, wait_done=True): recorder.stop() wave_obj = sa.WaveObject.from_wave_file(filename) - wave_obj.play() + play_obj = wave_obj.play() if wait_done: - # play_obj.wait_done() + play_obj.wait_done() # time.sleep((len(wave_obj.audio_data) / wave_obj.sample_rate) + 0.5) # print("END") - time.sleep(0.8) + # time.sleep(0.5) recorder.start() @@ -137,7 +119,7 @@ def va_respond(voice: str): if len(cmd['cmd'].strip()) <= 0: return False - elif cmd['percent'] < 70 or cmd['cmd'] not in config.VA_CMD_LIST.keys(): + elif cmd['percent'] < 70 or cmd['cmd'] not in VA_CMD_LIST.keys(): # play("not_found") # tts.va_speak("Что?") if fuzz.ratio(voice.join(voice.split()[:1]).strip(), "скажи") > 75: @@ -171,7 +153,7 @@ def filter_cmd(raw_voice: str): def recognize_cmd(cmd: str): rc = {'cmd': '', 'percent': 0} - for c, v in config.VA_CMD_LIST.items(): + for c, v in VA_CMD_LIST.items(): for x in v: vrt = fuzz.ratio(cmd, x) @@ -183,30 +165,7 @@ def recognize_cmd(cmd: str): def execute_cmd(cmd: str, voice: str): - if cmd == 'help': - # help - text = "Я умею: ..." - text += "произносить время ..." - text += "рассказывать анекдоты ..." - text += "и открывать браузер" - tts.va_speak(text) - pass - elif cmd == 'ctime': - # current time - now = datetime.datetime.now() - text = "Сейч+ас " + num2text(now.hour) + " " + num2text(now.minute) - tts.va_speak(text) - - elif cmd == 'joke': - jokes = ['Как смеются программисты? ... ехе ехе ехе', - 'ЭсКьюЭль запрос заходит в бар, подходит к двум столам и спрашивает .. «м+ожно присоединиться?»', - 'Программист это машина для преобразования кофе в код'] - - play("ok", True) - - tts.va_speak(random.choice(jokes)) - - elif cmd == 'open_browser': + if cmd == 'open_browser': subprocess.Popen([f'{CDIR}\\custom-commands\\Run browser.exe']) play("ok") diff --git a/main_old.py b/main_old.py deleted file mode 100644 index fb0ae65..0000000 --- a/main_old.py +++ /dev/null @@ -1,81 +0,0 @@ -# КЕША 2.0 - -import config -import stt -import tts -from fuzzywuzzy import fuzz -import datetime -from num2t4ru import num2text -import webbrowser -import random - - -print(f"{config.VA_NAME} (v{config.VA_VER}) начал свою работу ...") - - -def va_respond(voice: str): - print(voice) - if voice.startswith(config.VA_ALIAS): - # обращаются к ассистенту - cmd = recognize_cmd(filter_cmd(voice)) - - if cmd['cmd'] not in config.VA_CMD_LIST.keys(): - tts.va_speak("Что?") - else: - execute_cmd(cmd['cmd']) - - -def filter_cmd(raw_voice: str): - cmd = raw_voice - - for x in config.VA_ALIAS: - cmd = cmd.replace(x, "").strip() - - for x in config.VA_TBR: - cmd = cmd.replace(x, "").strip() - - return cmd - - -def recognize_cmd(cmd: str): - rc = {'cmd': '', 'percent': 0} - for c, v in config.VA_CMD_LIST.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: str): - if cmd == 'help': - # help - text = "Я умею: ..." - text += "произносить время ..." - text += "рассказывать анекдоты ..." - text += "и открывать браузер" - tts.va_speak(text) - pass - elif cmd == 'ctime': - # current time - now = datetime.datetime.now() - text = "Сейч+ас " + num2text(now.hour) + " " + num2text(now.minute) - tts.va_speak(text) - - elif cmd == 'joke': - jokes = ['Как смеются программисты? ... ехе ехе ехе', - 'ЭсКьюЭль запрос заходит в бар, подходит к двум столам и спрашивает .. «м+ожно присоединиться?»', - 'Программист это машина для преобразования кофе в код'] - - tts.va_speak(random.choice(jokes)) - - elif cmd == 'open_browser': - chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' - webbrowser.get(chrome_path).open("http://python.org") - - -# начать прослушивание команд -stt.va_listen(va_respond) \ No newline at end of file diff --git a/model_small/README b/model_small/README new file mode 100644 index 0000000..f5d35ea --- /dev/null +++ b/model_small/README @@ -0,0 +1,8 @@ +Small Russian model for Vosk (Android, RPi, other small devices) + +%WER 22.71 [ 9092 / 40042, 1124 ins, 1536 del, 6432 sub ] exp/chain_a/tdnn/decode_test_audiobooks_look_fast/wer_10_0.0 +%WER 11.79 [ 5940 / 50394, 894 ins, 832 del, 4214 sub ] exp/chain_a/tdnn/decode_test_golos_crowd_look_fast/wer_11_0.0 +%WER 21.34 [ 1789 / 8382, 173 ins, 440 del, 1176 sub ] exp/chain_a/tdnn/decode_test_golos_farfield_look_fast/wer_10_0.0 +%WER 29.89 [ 5579 / 18666, 476 ins, 1550 del, 3553 sub ] exp/chain_a/tdnn/decode_test_sova_devices_look_fast/wer_10_0.0 +%WER 31.97 [ 13588 / 42496, 1013 ins, 3640 del, 8935 sub ] exp/chain_a/tdnn/decode_test_youtube_look_fast/wer_9_0.0 + diff --git a/model_small/am/final.mdl b/model_small/am/final.mdl new file mode 100644 index 0000000..8978dba Binary files /dev/null and b/model_small/am/final.mdl differ diff --git a/model_small/conf/mfcc.conf b/model_small/conf/mfcc.conf new file mode 100644 index 0000000..eaa40c5 --- /dev/null +++ b/model_small/conf/mfcc.conf @@ -0,0 +1,7 @@ +--sample-frequency=16000 +--use-energy=false +--num-mel-bins=40 +--num-ceps=40 +--low-freq=20 +--high-freq=7600 +--allow-downsample=true diff --git a/model_small/conf/model.conf b/model_small/conf/model.conf new file mode 100644 index 0000000..64bc89e --- /dev/null +++ b/model_small/conf/model.conf @@ -0,0 +1,10 @@ +--min-active=200 +--max-active=3000 +--beam=10.0 +--lattice-beam=2.0 +--acoustic-scale=1.0 +--frame-subsampling-factor=3 +--endpoint.silence-phones=1:2:3:4:5:6:7:8:9:10 +--endpoint.rule2.min-trailing-silence=0.5 +--endpoint.rule3.min-trailing-silence=1.0 +--endpoint.rule4.min-trailing-silence=2.0 diff --git a/Jarvis Sound Pack/Джарвис - приветствие (Песня целиком).wav b/model_small/graph/Gr.fst similarity index 69% rename from Jarvis Sound Pack/Джарвис - приветствие (Песня целиком).wav rename to model_small/graph/Gr.fst index 59c70df..3952cc6 100644 Binary files a/Jarvis Sound Pack/Джарвис - приветствие (Песня целиком).wav and b/model_small/graph/Gr.fst differ diff --git a/model_small/graph/HCLr.fst b/model_small/graph/HCLr.fst new file mode 100644 index 0000000..373f12f Binary files /dev/null and b/model_small/graph/HCLr.fst differ diff --git a/model_small/graph/disambig_tid.int b/model_small/graph/disambig_tid.int new file mode 100644 index 0000000..8294520 --- /dev/null +++ b/model_small/graph/disambig_tid.int @@ -0,0 +1,5 @@ +9855 +9856 +9857 +9858 +9859 diff --git a/model_small/graph/phones/word_boundary.int b/model_small/graph/phones/word_boundary.int new file mode 100644 index 0000000..f4a3008 --- /dev/null +++ b/model_small/graph/phones/word_boundary.int @@ -0,0 +1,202 @@ +1 nonword +2 begin +3 end +4 internal +5 singleton +6 nonword +7 begin +8 end +9 internal +10 singleton +11 begin +12 end +13 internal +14 singleton +15 begin +16 end +17 internal +18 singleton +19 begin +20 end +21 internal +22 singleton +23 begin +24 end +25 internal +26 singleton +27 begin +28 end +29 internal +30 singleton +31 begin +32 end +33 internal +34 singleton +35 begin +36 end +37 internal +38 singleton +39 begin +40 end +41 internal +42 singleton +43 begin +44 end +45 internal +46 singleton +47 begin +48 end +49 internal +50 singleton +51 begin +52 end +53 internal +54 singleton +55 begin +56 end +57 internal +58 singleton +59 begin +60 end +61 internal +62 singleton +63 begin +64 end +65 internal +66 singleton +67 begin +68 end +69 internal +70 singleton +71 begin +72 end +73 internal +74 singleton +75 begin +76 end +77 internal +78 singleton +79 begin +80 end +81 internal +82 singleton +83 begin +84 end +85 internal +86 singleton +87 begin +88 end +89 internal +90 singleton +91 begin +92 end +93 internal +94 singleton +95 begin +96 end +97 internal +98 singleton +99 begin +100 end +101 internal +102 singleton +103 begin +104 end +105 internal +106 singleton +107 begin +108 end +109 internal +110 singleton +111 begin +112 end +113 internal +114 singleton +115 begin +116 end +117 internal +118 singleton +119 begin +120 end +121 internal +122 singleton +123 begin +124 end +125 internal +126 singleton +127 begin +128 end +129 internal +130 singleton +131 begin +132 end +133 internal +134 singleton +135 begin +136 end +137 internal +138 singleton +139 begin +140 end +141 internal +142 singleton +143 begin +144 end +145 internal +146 singleton +147 begin +148 end +149 internal +150 singleton +151 begin +152 end +153 internal +154 singleton +155 begin +156 end +157 internal +158 singleton +159 begin +160 end +161 internal +162 singleton +163 begin +164 end +165 internal +166 singleton +167 begin +168 end +169 internal +170 singleton +171 begin +172 end +173 internal +174 singleton +175 begin +176 end +177 internal +178 singleton +179 begin +180 end +181 internal +182 singleton +183 begin +184 end +185 internal +186 singleton +187 begin +188 end +189 internal +190 singleton +191 begin +192 end +193 internal +194 singleton +195 begin +196 end +197 internal +198 singleton +199 begin +200 end +201 internal +202 singleton diff --git a/model_small/ivector/final.dubm b/model_small/ivector/final.dubm new file mode 100644 index 0000000..4166b20 Binary files /dev/null and b/model_small/ivector/final.dubm differ diff --git a/model_small/ivector/final.ie b/model_small/ivector/final.ie new file mode 100644 index 0000000..f256f7a Binary files /dev/null and b/model_small/ivector/final.ie differ diff --git a/model_small/ivector/final.mat b/model_small/ivector/final.mat new file mode 100644 index 0000000..a6dbb02 Binary files /dev/null and b/model_small/ivector/final.mat differ diff --git a/model_small/ivector/global_cmvn.stats b/model_small/ivector/global_cmvn.stats new file mode 100644 index 0000000..4be171c --- /dev/null +++ b/model_small/ivector/global_cmvn.stats @@ -0,0 +1,3 @@ + [ + 8.330133e+10 -4.600894e+09 -2.394861e+09 2.127165e+09 -9.355799e+09 -9.378007e+09 -1.302309e+10 -9.460417e+09 -9.260028e+09 -4.58608e+09 -5.287111e+09 -1.972033e+09 -6.090821e+09 -1.336419e+09 -5.214569e+09 -2.321841e+09 -3.889789e+09 -1.060202e+09 -2.065653e+09 -2.684904e+08 -7.4007e+08 -4587485 -1.315853e+08 -8597548 2.599227e+08 7.408538e+07 5.505751e+08 -1.161846e+07 5.138103e+08 -1.828159e+08 4.251498e+08 -2.901496e+07 6.469246e+08 2.489644e+08 6.289868e+08 2.490337e+08 3.38884e+08 -1.788837e+08 -2.536016e+08 -1.591728e+08 8.388078e+08 + 8.660994e+12 4.637783e+11 3.366465e+11 4.467952e+11 5.094759e+11 5.179353e+11 6.145244e+11 4.970492e+11 5.014889e+11 4.027981e+11 3.937422e+11 3.602942e+11 3.162307e+11 2.40687e+11 2.267307e+11 1.563018e+11 1.341105e+11 8.535779e+10 6.12398e+10 3.207774e+10 1.737325e+10 5.704115e+09 7.980573e+08 2.168777e+08 2.763352e+09 6.859176e+09 1.214891e+10 1.604714e+10 2.005353e+10 2.240119e+10 2.366007e+10 2.300222e+10 2.406182e+10 2.354406e+10 2.098983e+10 1.619869e+10 1.491578e+10 1.224871e+10 9.502735e+09 6.517532e+09 0 ] diff --git a/model_small/ivector/online_cmvn.conf b/model_small/ivector/online_cmvn.conf new file mode 100644 index 0000000..7748a4a --- /dev/null +++ b/model_small/ivector/online_cmvn.conf @@ -0,0 +1 @@ +# configuration file for apply-cmvn-online, used in the script ../local/run_online_decoding.sh diff --git a/model_small/ivector/splice.conf b/model_small/ivector/splice.conf new file mode 100644 index 0000000..960cd2e --- /dev/null +++ b/model_small/ivector/splice.conf @@ -0,0 +1,2 @@ +--left-context=3 +--right-context=3 diff --git a/pv_custom_keywords/A-Knocks_en_windows_v2_1_0.ppn b/pv_custom_keywords/A-Knocks_en_windows_v2_1_0.ppn deleted file mode 100644 index 42a6564..0000000 Binary files a/pv_custom_keywords/A-Knocks_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Can-finger_en_windows_v2_1_0.ppn b/pv_custom_keywords/Can-finger_en_windows_v2_1_0.ppn deleted file mode 100644 index f9ec755..0000000 Binary files a/pv_custom_keywords/Can-finger_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Conceal_en_windows_v2_1_0.ppn b/pv_custom_keywords/Conceal_en_windows_v2_1_0.ppn deleted file mode 100644 index bf11a66..0000000 Binary files a/pv_custom_keywords/Conceal_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Disillusion_en_windows_v2_1_0.ppn b/pv_custom_keywords/Disillusion_en_windows_v2_1_0.ppn deleted file mode 100644 index 4e9bbd6..0000000 Binary files a/pv_custom_keywords/Disillusion_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Expellee-aramus_en_windows_v2_1_0.ppn b/pv_custom_keywords/Expellee-aramus_en_windows_v2_1_0.ppn deleted file mode 100644 index 58d4a3d..0000000 Binary files a/pv_custom_keywords/Expellee-aramus_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/In-St-Your_en_windows_v2_1_0.ppn b/pv_custom_keywords/In-St-Your_en_windows_v2_1_0.ppn deleted file mode 100644 index f4a1980..0000000 Binary files a/pv_custom_keywords/In-St-Your_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Lady-also_en_windows_v2_1_0.ppn b/pv_custom_keywords/Lady-also_en_windows_v2_1_0.ppn deleted file mode 100644 index b2d8aa1..0000000 Binary files a/pv_custom_keywords/Lady-also_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Lumas_en_windows_v2_1_0.ppn b/pv_custom_keywords/Lumas_en_windows_v2_1_0.ppn deleted file mode 100644 index c3977d2..0000000 Binary files a/pv_custom_keywords/Lumas_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/Proud-to-go_en_windows_v2_1_0.ppn b/pv_custom_keywords/Proud-to-go_en_windows_v2_1_0.ppn deleted file mode 100644 index cab1453..0000000 Binary files a/pv_custom_keywords/Proud-to-go_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/R-Vail-leo_en_windows_v2_1_0.ppn b/pv_custom_keywords/R-Vail-leo_en_windows_v2_1_0.ppn deleted file mode 100644 index 7ade6b0..0000000 Binary files a/pv_custom_keywords/R-Vail-leo_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/The-pool-so_en_windows_v2_1_0.ppn b/pv_custom_keywords/The-pool-so_en_windows_v2_1_0.ppn deleted file mode 100644 index f44fcfb..0000000 Binary files a/pv_custom_keywords/The-pool-so_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/aloha-mora_en_windows_v2_1_0.ppn b/pv_custom_keywords/aloha-mora_en_windows_v2_1_0.ppn deleted file mode 100644 index 19945ec..0000000 Binary files a/pv_custom_keywords/aloha-mora_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/pv_custom_keywords/terrifical-status_en_windows_v2_1_0.ppn b/pv_custom_keywords/terrifical-status_en_windows_v2_1_0.ppn deleted file mode 100644 index 0ed6f7b..0000000 Binary files a/pv_custom_keywords/terrifical-status_en_windows_v2_1_0.ppn and /dev/null differ diff --git a/requirements.txt b/requirements.txt index b771287..348ea58 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/speech.wav b/speech.wav deleted file mode 100644 index 1b5f781..0000000 Binary files a/speech.wav and /dev/null differ diff --git a/stt.py b/stt.py deleted file mode 100644 index e4aa125..0000000 --- a/stt.py +++ /dev/null @@ -1,30 +0,0 @@ -import vosk -import sys -import sounddevice as sd -import queue -import json - -model = vosk.Model("model_small") -samplerate = 16000 -device = 2 - -q = queue.Queue() - - -def q_callback(indata, frames, time, status): - if status: - print(status, file=sys.stderr) - q.put(bytes(indata)) - - -def va_listen(callback): - with sd.RawInputStream(samplerate=samplerate, blocksize=8000, device=device, dtype='int16', - channels=1, callback=q_callback): - - rec = vosk.KaldiRecognizer(model, samplerate) - while True: - data = q.get() - if rec.AcceptWaveform(data): - callback(json.loads(rec.Result())["text"]) - #else: - # print(rec.PartialResult()) \ No newline at end of file diff --git a/stt_google.py b/stt_google.py deleted file mode 100644 index c1413d4..0000000 --- a/stt_google.py +++ /dev/null @@ -1,34 +0,0 @@ -import speech_recognition as sr -from rich import print -from utils.benchmark import Benchmark - -# import speech_recognition as sr -# for index, name in enumerate(sr.Microphone.list_microphone_names()): -# print("Microphone with name \"{1}\" found for `Microphone(device_index={0})`".format(index, name)) -# exit(1) - -# obtain audio from the microphone -r = sr.Recognizer() -r.pause_threshold = 0.5 -with sr.Microphone(device_index=2) as source: - print("Say something!") - audio = r.listen(source) - -bench = Benchmark() - -# recognize speech using Google Speech Recognition -try: - # for testing purposes, we're just using the default API key - # to use another API key, use `r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")` - # instead of `r.recognize_google(audio)`\ - while True: - bench.start() - recognized_text = r.recognize_google(audio) - end_time = bench.end() - print(f"[light_sea_green]Google Speech Recognition thinks you said[/]: [dodger_blue1]{recognized_text}[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - print() -except sr.UnknownValueError: - print("Google Speech Recognition could not understand audio") -except sr.RequestError as e: - print("Could not request results from Google Speech Recognition service; {0}".format(e)) \ No newline at end of file diff --git a/stt_picovoice.py b/stt_picovoice.py deleted file mode 100644 index f3fbf02..0000000 --- a/stt_picovoice.py +++ /dev/null @@ -1,146 +0,0 @@ -import time - -import pvporcupine -from pvrecorder import PvRecorder -from rich import print -from utils.benchmark import Benchmark -import keyboard -from utils.time import sleep - -porcupine = pvporcupine.create( - access_key='H2JhXpfLdGYG2wMqvc61tipo0uKZQvwkEfA26CAQQe5n1y7zfZGneQ==', - # keywords=['picovoice', 'bumblebee', 'aloha mora'], - keyword_paths=["./pv_custom_keywords/aloha-mora_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/Expellee-aramus_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/Lumas_en_windows_v2_1_0.ppn", - - "./pv_custom_keywords/Proud-to-go_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/A-Knocks_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/In-St-Your_en_windows_v2_1_0.ppn", - - "./pv_custom_keywords/The-pool-so_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/Lady-also_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/R-Vail-leo_en_windows_v2_1_0.ppn", - - "./pv_custom_keywords/Conceal_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/terrifical-status_en_windows_v2_1_0.ppn", - "./pv_custom_keywords/Disillusion_en_windows_v2_1_0.ppn", - - "./pv_custom_keywords/Can-finger_en_windows_v2_1_0.ppn" - ], - sensitivities=[1] * 13 -) - -# `-1` is the default input audio device. -recorder = PvRecorder(device_index=0, frame_length=porcupine.frame_length) -recorder.start() -print('Using device: %s' % recorder.selected_device) - -bench = Benchmark() - -while True: - bench.start() - pcm = recorder.read() - keyword_index = porcupine.process(pcm) - end_time = bench.end() - - if keyword_index == 0: - print("[gold1]Aloha mora[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("f") - elif keyword_index == 1: - print("[bright_red]Expelliarmus[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F1") - sleep(0.05) - keyboard.press_and_release("2") - elif keyword_index == 2: - print("[gold1]Lumos[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F1") - sleep(0.05) - keyboard.press_and_release("1") - - elif keyword_index == 3: - print("[dodger_blue2]Protego[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press("q") - sleep(1/2) - keyboard.release("q") - - elif keyword_index == 4: - print("[gold1]Nox[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F1") - sleep(0.05) - keyboard.press_and_release("1") - - elif keyword_index == 5: - print("[bright_red]Incendio[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F2") - sleep(0.05) - keyboard.press_and_release("1") - - elif keyword_index == 6: - print("[dodger_blue2]Depulso[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F1") - sleep(0.05) - keyboard.press_and_release("4") - - elif keyword_index == 7: - print("[gold1]Levioso[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F1") - sleep(0.05) - keyboard.press_and_release("3") - - elif keyword_index == 8: - print("[dodger_blue2]Revelio[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("R") - - elif keyword_index == 9: - print("[dodger_blue2]Accio[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F2") - sleep(0.05) - keyboard.press_and_release("3") - - elif keyword_index == 10: - print("[bright_red]Petrificus Totalus[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("f") - - elif keyword_index == 11: - print("[dodger_blue2]Disillusionment Spell[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F2") - sleep(0.05) - keyboard.press_and_release("2") - - elif keyword_index == 12: - print("[bright_red]Confringo Spell[/]") - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - - keyboard.press_and_release("F2") - sleep(0.05) - keyboard.press_and_release("4") - - #if keyword_index >= 0: - # break - -porcupine.delete() diff --git a/stt_vosk.py b/stt_vosk.py deleted file mode 100644 index eef8f63..0000000 --- a/stt_vosk.py +++ /dev/null @@ -1,50 +0,0 @@ -import vosk -import queue -import json -import sys -import sounddevice as sd -from rich import print -from utils.benchmark import Benchmark - -# import speech_recognition as sr -# for index, name in enumerate(sr.Microphone.list_microphone_names()): -# print("Microphone with name \"{1}\" found for `Microphone(device_index={0})`".format(index, name)) -# exit(1) - -bench = Benchmark() - - -def va_respond(voice: str): - print(f"[light_sea_green]Vosk thinks you said[/]: [dodger_blue1]{voice}[/]") - - -model = vosk.Model("model_small") -samplerate = 16000 -device = 2 - -q = queue.Queue() - - -def q_callback(indata, frames, time, status): - if status: - print(status, file=sys.stderr) - q.put(bytes(indata)) - - -def va_listen(callback): - with sd.RawInputStream(samplerate=samplerate, blocksize=8000, device=device, dtype='int16', - channels=1, callback=q_callback): - - rec = vosk.KaldiRecognizer(model, samplerate) - while True: - bench.start() - data = q.get() - if rec.AcceptWaveform(data): - callback(json.loads(rec.Result())["text"]) - end_time = bench.end() - print(f"[grey37]This took[/] [red]{end_time[1]}[/]") - #else: - # print(rec.PartialResult()) - -# начать прослушивание команд -va_listen(va_respond) \ No newline at end of file diff --git a/tts.py b/tts.py index a48b47e..29bbdd1 100644 --- a/tts.py +++ b/tts.py @@ -1,14 +1,15 @@ -import torch -import sounddevice as sd import time +import sounddevice as sd +import torch + language = 'ru' model_id = 'ru_v3' -sample_rate = 48000 # 48000 -speaker = 'aidar' # aidar, baya, kseniya, xenia, random +sample_rate = 48000 # 48000 +speaker = 'aidar' # aidar, baya, kseniya, xenia, random put_accent = True put_yo = True -device = torch.device('cpu') # cpu или gpu +device = torch.device('cpu') # cpu или gpu text = "Хауди Хо, друзья!!!" model, _ = torch.hub.load(repo_or_dir='snakers4/silero-models', @@ -20,7 +21,7 @@ model.to(device) # воспроизводим def va_speak(what: str): - audio = model.apply_tts(text=what+"..", + audio = model.apply_tts(text=what + "..", speaker=speaker, sample_rate=sample_rate, put_accent=put_accent, @@ -32,4 +33,4 @@ def va_speak(what: str): # sd.play(audio, sample_rate) # time.sleep(len(audio) / sample_rate) -# sd.stop() \ No newline at end of file +# sd.stop()