Пошаговый гайд: создание голосового ассистента на Python с ИИ и ChatGPT

0
23

Содержание

Памятка: ключевые шаги для создания своего голосового помощника

  1. Определите список команд и функций ассистента.
  2. Установите Python и необходимые библиотеки (SpeechRecognition, pyttsx3, gTTS).
  3. Настройте микрофон и проверьте его работу.
  4. Реализуйте функцию распознавания речи (онлайн или офлайн).
  5. Создайте функцию синтеза речи для ответов.
  6. Напишите основной цикл обработки команд.
  7. Добавьте логику для каждой команды (поиск, погода, время).
  8. Протестируйте каждую функцию по отдельности.
  9. Обработайте возможные ошибки и исключения.
  10. Улучшите пользовательский опыт (приветствие, паузы, индикация).
  11. Интегрируйте внешние API (погода, Википедия, ChatGPT).
  12. Проведите финальное тестирование и доработку.

Что будет уметь голосовой ассистент

Создания голосового ассистента на - изображение номер один
Создания голосового ассистента на — изображение номер один
  • распознавать и синтезировать голос даже без доступа к интернету,
  • приветствовать в зависимости от времени суток,
  • искать страницы в Wikipedia,
  • выполнять поиск в Google и Яндекс,
  • открывать видео в YouTube и RuTube,
  • переводить фразы с русского на английский и наоборот,
  • открывать необходимые сайты,
  • сообщать прогноз погоды в разных городах,
  • подсказывать время,
  • запускать приложения,
  • воспроизводить музыку,
  • отправлять email,
  • проверять баланс в панели управления,
  • работать в мультиязычном формате.

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

Подготовка среды

Создаём голосового ассистента на - изображение номер два
Создаём голосового ассистента на — изображение номер два

Для написания данной статьи использованы ОС Windows 10, IDE PyCharm 2026.1 и следующие библиотеки.

  • pyttsx3 — библиотека для синтеза речи (TTS) на различных платформах. Позволяет настроить голос, скорость речи и другие параметры.
  • datetime — встроенный модуль для работы с датой и временем.
  • speech_recognition — библиотека для распознавания речи. Поддерживает различные API для онлайн и офлайн-распознавания, такие как Google Web Speech API,, Microsoft Bing Voice Recognition и другие.
  • vosk — библиотека для офлайн-распознавания речи. Использует модели, созданные с использованием Kaldi.
  • wave — встроенный модуль для работы с аудиофайлами формата.wav.
  • os — встроенный модуль для взаимодействия с операционной системой.
  • json — встроенный модуль для работы с форматом данных JSON.
  • wikipediaapi — библиотека для работы с API Википедии.
  • webbrowser — встроенный модуль для открытия веб-страниц в браузере.
  • traceback — встроенный модуль для форматирования и вывода информации об исключениях и ошибках.
  • googletrans — библиотека для перевода текста с помощью API Google Translate.
  • pyowm — библиотека для работы с API OpenWeatherMap, предоставляет доступ к текущим данным о погоде, прогнозам и историческим данным.
  • subprocess — встроенный модуль для запуска новых процессов и взаимодействия с ними.
  • random — встроенный модуль для генерации случайных чисел.
  • pathlib — встроенный модуль для работы с путями файловой системы.
  • smtplib — встроенный модуль для отправки электронной почты через SMTP.
  • и — модули для создания и отправки сложных сообщений электронной почты, включая текст, HTML и вложения.
  • requests — библиотека для отправки HTTP-запросов.

Если необходимый для работы модуль не является встроенным, его необходимо установить.

Выбор голоса

Как написать - изображение номер три
Как написать — изображение номер три

Перед обучением помощника различным способностям определимся с его голосом.

Набор голосов зависит от операционной системы, на которой живет ассистент. Чтобы узнать, какие из них доступны в вашей ОС, необходимо добавить библиотеку pyttsx3 и выполнить следующий код. Он воспроизводит голоса и выводит в консоль их названия.

Выберите любой понравившийся голос, доступный на вашей ОС, и запомните его ID. После этого цикл с прослушиванием можно удалить, а на его место вставить следующий код. Он наделяет ассистента постоянным голосом:

Приветствие

Py - изображение номер четыре
Py — изображение номер четыре

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

