Технологии с каждым годом развиваются все быстрее и быстрее. Появился искусственный интеллект, с помощью которого мы сегодня напишем нашего голосового помощника. Все названия модулей кликабельны, в них находится информация о модуле и команда для установки.
Начнем.
1 шаг. Обрабатываем голосовой ввод
Для того, чтобы нам обработать речь, нам потребуется микрофон и библиотеки SpeechRecognition и PyAudio.
Основной код для распознавания речи.
Теперь нам нужно создать функцию, которая будет записывать и распознавать речь. Мы будем использовать сервисы Google (работает только в онлайн), потому-что у него высокое качество распознавания и много языков.
Если вы хотите, чтобы ваш ассистент работал и без доступа в Интернет, то можно воспользоваться проектом Vosk. Чтобы его установить
Необязательно добавлять вариант, который указан выше, если он вам не нужен. Google будет выигрывать "Vosk" по количеству языков для распознавания.
Теперь, если у человека пропадет интернет, то произойдет автоматическое переключение на сеть "Vosk".
Чтобы вам не нужно было повторять фразу 2 раза подряд, нужно добавить запись звука с микрофона в .wav файл (он будет удаляться после каждого окончания распознавания).
Готовый код выглядит так:
2 Шаг. Настройка и конфигурация ассистента
Голосовой ассистент может иметь пол, имя и язык. Мы выделим отдельный класс для этих данных. Чтобы дать возможность говорить нашему голосовому помощнику, мы воспользуемся библиотекой pyttsx3. Pyttsx3 автоматически найдет голос, доступный для синтеза в ваше операционной системе. Добавим в main-функцию инициализацию синтеза речи и проигрывания. Чтобы убедиться, что все работает, поздороваемся с ассистентом, и посмотрим что он нам скажет:
3 шаг. Обрабатываем команды
Теперь мы будем учиться обрабатывать речевые команды пользователя.
Я покажу вам два способа хранения команд.
1 способ.
Можно использовать JSON, в котором мы будем хранить команды, сценарии и ответы неудавшихся попыток.
Пример:
Этот вариант подходит для тех, кто хочет научить ассистента более сложным командам. Подробнее об этом способе узнаем на 5 шаге.
2 способ.
Можно взять более простой словарь, у которого в качестве ключей будет hashable-тип tuple, а значениями будут названия функций, которые будут выполняться. Для коротких команд подойдет этот вариант:
Чтобы обработать этот вариант, нужно дополнить код:
В функции будут передаваться доп. аргументы, которые были сказаны после ключевого слова. То есть, если мы скажем фразу "видео дзен", то команда "видео" вызовет функцию search_for_video_on_youtube(), к которой будет присвоен аргумент "дзен", и введет такой запрос:
Пример такой функции с обработкой входящих аргументов:
Все! Основной функционал голосового помощника готов. Вы можете дальше улучшать своего ассистента до идеала.
Но мы еще немножко поработаем, и сделаем ассистента чуточку умнее.
4 Шаг. Добавление языков
Если вы хотите научить нашего ассистента разговаривать другими языками, то давайте сделаем маленький JSON файл с прописью текста сразу на двух языках:
Я буду использовать два языка, Русский и Английский. Язык выбирается в зависимости от языка речи ассистента.
Чтобы нам получить перевод текста, мы создадим отдельный класс с методом, который вернет нам строчку с переведенным текстом:
До цикла, в main функции объявим переводчик так: translator = Translation()
Теперь, когда будет проигрываться речь ассистента, мы сможем получить перевод вот так:
5 Шаг. Машинное обучение
А теперь вернемся к JSON для хранения команд из нескольких слов, о котором я рассказал на 3 шаге.
С помощью данного способа, вы сможете создать бота для разговоров с чатом или с вашим ассистентом.
Чтобы такое сделать, нужно добавить пару функций:
Также немного изменить main функцию, добавив инициализацию переменных:
В этом способе также есть пару минусов: Его очень сложно контролировать, он требует проверки, что фразы верно определяются системой.
Заключение
Вот и все! Ваш ассистент готов, но не идеален. Как я сказал ранее, вы можете без остановочно прокачивать своего помощника.
P.S. Данный ассистент работает на Linux, Windows, и MacOS, но есть небольшие различия при установке библиотек.
Спасибо, что прочитали мою статью!
Идея и информация была взята из этого источника. Спасибо!
#IT #программноеобеспечение #программирование #голосовойассистент #голосовойпомощник #программа