Голосовой замок: закрытие программы голосовым паролем

Современные технологии позволяют управлять компьютером не только клавиатурой и мышью, но и голосом. В этой статье мы рассмотрим, как реализовать «замок» – голосовой пароль, который при правильном произношении будет закрывать выбранную программу. Такой подход полезен для быстрого завершения работы приложений, повышения безопасности и просто для развлечения.


Содержание

  1. Что такое «замок» в контексте программ?
  2. Почему голосовое управление?
  3. Подготовка окружения
  4. Шаг 1: Выбор библиотеки для распознавания речи
  5. Шаг 2: Создание «замка» – голосовой пароль
  6. Шаг 3: Интеграция с целевой программой
  7. Шаг 4: Тестирование и отладка
  8. Полезные советы и лучшие практики

Что такое «замок» в контексте программ?

Под «замком» здесь понимается механизм, который блокирует выполнение определённого действия пока не будет выполнено условие – в нашем случае правильное голосовое подтверждение. Это аналогично обычному паролю, только вместо ввода текста клавиатурой используется распознавание речи.

Почему голосовое управление?

  • Скорость: произнесение фразы часто быстрее набора пароля.
  • Удобство: руки остаются свободными для других задач.
  • Безопасность: голосовой пароль сложно подобрать методом перебора, особенно если использовать уникальную фразу.
  • Интересный эксперимент: сочетание биометрии и программного управления.

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

Для реализации потребуется:

  • Операционная система: Windows 10/11, macOS Ventura+ или любой современный дистрибутив Linux.
  • Python версии 3.8 или выше (можно использовать и другие языки, но примеры будут на Python).
  • Микрофон, подключённый к компьютеру.
  • Библиотеки для распознавания речи и управления процессами.
  • Установим необходимые пакеты через pip:

    pip install SpeechRecognition pyaudio psutil
    # Для Windows может потребоваться дополнительная установка PyAudio через колесо

    Шаг 1: Выбор библиотеки для распознавания речи

    Самой популярной и простой в использовании является SpeechRecognition. Она поддерживает несколько движков (Google Web Speech API, Sphinx, Wit.ai и др.). Для офлайн‑работы можно использовать Vosk или CMU Sphinx, но в примере ниже будем полагаться на бесплатный Google API (требуется интернет).

    Шаг 2: Создание «замка» – голосовой пароль

    Определим фразу, которая будет служить паролем. Желательно, чтобы она была:

    • достаточно длинной (минимум 3‑);
    • содержала uncommon звуки, чтобы снизить вероятность ложного срабатывания;
    • была легко произносима вам лично.
    • Пример фразы: «закрыть программу голосом».

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

      import speech_recognition as sr
      import psutil
      import time

      VOICE_LOCK = «закрыть программу голосом»
      TARGET_PROCESS = «notepad.exe» # пример программы, которую будем закрывать

      def listen_for_lock -> bool:
        recognizer = sr.Recognizer
        with sr.Microphone as source:
          print(«Слушаю… скажите голосовой пароль»)
          recognizer.adjust_for_ambient_noise(source, duration=1)
          audio = recognizer.listen(source)
        try:
          text = recognizer.recognize_google(audio, language=»ru-RU»)
          print(f»Вы сказали: {text}»)
          return text;lower.strip == VOICE_LOCK
        except sr.UnknownValueError:
          print(«Не удалось распознать речь»)
        return False
        except sr.RequestError as e:
          print(f»Ошибка сервиса распознавания: {e}»)
        return False

      Шаг 3: Интеграция с целевой программой

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

      def close_target_process -> None:
        for proc in psutil.process_iter([‘pid’, ‘name’]):
          if proc.info[‘name’] and proc.info[‘name’].lower == TARGET_PROCESS.lower:
            print(f»Найден процесс {proc.info[‘name’]} (PID {proc.info[‘pid’]}). Завершаю…»)
            proc.terminate # можно использовать kill для принудительного завершения
            return
        print(«Целевой процесс не найден.»)

      Основной цикл программы будет выглядеть так:

      def main -> None:
        while True:
          if listen_for_lock:
            close_target_process
            print(«Ожидание следующей команды…»)
          time.sleep(1) # небольшая пауза между попытками

      if __name__ == «__main__»:
        main

      Запустив этот скрипт, вы сможете сказать фразу «закрыть программу голосом», и если запущен процесс notepad.exe (или любой другой, указанный в TARGET_PROCESS), он будет завершён.

      Шаг 4: Тестирование и отладка

      1. Запустите целевое приложение (например, Блокнот).
      2. Запустите наш скрипт в отдельном терминале.
      3. Чётко произнесите голосовой пароль. Убедитесь, что микрофон не заглушён и уровень шума низкий.
      4. Если процесс не завершается, проверьте:
        • Соответствие имени процесса (регистр не важен, но нужно точное совпадение без расширения .exe в некоторых системах).
        • Доступ права: иногда для завершения процесса нужны права администратора.
        • Работает ли распознавание речи: можно вывести распознанный текст в консоль для отладки.
      5. При необходимости замените recognize_google на офлайн‑движок (например, Vosk) для работы без интернета.

      Полезные советы и лучшие практики

      • Выбирайте фразу, которая не используется в обычной речи, чтобы избежать ложных срабатываний.
      • Добавьте проверку на длительность аудио: очень короткие фразы могут быть недоразумением.
      • Для повышения безопасности можно использовать двухфакторную проверку: голосовое подтверждение + нажатие клавиши (например, Ctrl+Shift).
      • Если планируется закрывать несколько разных программ, сделайте словарь, где ключ – голосовая фраза, значение – имя процесса.
      • Логируйте события (время, распознанный текст, результат) в файл – это поможет отслеживать попытки несанкционированного доступа.
      • Не забывайте освобождать ресурсы: после завершения работы скрипта корректно завершайте поток аудиозахвата.
      • Использование голосового «замка» для закрытия программ – это интересное сочетание удобства и безопасности. При минимальном наборе библиотек и нескольких строках кода вы получаете возможность управлять своими приложениями голосом, не отрывая рук от текущей задачи. Экспериментируйте с фразами, добавляйте многофакторную защиту и адаптируйте решение под свои нужды – и ваш компьютер станет чуть более интуитивным и отзывчивым.

        Удачной реализации!