Как создать свой искусственный интеллект на компьютере с помощью python

Обновлено: 05.07.2024

Вы когда-нибудь задумывались, как здорово было бы иметь своего собственного ИИ-ассистента (типа Д.Ж.А.Р.В.И.С.)? Было бы гораздо легче отправлять письма, искать информацию в Википедии, не открывая браузер, и выполнять ещё много других действий с помощью одного только голоса.

В этом уроке мы узнаем, как написать код собственного голосового помощника на Python.

Перед тем, как начать, мы должны определиться, какими функциями должен обладать наш голосовой помощник:

  • Отправка электронных писем
  • Воспроизведение музыки
  • Запросы в Википедию
  • Открытие сайтов, таких как Google, YouTube, Stackoverflow, freecodecamp и т.д. в браузере
  • Открытие редактора кода или IDE одной голосовой командой

И всё это без ручного ввода запросов в браузере!

А теперь приступим, собственно, к написанию нашего помощника.

И да: не забудьте сперва придумать ему имя :з

Настройка среды

Я использую PyCharm, но вы можете выбрать абсолютно любой удобный вам редактор.

Сперва мы импортируем/установим все необходимые библиотеки:

  • pyttsx3;
  • datetime;
  • speech recognition;
  • wikipedia;
  • webbrowser;
  • os.path;
  • smtplib.

Определение функции воспроизведения речи

Интеллектуальному голосовому помощнику прежде всего полагается говорить. Чтобы бот говорил, мы определим функцию speak() , которая принимает на входе аудио и произносит его.

Теперь нам нужно аудио, чтобы обеспечить коммуникацию пользователя и ассистента. Для этого мы установим модуль pyttsx3 .

Что такое pyttsx3 ?

Это библиотека Python, которая поможет нам конвертировать текст в устную речь. Она работает оффлайн и доступна как для Python 3, так и для Python 2.

После успешной установки pyttsx3 нужно импортировать модуль в нашу программу.

Что такое sapi5? Microsoft Speech API (SAPI5) – технология для распознавания и синтеза речи, предоставленная Microsoft.

VoiceId помогает нам выбирать разные голоса:

  • voice[0].id = мужской голос
  • voice[1].id = женский голос

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Создание функции speak()

Создание функции main()

Теперь определим функцию main() и вызовем функцию speak() внутри неё.

P.S. Я назову своего ассистента Friday (Пятница).

Всё, что вы передадите функции speak() , будет полностью преобразовано в звук. Поздравляю: наш голосовой помощник обрел свой голос и готов с нами болтать!

Создание функции wishme()

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

Чтобы предоставить нашему ассистенту информацию о времени, мы должны импортировать модуль datetime, делается это следующей командой:

Теперь напишем функцию wishme() :

Здесь мы сохраняем целочисленное значение текущего часа в переменную hour . Используем это значение в конструкции if-else :

Определение функции takeCommand():

Следующий важный аспект в нашем помощнике: он должен уметь принимать команду с помощью микрофона нашей системы. Для этого мы создадим функцию takeCommand() .

С помощью takeCommand() наш интеллектуальный ассистент сможет возвращать строку, принимая голосовые команды по микрофону.

Но перед определением takeCommand() мы должны установить модуль speechRecognition следующей командой:

После установки импортируем модуль в программу:

Начнём написание функции takeCommand() :

Мы успешно создали нашу функцию takeCommand() . Также мы добавим блок try-except для обработки ошибок.

А теперь мы наконец-то можем приступить к определению задач для получения необходимой информации.

Задача 1: поиск по Википедии

Чтобы отправлять поисковые запросы в Википедию, мы должны установить и импортировать в нашу программу модуль wikipedia .

Команда для установки:

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

В коде выше мы использовали if , чтобы проверить, есть ли в запросе пользователя слово «Википедия». Если слово присутствует, помощник прочитает и озвучит с помощью speak() первые 5 предложений из статьи в Википедии (можно поменять число предложений на любое другое).

