Руководство для начинающих по распознаванию речи и автоматизации графического интерфейса в Python

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

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

Приведенная ниже диаграмма в значительной степени не требует пояснений. Пользователь вводит голосовые команды в микрофон (встроенный или внешний), который затем преобразуется в эквивалентный текст с помощью модуля SpeechRecognition. Этот преобразованный текст затем сопоставляется с определенными действиями графического интерфейса пользователя (событиями мыши / клавиатуры), выполняемыми с помощью модуля PyAutoGUI. Для удобства я нарисовал диаграмму ниже.

Давайте рассмотрим эти две библиотеки поподробнее!

1. SpeechRecognition:

Функция распознавания речи имеет различные приложения в области систем домашней автоматизации, изучения языков, цифровых помощников и т. Д. Используя эту библиотеку, мы можем преобразовывать нашу речь в тексты. Он поддерживает несколько API (как онлайн, так и офлайн). В нашем примере мы будем использовать онлайн-API Google. Вы можете иногда замечать некоторую задержку во время процесса преобразования речи в текст, однако, среди других API, поддерживаемых этим модулем, я обнаружил, что Google API является наиболее точным в моем случае. Его можно загрузить с помощью следующих команд pip. Pyaudio требуется для использования микрофона.

pip install SpeechRecognition
pip install pyaudio

В приведенном ниже фрагменте мы инициализируем объект распознавателя, слушаем вводимый голос с микрофона и преобразуем его в текст с помощью функции «распознавать_google». Мы делаем все это только в строках, выделенных жирным буквами. Вызов функции распознавателя .adjust_for_ambient_noise () не является обязательным. Эта функция прослушивает входящий звук и изменяет значение energy_threshold в зависимости от количества шума, присутствующего в комнате. Его можно рассматривать как меру чувствительности распознавателя. Это значение зависит от окружающего шума, и более высокие значения обычно означают меньшую чувствительность. Диапазон этого параметра может быть от 50 до 4000.

import speech_recognition
recognizer = speech_recognition.Recognizer()
with speech_recognition.Microphone() as src:
    try:
        audio = recognizer.adjust_for_ambient_noise(src)
        print("Threshold Value After calibration:" + str(recognizer.energy_threshold))
        print("Please speak:")
        audio = recognizer.listen(src)
        speech_to_txt = recognizer.recognize_google(audio).lower()
        print(speech_to_txt)
    except Exception as ex:
        print("Sorry. Could not understand.")

Скажем, вместо микрофона вы вводите аудиофайл (file.wav), строку номер 3 можно заменить, как показано ниже:

with speech_recognition.WavFile("file.wav") as src:

2. PyAutoGUI:

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

pip install PyAutoGUI

Управление мышью. Чтобы перемещать курсор мыши по экрану, нам нужны координаты (x, y). Думайте о мониторе как о двумерной плоскости (как показано здесь) с координатами x, y, где левый верхний угол - это (0,0). При перемещении вправо значение x увеличивается, а при движении вниз значение y увеличивается. Функция pyautogui.size () возвращает размеры экрана.

Вы можете проверить размер экрана, как показано ниже:

>>> import pyautogui
>>> pyautogui.size()
Size(width=1920, height=1080)

Приведенная ниже команда перемещает указатель мыши из его текущего положения в положение (100,100), и для этого требуется 0,25 секунды. Следующая команда имитирует двойной щелчок с интервалом 0,25 секунды между двумя щелчками.

pyautogui.moveRel(100, 100, duration=0.25)
pyautogui.click(button='left', clicks=2, interval=0.25)

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

pyautogui.typewrite(['volumemute'])

Функция определения местоположения. Бывают случаи, когда мы еще не знаем координаты (x, y) точки, которую хотим щелкнуть (например, кнопки). Но если у нас есть изображение кнопки, сохраненное в виде файла изображения, функция pyautogui.locateOnScreen () может искать это изображение пиксель за пикселем и возвращать координаты. В отношении функции locateOnScreen () следует отметить то, что даже если один пиксель не совпадает, он не сможет обнаружить изображение и вернуть объект None. Затем мы можем просто переместить указатель мыши в указанное место и выполнить щелчок. Например: - У меня есть приложение Chrome, закрепленное на панели задач на моем компьютере с Windows. Я сделал снимок экрана (Chrome.PNG) со значком, как показано ниже:

Теперь функция locateOnScreen () используется, как показано ниже.

icon_location = pyautogui.locateOnScreen(r'screenshots\Chrome.PNG')
print(icon_location)
>>> Box(left=446, top=1023, width=74, height=52)
#Using the left & top values as x & y to click at that location
pyautogui.click(x=446, y=1023, duration=0.25)

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

Я приложил демонстрационное видео окончательного приложения, и код загружен здесь для справки.

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

Вывод

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





Ссылки:

[1] PyAutoGUI CheatSheet, https://pyautogui.readthedocs.io/en/latest/quickstart.html

[2] Python распознавания речи, https://pypi.org/project/SpeechRecognition/