Найти тему
IT-Тека

Голосовой ассистент за 20 минут на Python

Технологии с каждым годом развиваются все быстрее и быстрее. Появился искусственный интеллект, с помощью которого мы сегодня напишем нашего голосового помощника. Все названия модулей кликабельны, в них находится информация о модуле и команда для установки.

Начнем.

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(), к которой будет присвоен аргумент "дзен", и введет такой запрос:

-2

Пример такой функции с обработкой входящих аргументов:

Все! Основной функционал голосового помощника готов. Вы можете дальше улучшать своего ассистента до идеала.

Но мы еще немножко поработаем, и сделаем ассистента чуточку умнее.


4 Шаг. Добавление языков

Если вы хотите научить нашего ассистента разговаривать другими языками, то давайте сделаем маленький JSON файл с прописью текста сразу на двух языках:

Я буду использовать два языка, Русский и Английский. Язык выбирается в зависимости от языка речи ассистента.

Чтобы нам получить перевод текста, мы создадим отдельный класс с методом, который вернет нам строчку с переведенным текстом:

До цикла, в main функции объявим переводчик так: translator = Translation()

Теперь, когда будет проигрываться речь ассистента, мы сможем получить перевод вот так:

5 Шаг. Машинное обучение

А теперь вернемся к JSON для хранения команд из нескольких слов, о котором я рассказал на 3 шаге.

С помощью данного способа, вы сможете создать бота для разговоров с чатом или с вашим ассистентом.

Чтобы такое сделать, нужно добавить пару функций:

Также немного изменить main функцию, добавив инициализацию переменных:


В этом способе также есть пару минусов: Его очень сложно контролировать, он требует проверки, что фразы верно определяются системой.

Заключение


Вот и все! Ваш ассистент готов, но не идеален. Как я сказал ранее, вы можете без остановочно прокачивать своего помощника.

P.S. Данный ассистент работает на Linux, Windows, и MacOS, но есть небольшие различия при установке библиотек.

Спасибо, что прочитали мою статью!

Идея и информация была взята из этого источника. Спасибо!

#IT #программноеобеспечение #программирование #голосовойассистент #голосовойпомощник #программа

Наука
7 млн интересуются