создай голосового ассистента на Python

Créé le : 28 février 2025

Répondu en utilisant O1 par Chat01

Question

создай голосового ассистента на Python

Réflexion

Piecing together the components

I'm crafting a voice assistant in Python, leveraging speech recognition and text-to-speech libraries like speechrecognition, pyttsx3, or gTTS. The goal is to capture audio, perform speech recognition, and respond with text-to-speech functionality.

Reasoned for a few seconds

Réponse

Ниже приведён пример простого голосового ассистента на Python, который распознаёт речь пользователя (с помощью библиотеки SpeechRecognition) и отвечает голосом (с помощью pyttsx3).

Этот ассистент будет:

  1. Слушать микрофон.
  2. Распознавать фразы на русском языке.
  3. Выполнять простые команды и отвечать голосом.

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

Вам потребуются следующие библиотеки:

  • SpeechRecognition для распознавания речи;
  • PyAudio для захвата звука с микрофона;
  • pyttsx3 для синтеза речи;

Установите их командой:

bash
pip install SpeechRecognition pyttsx3 pyaudio

Обратите внимание:

  1. Для Windows иногда вместо pip стоит использовать pip3.
  2. С PyAudio могут быть сложности при установке на Windows. Рекомендуется скачать готовый whl-файл на https://www.lfd.uci.edu/~gohlke/pythonlibs/ или установить через пакетный менеджер (например, на Linux: sudo apt-get install python3-pyaudio).
  3. Если вы используете macOS, может потребоваться установить порт portaudio через Homebrew: brew install portaudio, а затем заново установить PyAudio: pip install pyaudio.

Шаг 2. Пример кода голосового ассистента

python
import speech_recognition as sr import pyttsx3 import time def speak(text): """Озвучивает заданный текст.""" engine.say(text) engine.runAndWait() def listen(): """ Слушает микрофон и распознаёт речь. Возвращает распознанный текст или None, если ничего не удалось распознать. """ with sr.Microphone() as source: print("Говорите что-нибудь...") # Можно немного подождать, чтобы «поймать» фоновый шум r.adjust_for_ambient_noise(source, duration=1) audio = r.listen(source) try: # Указываем язык распознавания как русский query = r.recognize_google(audio, language="ru-RU") print(f"Вы сказали: {query}") return query.lower() # возвращаем в нижнем регистре для удобства except sr.UnknownValueError: print("Извините, я не расслышал. Повторите, пожалуйста.") return None except sr.RequestError: print("Ошибка сервиса распознавания речи. Проверьте интернет-соединение.") return None def process_command(command): """ Обрабатывает голосовую команду. Добавляйте здесь любые ваши действия в зависимости от потребностей. """ if command is None: return if "привет" in command: speak("Здравствуйте! Чем могу помочь?") elif "как тебя зовут" in command: speak("Меня зовут Голосовой Ассистент.") elif "время" in command: current_time = time.strftime("%H:%M", time.localtime()) speak(f"Сейчас {current_time}") elif "стоп" in command or "выход" in command: speak("До свидания!") global running running = False else: speak("Я не знаю, как на это ответить. Попробуйте спросить что-нибудь ещё.") if __name__ == "__main__": # Инициализация распознавания речи и движка синтеза r = sr.Recognizer() engine = pyttsx3.init() # Настройка голоса (если есть несколько голосов, можно перебрать и выбрать) # voices = engine.getProperty('voices') # for i, v in enumerate(voices): # print(i, v.name, v.languages) # # Пример: выбрать голос по индексу # engine.setProperty('voice', voices[0].id) rate = engine.getProperty('rate') engine.setProperty('rate', 180) # скорость речи (при необходимости) # Основной цикл ассистента running = True speak("Здравствуйте! Я готов к работе.") while running: command = listen() process_command(command)

Как пользоваться:

  1. Запустите этот скрипт на своём ПК или ноутбуке (с установленными библиотеки и исправно работающим микрофоном).
  2. После запуска он скажет: «Здравствуйте! Я готов к работе.»
  3. Попробуйте сказать что-то вроде «Привет», «Как тебя зовут?», «Скажи время», «Стоп» и т.п.

Расширение функционала

Чтобы сделать ассистента более умным и полезным, вы можете:

  1. Добавлять свои команды в функцию process_command():
    • Например, «Открой браузер», «Создай файл», «Какая погода?» и т.д.
  2. Использовать сторонние API:
    • Для получения погоды, новостей, курса валют и т.п.
      (для этого есть модули requests, json, а также публичные API разных сервисов).
  3. Обрабатывать ошибки и исключения:
    • Например, если нет интернета и recognize_google не может подключиться к сервису Google.
  4. Добавить управление громкостью и тембром в настройках pyttsx3.
  5. Сделать графический интерфейс или чат-бот:
    • Например, использовать библиотеки tkinter, PyQt, или использовать в Telegram/Discord боте.

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

Надеюсь, этот пример поможет вам начать разработку своего голосового ассистента!

Partager cette Q&R