Для этого воспользуемся библиотекой datetime, позволяющей работать со временем.

Напишем функцию, с помощью которой ассистент будет приветствовать нас.

Запись речи

ПИШЕМ - изображение номер пять
ПИШЕМ — изображение номер пять

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

Конструкция with упрощает управление ресурсами, так как забирает эту обязанность на себя. Ресурсы, занимаемые процессом, будут автоматически возвращены после окончания with.

Онлайн-распознавание речи

Как создать софт распознавания речи на - изображение номер шесть
Как создать софт распознавания речи на — изображение номер шесть

Для online-распознавания мы будем использовать библиотеку speech_recognition.

С помощью функции WavFile считываем уже записанный аудиофайл и даем команду на его распознавание.

При наличии подключения к интернету ассистент распознает речь и переводит ее в текст, сохраняя результат в переменную query.

Офлайн-распознавание речи

Распознавание речи на python с помощью pocketsphinx или как я пытался сделать го - изображение номер семь
Распознавание речи на python с помощью pocketsphinx или как я пытался сделать го — изображение номер семь

Если интернет отсутствует, ассистент будет работать с библиотекой Vosk. Для этого нужно загрузить из репозитория необходимую модель и поместить ее в поддиректорию проекта /models. Полный путь до этой директории будет примерно таким: C:/PyCharmProjects/voice_assistant/models.

Мы используем модуль vosk-model-ru-0.42, его имя указывается в переменной vosk_model.Если модуль с таким названием не будет найден в директории /models, ассистент сообщит об этом и попросит загрузить его.

В функциях выше мы использовали такие объекты, как recognizer и microphone. Не забудьте объявить их.

А для запуска процесса записи и распознавания речи требуется вызвать функцию record().

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

Теперь ассистент умеет слушать и понимать нашу речь. Далее научим его выполнять наши просьбы.

ЧИТАТЬ ТАКЖЕ:  Цикл for in range 1 6 print Python Rocks: сколько итераций и функция range

Подготовка логики

Голосовой помощник на python - изображение номер восемь
Голосовой помощник на python — изображение номер восемь

Ассистент должен уметь выполнять не только один вид запроса. Для этого нужно проработать логику, которая позволяет вызывать функции в соответствии с нашим запросом.

Один из вариантов — использовать блок if-else. А для обеспечения непрерывной работы ассистента мы поместим эту конструкцию в цикл while. Таким образом, помощник будет выполнять команды до тех пор, пока мы не завершим работу программы.

Поиск по Википедии

Python - изображение номер девять
Python — изображение номер девять

Для поиска по Википедии используется библиотека wikipediaapi. Это API Википедии, позволяющий искать статьи по определению. Также для взаимодействия с браузером потребуется библиотека webbrowser. А с обработкой ошибок нам поможет traceback.

  1. Поиск страницы по запросу.
  2. Открытие найденной страницы в браузере.
  3. Чтение первых двух предложений.

Для вызова функции, выполняющей поиск по Википедии, в голосовом запросе должно прозвучать слово «Википедия» или «Википедии». Например, «Википедия кошка».

Поиск в Google и Яндекс

Создание голосового ассистента на - изображение номер десять
Создание голосового ассистента на — изображение номер десять

Теперь научим нашего ассистента гуглить и «яндексить». Дополнительных библиотек нам не потребуется, так как задача довольно простая.

  1. Запоминаем фразу.
  2. Удаляем лишнее из запроса.
  3. Открываем браузер и вставляем подготовленную ссылку.

Яндекс

Какие типы поисковых запросов бывают в поисковых системах - изображение номер одиннадцать
Какие типы поисковых запросов бывают в поисковых системах — изображение номер одиннадцать

Запросы такого типа можно производить в любой поисковой системе. Главное — знать правильный URI-адрес. Например:

  • Google: =
  • Яндекс: =
  • Yahoo: =

Чтобы функции сработали, в голосовом запросе должно присутствовать любое из этих слов: гугл, google, яндекс или yandex. Например, можно сказать: «Яндекс ЦОД Selectel».

Поиск по Youtube и Rutube

Как создать своего голосового ассистента на - изображение номер двенадцать
Как создать своего голосового ассистента на — изображение номер двенадцать