Задача 2: открыть YouTube в браузере

Для открытия сайтов мы используем модуль webbrowser .

Это встроенный модуль, так что устанавливать его нам не придётся. Остаётся лишь импортировать его.

Задача 3: открыть Google-поиск в браузере

Открытие Google происходит по той же логике, что и с YouTube.

Задача 4: воспроизвести музыку

Чтобы проигрывать музыку, нужно импортировать модуль os :

В данном коде мы в первую очередь открываем директорию с музыкой пользователя и перечисляем все песни в директории с помощью модуля os .

os.startfile позволяет нам воспроизвести любую нашу песню. Также можно включить случайно выбранную композицию с помощью модуля random . Каждый раз, когда вы будете просить включить музыку, голосовой помощник будет запускать воспроизведение любой песни из указанной папки.

Задача 5: узнать время

В этом коде мы используем функцию datetime() и сохраняем текущее время в переменной strTime .

После сохранения времени в strTime мы передаем переменную в качестве аргумента в функцию speak() , чтобы там она превратилась в речь.

Задача 6: открыть StackOverflow

Делаем то же самое, что и в случае с Google/Youtube.

Задача 7: открыть freecodecamp

Делаем то же самое, что и в случае с Google/Youtube.

Задача 8: открыть PyCharm (или другую IDE):

Чтобы открыть PyCharm или любое другое приложение, нужно указать путь к нему.

Чтобы послать электронное письмо, мы импортируем модуль smtplib.

Метод sendmail представлен в модуле SMTP. Именно этот метод позволяет отправлять письма.

Он принимает 3 параметра:

Теперь мы можем создать функцию sendEmail() , которой мы будем посылать письма.

Замечание: не забудьте включить опцию ‘ненадёжные приложения, у которых есть доступ к аккаунту’ в вашем Gmail-аккаунте. Иначе функция sendEmail не сработает нужным образом.

Вызываем sendEmail() внутри main() :

Мы используем блок try-except , чтобы обрабатывать все ошибки, которые могут произойти при отправлении писем.

Повторяем изученное

  • Сначала мы создали функцию wishme() , которая предоставляет функционал для приветствия пользователя в соответствии с системным временем.
  • После wishme() мы создали функцию takeCommand() , которая позволяет ассистенту принимать команды пользователя и действовать в соответствии с ними. Эта функция возвращает запрос пользователя в формате строки.
  • Мы проработали логику для открывания различных сайтов: Google, YouTube, Stackoverflow, freecodecamp, Wikipedia.
  • Мы также добавили возможность открывать IDE PyCharm и другие приложения.
  • В конце мы разработали функцию отправки электронных писем (без написания единого слова, разве не круто?)

Можно ли считать это искусственным интеллектом?

Технически нет, ведь этот помощник – всего лишь результат выполнения набора команд. Но если поподробнее разобраться в вопросе, можно узнать, что цель любого ИИ – просто облегчить человеческую работу, выполняя задания с эффективностью человека (или даже лучше).

А наш голосовой помощник в значительной степени решает эту задачу.

Так что финальный вердикт: это ИИ!

Конец!

Мои поздравления: мы успешно создали нашего личного голосового помощника и сделали ещё один шаг навстречу нашей лени!

На Python можно строить как простые программы, так и сложные ИИ системы. В данной статье мы покажем как реализовать распознавание голоса и выполнение различных команд.

Перед стартом работы, вам стоит убедиться в нескольких вещах:

  • у вас установлен Python на вашем компьютере;
  • у вас установлен текстовый редактор, к примеру PyCharm ;
  • у вас установлен пакетный менеджер Pip .

Установка библиотек

Для распознавания голоса вам необходимо установить библиотеки:

  1. SpeechRecognition - команда pip install SpeechRecognition ;
  2. gTTS - команда pip install gTTS ;
  3. PyAudio - команда pip install PyAudio .

