Руководство для начинающих по распознаванию речи и автоматизации графического интерфейса в 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/