Поиск по видеохостингам ничем не отличается от способа, представленного для поиска по Google и Яндекс, — необходимо знать лишь URI-адрес.

Для этого перейдем на интересующий видеохостинг, выполним какой-либо поиск и скопируем URI-адрес от начала до места, где начинается запрос.

  • YouTube: =
  • RuTube: =

Открыть любой сайт

Свой голосовой ассистент на - изображение номер тринадцать
Свой голосовой ассистент на — изображение номер тринадцать

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

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

Переводчик

Голосовой переводчик на - изображение номер четырнадцать
Голосовой переводчик на — изображение номер четырнадцать

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

Чтобы перевести фразу с английского языка на русский, необходимо сказать «переведи с английского». Для перевода с русского языка на английский требуется произнести «переведи на английский».

При появлении проблем с актуальной версией библиотеки googletrans установите более раннюю версию с помощью команды pip install googletrans==4.0.0-rc1

Прогноз погоды

Создание чат-бота \ - изображение номер пятнадцать
Создание чат-бота \ — изображение номер пятнадцать

Чтобы получать данных о погоде, воспользуемся сервисом OpenWeatherMap.

Предварительно необходимо получить API-ключ. Он пригодится ассистенту, чтобы связываться с OWM и получать актуальные данные о погоде.

  • Перейдите на сайт OWM.
  • Зарегистрируйтесь.
  • Перейдите в раздел My API keys.
  • Введите имя ключа (например, PythonAssistant) и нажмите Generate.
  • если в запросе встречается выражение «в городе», из запроса выбирается последнее слово — нужное нам названием города.
  • если в запросе данное выражение не встретилось, берется город, установленный в классе bot.

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

Например, чтобы узнать погоду в Санкт-Петербурге, необходимо сказать: «Погода в городе Санкт-Петербурге».

Узнать время

Урок 22 - изображение номер шестнадцать
Урок 22 — изображение номер шестнадцать

Для реализации данной функции воспользуемся уже знакомой библиотекой datetime. С ее помощью обратимся к своему устройству и получим текущее время.

Запустить приложение

cs50 project - изображение номер семнадцать
cs50 project — изображение номер семнадцать

Хотите, чтобы ассистент запускал за вас приложения? Он может и такое. Нужно лишь знать полный путь до исполняемого файла или то, какой командой запускается приложение из командной строки (CMD – command-line interface). Подойдет любой из этих методов.

  • Microsoft Edge — запуск.exe с указанием абсолютного пути;
  • Калькулятор — запуск с использованием команды CMD start;
  • Google Chrome — аналогично калькулятору.

Чтобы открыть, например, Google Chrome, необходимо сказать: «Запусти браузер».

Воспроизвести музыку

Обрезка музыкального, видео- или аудиоклипа в - изображение номер восемнадцать
Обрезка музыкального, видео- или аудиоклипа в — изображение номер восемнадцать

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

В нашей конфигурации музыка начинает воспроизводиться в случайном порядке. Чтобы воспроизведение происходило с начала, следует заменить music[(0, music_count-1)] на music[0].

Отправка email

Добавим еще одну фичу — пусть помощник отправляет электронные письма. Для примера мы будем использовать почту.

Стоит отметить, что и другие сервисы запрещают сторонним приложениям отправку писем с почтовых адресов, используя стандартный пароль. Для создания «пароля внешних приложений» в необходимо перейти в настройки своего аккаунта, а именно: Настройки → Все настройки → Безопасность → Пароля для внешних приложений.

  1. Подключение к SMTP-серверу.
  2. Аутентификация с паролем внешних приложений.
  3. Выбор получателя письма. В нашей реализации выбор получателя происходит только из заранее определенного списка.
  4. Указание заголовка письма.
  5. Указание текста письма.
  6. Отправка.

Получение информации о балансе Selectel

База знаний и обновленная панель управления - изображение номер двадцать
База знаний и обновленная панель управления — изображение номер двадцать

Если у вас уже есть личный кабинет Selectel, вы можете узнать баланс аккаунта и многое другое, даже не заходя в него! Потребуется лишь API-ключ, создать который можно в разделе Профили и настройка → Ключи API.

В переменной apikeys_selectel хранится API-ключ, созданный в личном кабинете, он передается в headers.

  • общий, если подключен Единый баланс.
  • раздельный, если Единый баланс не подключен (основной, облачная платформа, хранилище и CDN, облако VMware).