Все библиотеки стоит устанавливать через терминал в ваш проект через программу PyCharm:


После установки всех библиотек начните прописывать код самой программы. Ниже мы приведем весь код программы с комментариями, дабы вам было проще в нём разобраться:

Как видите, программа простая и не требует гигантского количества строчек кода. Сам код можете подстраивать в любую программу, дабы добавить в неё функционал прослушивания речи.

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

Полезные ссылки из видео:

Больше интересных новостей

12 навыков, которыми обязан обладать Frontend-разработчик

12 навыков, которыми обязан обладать Frontend-разработчик

Самые дорогие IT бренды мира

Самые дорогие IT бренды мира

Что нужно знать хорошему Frontend-разработчику

Что нужно знать хорошему Frontend-разработчику

Взлёт искусственного интеллекта привёл к популярности платформ машинного обучения MLaaS. Если ваша компания не собирается строить фреймворк и развёртывать свои собственные модели, есть шанс, что она использует некоторые платформы MLaaS, например H2O или KNIME. Многие исследователи данных, которые хотят сэкономить время, пользуются этими инструментами, чтобы быстро прототипировать и тестировать модели, а позже решают, будут ли их модели работать дальше.

Но не бойтесь всей этой инфраструктуры; чтобы понять эту статью, достаточно минимума знаний языка Python и фреймворка Django. Специально к старту нового потока курса по машинному обучению в этом посте покажем, как быстро создать собственную платформу ML, способную запускать самые популярные алгоритмы на лету.



Портрет Орнеллы Мути Джозефа Айерле (фрагмент), рассчитанный с помощью технологии искусственного интеллекта.

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

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

Круто, давайте посмотрим, как это сделать! Возможно, вы работаете на ноутбуке или на облачном сервере, я использовал сервер Digital Ocean, приложение работает на Nginx и Gunicorn, и я подробно расскажу о том, как развёртывать его: это может быть полезно, когда нужно развёртывать приложения на Linux-сервере каждый день.

Давайте начнём настраивать наше окружение с некоторых установок:

После этого всё, что Вам нужно сделать, — это настроить Вашу конфигурацию для сервиса Gunicorn:


Теперь всё готово, и вы можете просто клонировать код из моего GitHub-репозитория (текущая ветка — releasee-1.2) и установить все нужные пакеты, просто выполнив команду:


Проверьте технические характеристики вашей системы, чтобы убедиться, что она соответствует требованиям (стоят нужные версии Python, Django и т. д.). После этого вы увидите типичные папки структуры проекта Django, а именно:

  • Папка проекта trainyourmodel с файлом settings.py .
  • Папка приложения под названием Portral c файлом views.py .
  • Папка шаблонов для кода .html.

Я установил базу данных на тот случай, если захочу использовать её в будущем, но пока мы не используем никакую базу, так как будем запускать модели на лету, поэтому я поместил представления в папку под названием portal , и туда мы разместим весь код, запущенный нашими моделями.

Прежде всего мы импортируем все библиотеки, которые нам понадобятся для наших моделей машинного обучения и построения красивых графиков онлайн (Pandas, NumPy, sci-kit-learn, TensorFlow, Keras, Seaborn, Plotly и т. д.).


Теперь мы готовы создать функцию, которую я назвал upload_csv , она берёт CSV-файл, загруженный в наши шаблоны, и создаст фрейм данных Pandas. Мы будем делать самые разные вещи с данными этого файла, в зависимости от запросов пользователя. Когда пользователь кликает по опциям фронтенда, мы сохраняем опции в переменной, переменная, в свою очередь, может принимать эти значения:

  • _plot — строим график рассеяния или тепловую карту.
  • _cate — выполняем алгоритм Априори для категориальных переменных.
  • _unsuper — выбираем один алгоритм ML без учителя.
  • _super — выполняем алгоритм с учителем.


