Привет! Сейчас я хочу поделиться всем, что произошло с начала этого лета в плане разработки голосового ассистента Джарвиса или Аси (но об этом позже). Приятного чтения! ☕️
Общая информация, самое начало
Мой Джарвис (по задумке) - это голосовой помощник на Python, задача которого - создавать расписание и распорядок дня для пользователя. На данный момент было написано две версии: JarvisV0 и JannaV0.5. Как мне пришла идея, я расскажу в следующих статьях. Я бы и тут рассказал, но не могу вспомнить...
Началом работы над V1, я считаю 10 июня. Именно тогда в моём Телеграме появились 4 фото - 4 разных состояния Джарвиса.
После, через полчаса, я выложил сообщение об успешном нахождении библиотеки на Python для распознавания речи - Vosk. Текст сообщения:
Хочу поделиться своей находкой - библиотекой Vosk (https://alphacephei.com/vosk/index.ru). Она позволяет распознавать речь. Причём делает это очень неплохо и офлайн. На GitHub (https://github.com/alphacep/vosk-api) можно найти огромное количество примеров (/python/example/). Особенно полезен мне был test_microphone.py. Он слушает микрофон и сразу выводит, что услышал
За этим сообщением пошла активная работа и первая эпоха. Каждый большой этап я буду называть Эпохой.
Первая Эпоха
Сообщения этой эпохи выглядели так:
🟢 Что я сделал за сегодня:
Продвинулся в распознавании речи, а именно чисел. Далее буду работать с голосовым набором даты и времени
#jarvis
За время, пока она шла, я работал с набором занятий в расписание: пользователю необходимо назвать время начала, время конца и название занятия, заполнив таким образом всю неделю. Здесь вводятся именно постоянные занятия, например, девять ноль ноль.. шесть вечера.. работа. После этого файл с расписанием table.txt заполнялся этим самым расписанием. За этой эпохой стоит 18 дней работы, что равно 36 часам, а также 500+ строк кода.
Вторая Эпоха
За первой эпохой пошла вторая. Что я делал там? В основном писал класс russian, задачей которого было работать с русским языком. На данный момент он имеет две функции: decl() - склонят слова (правда только из родительного в именительный падеж, но это мы опустим), isverb() - возвращает True, если переданное слово - глагол.
Кстати, с первой эпохи я создал группу, в которую может попасть любой желающий - группа с тестами. Туда я кидаю файлы, а тестировщикам надо найти ошибки. Попасть туда можно, написав мне в личку.
Файл второй эпохи setpurpose.py должен был услышанную фразу превратить в цель и срок, например, написать статью за неделю превратилось бы в -n:написать_статью-t:за_неделю, а после в {'name': 'написать_статью', 'time': {время завершения}. Хочу сказать, что этот вариант набора гораздо более продвинутый, чем первый. Тут можно сказать всё одной фразой или набирать поочерёдно, а система подскажет, что делать.
Третья Эпоха
Началась совсем недавно и сейчас я нахожусь в ней. Файл этой эпохи должен будет услышать фразу в любом виде и превратить её в команду. В данный момент именно этим и занимаюсь. Как разбирать команду лучше всего покажет картинка:
Почему Джарвис или Ася?
Джарвис, как многие знают - имя голосового ассистента Тони Старка из фильмов про железного человека. Почему выбрано именно это название, а не своё? Всё просто. У меня маленький канал, а слово Джарвис в названии видео помогло мне получить первую тысячу просмотров.
Кто такая Ася? Лично мне имя Джарвис не особо нравится, а для вызова ассистента, хотелось бы чего-нибудь полегче и покороче. Как я много раз говорил Джарвис - это ассистент. В итоге: "ассистент" * имя * короткое = Ася. Саму программу можно будет переименовать, но у меня скорее всего будет Ася)
Итоги
Написал за всё это время я немного в масштабах такого проекта, но так много (наверное) ещё никогда мне не приходилось программировать. Дальше - больше. Мой TODO-список растёт быстрее, чем уменьшается. Хочу сделать столько всего, поэтому предлагаю за этим посмотреть. Ютуб, Дзен (подпишись, пожалуйста), Телеграм, Группа тестировщиков. Считаемся в воскресенье)
Спасибо за прочтение и хорошего дня!