Как создать интерфейс для голосовых команд?

Ребята, подскажите, существует ли способ решить следующую задачу? <br/> У меня есть компьютер с Windows 10. <br/> У меня есть словарь, который содержит около 1000 слов (фамилии, имена и некоторые другие русские слова). <br/> Мне нужен скрипт или программа, которая по нажатию кнопки начнет слушать микрофон и будет распознавать слова, сказанные человеком, при этом в распознавании должны использоваться только слова из этого словаря. <br/> Результаты должны выводиться, например, в текстовый файл.
  • 10 октября 2024 г. 3:54
Ответы на вопрос 1
Создание интерфейса для голосовых команд на основе заданного словаря — интересная задача. Ниже описаны основные шаги, которые помогут вам разработать такую систему на Windows с использованием Python и некоторых дополнительных библиотек.

### Шаг 1: Установите необходимые библиотеки

Для этого проекта потребуются следующие библиотеки:

- `SpeechRecognition` — для распознавания речи.
- `PyAudio` — для работы с микрофоном.
- `pydub` или `numpy`, если вам необходимо работать с аудиофайлами или обработкой звука.

Вы можете установить их с помощью pip:

```bash
pip install SpeechRecognition pyaudio
```

### Шаг 2: Подготовьте словарь

Создайте текстовый файл (например, `dictionary.txt`), в котором будут содержаться слова вашего словаря (по одному слову на строку). 

### Шаг 3: Напишите скрипт

Ниже представлен базовый пример кода, который демонстрирует, как можно реализовать такую функциональность:

```python
import speech_recognition as sr

# Функция для чтения слов из словаря
def load_dictionary(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return set(file.read().splitlines())

# Основная функция для распознавания и фильтрации слов
def listen_and_recognize(dictionary):
    recognizer = sr.Recognizer()
    
    with sr.Microphone() as source:
        print("Скажите что-нибудь...")
        audio = recognizer.listen(source)

    try:
        # Распознавание речи
        recognized_text = recognizer.recognize_google(audio, language='ru-RU')
        print(f"Вы сказали: '{recognized_text}'")
        
        # Фильтрация только по словам из словаря
        recognized_words = set(recognized_text.split())
        valid_words = recognized_words.intersection(dictionary)

        if valid_words:
            print("Распознанные слова из словаря:", valid_words)
            # Запись результатов в файл
            with open('recognized_words.txt', 'a', encoding='utf-8') as f:
                f.write(", ".join(valid_words) + "\n")
        else:
            print("Нет распознанных слов из словаря.")

    except sr.UnknownValueError:
        print("Не удалось распознать звук.")
    except sr.RequestError as e:
        print(f"Не удалось получить результаты с сервиса: {e}")

if __name__ == "__main__":
    dictionary = load_dictionary('dictionary.txt')
    while True:
        listen_and_recognize(dictionary)
```

### Шаг 4: Запуск скрипта

1. Убедитесь, что у вас подключен и работает микрофон.
2. Запустите скрипт, и он начнет слушать ваш голос.
3. Говорите слова из словаря, и если они будут распознаны, они будут записаны в файл `recognized_words.txt`.

### Замечания

- **Качество распознавания**: Обратите внимание, что качество распознавания может зависеть от окружающего шума, качества микрофона и четкости произнесения.
- **Настройки конфигурации**: Возможно, вам понадобится отрегулировать чувствительность микрофона и использовать предварительную обработку звука для улучшения точности распознавания.
- **Дополнительные возможности**: Рассмотрите возможность использования более продвинутых библиотек, таких как vosk или pocketsphinx, которые могут работать локально и не требуют интернет-соединения для распознавания.

Этот пример служит отправной точкой для дальнейшего развития вашего проекта. Удачи!
Похожие вопросы