Наконец, если вы нажмёте на кнопку «deep learning» в верхней части сайта, то перейдёте на другой экран, входные данные на этом экране берутся функцией под названием neural , которая будет работать с нейронными сетями. Есть два типа сетей на выбор: «mean-squared-error» или «binary cross-entropy». Как только функция проверяет тип сети для запуска, она берёт эпохи, пакет, значения плотности и выводит на экран модель Keras, показывая точность прогнозов, получается что-то вроде этого:

Заключение

В этом проекте мы увидели, как сравнительно легко внедрить приложение для компьютерного обучения на сервере Linux с помощью Django, мы могли бы также использовать Flask (еще одно популярное приложение на Python) или многие другие технологии. Дело в том, что, если вы просто хотите, чтобы ваша модель работала на фронтенде сайта, чтобы пользователи могли ею пользоваться, вам нужно лишь встроить свои модели в функции, которые принимают входные данные, настроенные пользователями.

Обратите внимание, что мы делали всё на лету, не нуждаясь в базе данных. Это очень маленький навык, если вы являетесь инженером-машиностроителем и вам необходимо быстро построить и развернуть модель. Проблема с реальными платформами машинного обучения заключается в том, что им необходимо принимать огромные объёмы данных от тысяч пользователей и хранить пользовательскую информацию, то есть проблема этих платформ заключается не в сложности выполняемых ими моделей, а в сложности облачных операций, которые они выполняют, чтобы иметь возможность справляться с их рабочей нагрузкой. Что ж, на сегодня всё, надеюсь, вам понравился этот проект и понравилось программировать его!

Голосовой бот с искусственным интеллектом на Python

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

Бот состоит из двух основных частей: это часть обрабатывающая словарь и часть с голосовым ассистентом.

Всю разработку по написанию бота вы можете вести в IDE PyCharm, скачать можно с официального сайта JetBrains.

Все необходимые библиотеки можно установить с помощью PyPI прямо в консоле PyCharm. Команды для установки вы можете найти на официальном сайте в разделе нужной библиотеки.

Проблема возникла только с библиотекой PyAudio в Windows. Помогло следующее решение:

Дата-сет

Все строки текста перебираются с помощью функции for , при этом из текста удаляются все ненужные символы по маске, находящейся в переменной alphabet . Каждое значение строки раздельно заносится в массив dataset .

После обработки текста все его значения преобразуются в вектора с помощью библиотеки для машинного обучения Scikit-learn. В этом примере используется функция CountVectorizer() . Далее всем векторам присваивается класс с помощью классификатора LogisticRegression() .

Голосовой ассистент

При дефолтных настройках время ответа было достаточно долгим, иногда нужно было ждать по 15-30 сек. К тому же вопрос принимался от малейшего шума. Помогли следующие настройки:

И timeout = None, phrase_time_limit = 2 в функции listen()

После чего бот стал отвечать с минимальной задержкой.

Возможно вам подойдут другие значения. Описание этих и других настроек вы можете посмотреть все на том же сайте PyPI в разделе библиотеки SpeechRecognition. Но настройку phrase_time_limit я там почему-то не нашел, наткнулся на нее случайно в Stack Overflow.

Текст дата-сета

Код Python


Перед тем как продолжить читать эту статью, рекомендуем вспомнить об основных понятиях которые используются при разработке чат-ботов в этой статье.

Установка Python и Pip

Для того, чтобы создать чат-бот на Rasa, очевидно, понадобится очень важный инструмент - python, а ещё установить зависимости (сторонние библиотеки), для чего обычно используется встроенный в python инструмент - pip.

На самом деле вовсе не обязательно заниматься установкой Python. Для того, чтобы установить необходимые зависимости можно воспользоваться open-source библиотекой miniconda. Это более легковесная версия Anaconda, которая содержит conda, python, а также несколько дополнительных полезных пакетов, таких как pip, zlib и другие.