Узнать баланс аккаунта Selectel можно с помощью фразы «Баланс Selectel».

Мультиязычность

Пишем голосового ассистента на - изображение номер двадцать один
Пишем голосового ассистента на — изображение номер двадцать один

Мультиязычность — еще одна интересная функциональность ассистента. Мы покажем лишь одну из реализаций. Возможности для расширения этой функции у пользователя безграничны.

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

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

ЧИТАТЬ ТАКЖЕ:  Изменение глобальной переменной внутри функции в Python: полное руководство

Далее требуется создать в папке проекта json-файл, в котором будут описаны фразы на разных языках. Для примера возьмем фразу, которую ассистент говорит в случае ошибки при записи голоса.

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

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

С чего начать?

Голосовой ассистент на 🐍 - изображение номер двадцать два
Голосовой ассистент на 🐍 — изображение номер двадцать два

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

Какие библиотеки нам понадобятся?

Для чего нужны библиотеки - изображение номер двадцать три
Для чего нужны библиотеки — изображение номер двадцать три

Библиотеки — это готовые инструменты, которые упрощают работу. Установим несколько таких:

  • speech_recognition — для понимания речи.
  • pyttsx3 — для озвучивания текста.
  • pyaudio — для работы с микрофоном.
  • openai — для подключения ИИ.

Чтобы установить их, откройте командную строку (в Windows — «Командная строка» или PowerShell, в Mac — «Терминал») и введите:

Чтобы ассистент мог понимать голосовые команды, научим его слушать и распознавать речь. Для этого используем библиотеку speech_recognition.

Как это работает?

😱 - изображение номер двадцать четыре
😱 — изображение номер двадцать четыре
  • Программа включает микрофон и ждёт голосовую команду.
  • Когда человек говорит, голос записывается.
  • Библиотека recognize_google преобразует голос в текст.
  • Если всё прошло успешно, программа выводит текст.

Попробуйте запустить код — ассистент должен услышать вас и показать, что вы сказали.

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

Простой код для озвучивания текста

Generieren von - изображение номер двадцать пять
Generieren von — изображение номер двадцать пять

Чтобы ассистент мог понимать вопросы и давать осмысленные ответы, подключим к нему искусственный интеллект (GPT от OpenAI).

Запускаем ассистента

Голосовой ассистент на python / - изображение номер двадцать шесть
Голосовой ассистент на python / — изображение номер двадцать шесть
  • Ассистент слушает вас через микрофон.
  • Если понимает команду — передаёт её ИИ.
  • ИИ формирует ответ.
  • Ассистент озвучивает его.
  • Открытие программ (браузер, музыка) через ().
  • Поиск в интернете (через webbrowser).
  • Голосовые команды для управления компьютером.

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

  • Понимает голосовые команды
  • Отвечает с помощью ИИ
  • Озвучивает текст
  • Может выполнять команды на ПК

Это лишь начало! Вы можете улучшить его, добавив новые функции, например, управление умным домом или интеграцию с Telegram-ботом.

Подготовка окружения

😱 - изображение номер двадцать семь
😱 — изображение номер двадцать семь

Прежде чем приступить к созданию голосового помощника, убедитесь, что у вас установлены все необходимые библиотеки, включая библиотеку ChatGPT от OpenAI, и что у вас есть доступ к интернету для использования API.

Deep - изображение номер двадцать восемь
Deep — изображение номер двадцать восемь

  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ нейросети DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
  • Где и как применять? Потестируем модель после установки на разных задачах
  • Как дообучить модель под себя?

Настройка проекта

Руководство по созданию - изображение номер двадцать девять
Руководство по созданию — изображение номер двадцать девять

Создайте новый проект Python и добавьте необходимые библиотеки в ваш файл зависимостей. Убедитесь, что вы импортировали библиотеку ChatGPT и другие необходимые модули.

Пример кода:

Python (Text to - изображение номер тридцать
Python (Text to — изображение номер тридцать

Начнем с написания кода для распознавания речи пользователя и преобразования его в текст. Мы будем использовать библиотеку SpeechRecognition для этого.

python def recognize_speech(): recognizer = () with () as source: print(«Скажите что-нибудь…») audio = (source) try: text = recognizer.recognize_google(audio, language=»ru-RU») return text except: return «Извините, я не могу распознать вашу речь»

Отправка запроса к модели ChatGPT

Голосовой ассистент - изображение номер тридцать один
Голосовой ассистент — изображение номер тридцать один

Полученный текст отправляется на обработку модели ChatGPT для генерации ответа. Для этого используется API от OpenAI.

Голосовой чат с - изображение номер тридцать два
Голосовой чат с — изображение номер тридцать два

Преобразование текста в речь и воспроизведение

Как преобразовать текст в голос с помощью - изображение номер тридцать три
Как преобразовать текст в голос с помощью — изображение номер тридцать три

После получения ответа от модели мы преобразуем его в речь и воспроизводим с помощью библиотеки pyttsx3.

Тестирование и запуск

Познакомьтесь с нашей - изображение номер тридцать четыре
Познакомьтесь с нашей — изображение номер тридцать четыре

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

Добавление функциональности

Удачная рокировка - изображение номер тридцать пять
Удачная рокировка — изображение номер тридцать пять

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

Обработка ошибок и исключений

Чистый код: создание, анализ и рефакторинг - презентация онлайн - изображение номер тридцать шесть
Чистый код: создание, анализ и рефакторинг — презентация онлайн — изображение номер тридцать шесть

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

Улучшение пользовательского опыта

Как работает голосовой помощник и что умеет - изображение номер тридцать семь
Как работает голосовой помощник и что умеет — изображение номер тридцать семь

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

python def speak_with_emotion(text, emotion=»neutral»): # Добавить эмоциональную окраску к голосу помощника pass def add_sound_effects(): # Добавить звуковые эффекты для подтверждения выполнения команд pass

Интеграция с внешними сервисами

Создаём голосовое приложение на примере - изображение номер тридцать восемь
Создаём голосовое приложение на примере — изображение номер тридцать восемь

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

python import requests def get_weather(): api_key = ‘your_api_key’ url = f» response = (url) data = () weather = data[‘current’][‘condition’][‘text’] temperature = data[‘current’][‘temp_c’] return f»Сейчас {weather}, температура {temperature} градусов по Цельсию» def get_news(): url = » response = (url) data = () headlines = [article[‘title’] for article in data[‘articles’]] return «Последние новости: » + «, «.join(headlines[:5])

Персонализация опыта пользователя

Использование нейросетей для персонализации пользовательского опыта - изображение номер тридцать девять
Использование нейросетей для персонализации пользовательского опыта — изображение номер тридцать девять

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

python def personalize_response(text, user_name): # Добавить имя пользователя к ответу return («Вы», user_name)

Тестирование и доработка

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

Часто задаваемые вопросы по созданию голосового помощника на Python

Вопрос: Сложно ли создать голосового помощника на Python новичку?
Ответ: Нет, при наличии базовых знаний Python и следовании инструкциям это вполне реально.

Вопрос: Какие основные библиотеки нужны для голосового ассистента?
Ответ: Основные библиотеки: SpeechRecognition, pyttsx3, gTTS, pywhatkit, wikipedia-api.

Вопрос: Можно ли сделать ассистента полностью офлайн?
Ответ: Да, для офлайн-распознавания можно использовать Vosk, а для синтеза речи — pyttsx3.

Вопрос: Как добавить поддержку русского языка?
Ответ: В библиотеках SpeechRecognition и pyttsx3 нужно указать язык ‘ru-RU’ или ‘ru’.

Вопрос: Сколько времени занимает создание базовой версии?
Ответ: Базовую версию с несколькими командами можно собрать за 1-2 дня.

Вопрос: Как научить ассистента открывать приложения?
Ответ: Используйте модуль os или subprocess для запуска исполняемых файлов по команде.

Вопрос: Можно ли интегрировать ChatGPT в голосового помощника?
Ответ: Да, через API OpenAI, отправляя запросы и озвучивая ответы.

Вопрос: Как улучшить точность распознавания речи?
Ответ: Используйте качественный микрофон, настройте шумоподавление и выбирайте онлайн-сервисы распознавания.

Вопрос: Что делать, если ассистент не слышит команды?
Ответ: Проверьте уровень громкости микрофона, права доступа и корректность индекса аудиоустройства.

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