Давайте искать что-то в нашем браузере по умолчанию, используя только наш голос!

Добрый день, дорогие друзья. Как дела сегодня на той стороне планеты Земля?

Вы когда-нибудь задумывались, как начать использовать распознавание речи, используя магию простоты кодирования Python? Хотели бы вы сказать компьютеру, что искать в Интернете, только с помощью голоса в вашем скрипте? Что ж, если да, давайте вместе создадим наш первый «Hello World», используя эту удивительную технологию, не так ли, ребята?

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

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

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

Каждый экземпляр класса распознавателя имеет семь методов для распознавания речи из аудиоисточника с использованием различных API. Это:

Из этих семи солдат только recognize_sphinx работает в автономном режиме с движком CMU Sphinx. Остальные шесть требуют подключения к Интернету.

Итак, прояснив это, приступим к установке модуля распознавания речи. Давайте сначала создадим папку, которая будет содержать наш скрипт вместе со всеми этими зависимостями, которые мы собираемся установить. Я назвал свой «Распознавание речи», но вы ищите лучшее имя, с которым вы можете прийти, хорошо?

Как только мы создадим папку, давайте изменим каталоги, и как только мы окажемся в ней, давайте введем следующую команду, чтобы установить этот волшебный модуль:

$ pip install SpeechRecognition

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

Пакет PyAudio.Процесс установки PyAudio зависит от вашей операционной системы. По иронии судьбы, самая простая установка для этого будет с Windows, что я нахожу немного странным — я не ненавижу Windows, но я знаю, верно?

Debian Linux: если вы используете Linux на основе Debian (например, Ubuntu), вы можете установить PyAudio с помощью apt:

$ sudo apt-get install python-pyaudio python3-pyaudio

После установки вам может понадобиться запустить pip install pyaudio, особенно если вы работаете в виртуальной среде.

macOS:для macOS сначала необходимо установить PortAudio с помощью Homebrew, а затем установить PyAudio с помощью pip:

$ brew install portaudio
$ pip install pyaudio

ОС Windows: в Windows вы можете установить PyAudio с помощью pip:

$ pip install pyaudio

Окей доки, друзья! Это было так, но теперь пришло время заставить этих плохих парней действовать, верно? Давайте создадим наш код сейчас.

Давайте откроем наш любимый редактор кода и создадим новый файл с именем sp_recog.py. Надеюсь, вы также используете vsCode, как и я, на этой стороне экрана.

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

import speech_recognition as sr
import webbrowser as wb

Теперь давайте создадим функцию, которая будет содержать всю нашу процедуру.

def fn_speech_recognition():

Теперь давайте инициализируем микрофон в нашем экземпляре распознавания речи, используя метод Microphone и передав аргументу device_index начальное значение или значение по умолчанию, равное нулю. Это позволит нам получить первый доступный микрофон на нашем компьютере.

sr.Microphone(device_index = 0)

Если вы из любопытства хотите узнать, сколько микрофонов установлено на вашем компьютере, вы можете использовать следующую команду:

print(f"MICs Found on this Computer: \n {sr.Microphone.list_microphone_names()}")

Теперь давайте создадим экземпляр распознавателя и настроим некоторые из наиболее важных параметров, чтобы он работал без сбоев:

# Creating a recognition object instance
r = sr.Recognizer()
r.energy_threshold=4000
r.dynamic_energy_threshold = False

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

with sr.Microphone() as source:
print('Please Speak Loud and Clear:')
# reduce noise
r.adjust_for_ambient_noise(source)
#take voice input from the microphone
audio = r.listen(source)

Как обычно, я рекомендую использовать блок try… catch для управления вашими ошибками. Давайте завершим код для этого урока, интегрировав в него этот блок, следующим образом:

try:
phrase = r.recognize_google(audio)
print(f"Did you just say: {phrase} ?")
url = "https://www.google.com/search?q="
search_url  = url+phrase
wb.open(search_url)
except TimeoutException as msg:
print(msg)
except WaitTimeoutError:
print("listening timed out while waiting for phrase to start")
quit()
# speech is unintelligible
except LookupError:
print("Could not understand what you've requested.")
else:
print("Your results will appear in the default browser. Good bye for now...")

Наконец, мы вызываем функцию и начинаем использовать наш скрипт: вы нервничаете? Я!

fn_speech_recognition()

Окончательный исходный код

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

👏 если вам понравилась эта статья, это мотивирует меня писать больше!
🔖 если вам нужно будет вернуться к этой статье позже, ребята.
🤔 Пожалуйста, оставьте свой комментарий, ваше мнение очень важно.

Увидимся в следующий раз, друзья! Не забудьте поделиться этой публикацией со всеми своими друзьями!

Больше контента на plainenglish.io