После установки проверить версию conda можно следующим образом:

Для того, чтобы обновить conda, выполните следующую команду:

Итак, если conda или интерпретатор python установлены, можно перейти к следующему шагу.

Создание виртуального окружения

Можно воспользоваться готовой статьей по установке виртуального окружения на любую ОС.

Кстати, использование среды разработки Pycharm позволяет быстро создавать и подхватывать виртуальное окружение, а еще разработкой бота можно заниматься там же!


Установка библиотеки “rasa”

Установить библиотеку можно воспользовавшись pip:

Для того, чтобы посмотреть установленную версию, наберите:

Чтобы проверить доступные аргументы rasa можно ввести команду:


Вуаля! Сразу же после установки библиотеки можно создать небольшой проект на rasa с примерами тренировочных данных, действий и конфигурационных файлов. Для этого нужно выполнить простую команду:

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


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


Если согласитесь, вы сможете поговорить с ботом ;)



Команда rasa shell позволяет сделать это прямо в терминале.

Структура проекта

Основные компоненты и файлы для создания чат-бота на Rasa:

Важно! Истории диалогов не должны конфликтовать с правилами: например, если в правилах прописано, что бот здоровается при инициализации диалога и ожидает пользовательский ввод, то конечно, мы не можем написать историю, где бот, поздоровавшись, сразу спрашивает, как дела.
То, как именно должен ответить ассистент можно прописать в файле “domain.yml” или (что чуть-чуть сложнее) с помощью функции на python (actions.py). Рассмотрим первый вариант, определение реакции в DOMAIN с ключевым словом “utter”:
Еще один пример типичной истории диалога с примерами выделенных ботом сущностей [в квадратных скобках]:

Подробнее с документацией Rasa можно ознакомиться на официальном сайте.

Обучение и запуск бота

После успешного обучения модель, как правило, сохраняется в папку “models”.

Шпаргалка с полным списком команд rasa:

Создает новый проект с примерами тренировочных для обучения модели, действиями и конфигурационными файлами.

Обучает модель, используя nlu-файл и истории диалогов, сохраняет обученную модель в ./models.

Запускает сессию с интерактивным обучением с возможностью обучения модели в процессе диалога с чат-ботом.

Загружает обученную модель и позволяет поговорить с ассистентом в командной строке.

Запускает сервер с обученной моделью.

rasa run actions

Запускает action сервер, используя Rasa SDK.

Визуализирует истории диалогов.

Тестирует обученную модель на тестовых данных, хранящихся в файлах, название которых начинается с “test_”.

rasa data split nlu

Делит NLU-данные на трейн и тест в отношении 80/20.

rasa data convert

Конвертирует обучающие данные.

rasa data validate

Проверяет domain, NLU и истории диалогов на несоответствия.

Экспортирует диалоги из tracker store в event broker.

Локально запускает Rasa X.

Показывает все возможные команды.

Поговорить с обученным ассистентом в командной строке можно запустив команду:


Команда rasa shell --debug позволит запустить чат-бот в режиме debug и посмотреть логи ошибок. Аргумент -m MODEL (путь до модели) или --model MODEL позволяет явно указать модель. По умолчанию rasa shell запускается, используя последнюю модель из папки “models”. Подробнее с аргументами и командами можно ознакомиться здесь.

Запуск чат-бота на сервере

Команда rasa run запускает сервер с обученной моделью. Для того, чтобы сделать возможным прямое взаимодействие с ботом по API необходимо добавить к команде параметр --enable-api:


Итак, мы создали базового интеллектуального ассистента, который умеет понимать и обрабатывать высказывания на естественном языке. Дальше можно бесконечно кастомизировать бота, создавать истории диалогов, позволяя ему действовать, отвечать и выглядеть разнообразно и, конечно, еще больше развивать его возможности в понимании человеческой речи и намерений пользователей.

Читайте также: