/ it Новости / ИИ на Python для распознавания голоса и выполнения команд

ИИ на Python для распознавания голоса и выполнения команд

ИИ на Python для распознавания голоса и выполнения команд

12 744 · 25 декабря 2018 в 17:03 ·
На Python можно строить как простые программы, так и сложные ИИ системы. В данной статье мы покажем как реализовать распознавание голоса и выполнение различных команд.

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

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

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

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

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


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



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

# Подключение всех необходимых библиотек
# Нам нужно: speech_recognition, os, sys, webbrowser
# Для первой бибилотеки прописываем также псевдоним
import speech_recognition as sr
import os
import sys
import webbrowser

# Функция, позволяющая проговаривать слова
# Принимает параметр "Слова" и прогроваривает их
def talk(words):
	print(words) # Дополнительно выводим на экран
	os.system("say " + words) # Проговариваем слова

# Вызов функции и передача строки 
# именно эта строка будет проговорена компьютером
talk("Привет, чем я могу помочь вам?")

""" 
	Функция command() служит для отслеживания микрофона.
	Вызывая функцию мы будет слушать что скажет пользователь,
	при этом для прослушивания будет использован микрофон.
	Получение данные будут сконвертированы в строку и далее
	будет происходить их проверка.
"""
def command():
	# Создаем объект на основе библиотеки
	# speech_recognition и вызываем метод для определения данных
	r = sr.Recognizer()

	# Начинаем прослушивать микрофон и записываем данные в source
	with sr.Microphone() as source:
		# Просто вывод, чтобы мы знали когда говорить
		print("Говорите")
		# Устанавливаем паузу, чтобы прослушивание
		# началось лишь по прошествию 1 секунды
		r.pause_threshold = 1
		# используем adjust_for_ambient_noise для удаления
		# посторонних шумов из аудио дорожки
		r.adjust_for_ambient_noise(source, duration=1)
		# Полученные данные записываем в переменную audio
		# пока мы получили лишь mp3 звук
		audio = r.listen(source)

	try: # Обрабатываем все при помощи исключений
		""" 
		Распознаем данные из mp3 дорожки.
		Указываем что отслеживаемый язык русский.
		Благодаря lower() приводим все в нижний регистр.
		Теперь мы получили данные в формате строки,
		которые спокойно можем проверить в условиях
		"""
		zadanie = r.recognize_google(audio, language="ru-RU").lower()
		# Просто отображаем текст что сказал пользователь
		print("Вы сказали: " + zadanie)
	# Если не смогли распознать текст, то будет вызвана эта ошибка
	except sr.UnknownValueError:
		# Здесь просто проговариваем слова "Я вас не поняла"
		# и вызываем снова функцию command() для
		# получения текста от пользователя
		talk("Я вас не поняла")
		zadanie = command()

	# В конце функции возвращаем текст задания
	# или же повторный вызов функции
	return zadanie

# Данная функция служит для проверки текста, 
# что сказал пользователь (zadanie - текст от пользователя)
def makeSomething(zadanie):
	# Попросту проверяем текст на соответствие
	# Если в тексте что сказал пользователь есть слова
	# "открыть сайт", то выполняем команду
	if 'открыть сайт' in zadanie:
		# Проговариваем текст
		talk("Уже открываю")
		# Указываем сайт для открытия
		url = 'https://itproger.com'
		# Открываем сайт
		webbrowser.open(url)
	# если было сказано "стоп", то останавливаем прогу
	elif 'стоп' in zadanie:
		# Проговариваем текст
		talk("Да, конечно, без проблем")
		# Выходим из программы
		sys.exit()
	# Аналогично
	elif 'имя' in zadanie:
		talk("Меня зовут Сири")

# Вызов функции для проверки текста будет 
# осуществляться постоянно, поэтому здесь
# прописан бесконечный цикл while
while True:
	makeSomething(command())

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


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



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

  1. Скачать редактор PyCharm;
  2. Скачать пакетный менеджер Pip;
  3. Скачать Homebrew для установки PyAudio;
  4. Пример установки библиотеки PyAudio;
  5. Поддержка различных языков.

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