Создание голосового помощника на Python включает несколько ключевых этапов: распознавание речи (Speech-to-Text, STT), обработку запроса и синтез речи (Text-to-Speech, TTS). Для реализации этих компонентов используются специализированные библиотеки и инструменты. sky.pro +1
Необходимые компоненты
- Распознавание речи (STT) — преобразование аудиосигнала в текст.
- Обработка запроса — анализ текста и определение действия, которое нужно выполнить.
- Синтез речи (TTS) — преобразование текстового ответа в аудио.
Установка зависимостей
Для работы потребуются следующие библиотеки:
SpeechRecognition— для распознавания речи. MyRusakov.ruPyAudio— для захвата аудио с микрофона. MyRusakov.rupyttsx3илиgTTS— для синтеза речи. sky.pro
Установите их с помощью pip:
pip install SpeechRecognition PyAudio pyttsx3 gTTS
Распознавание речи
Используйте библиотеку SpeechRecognition для захвата аудио с микрофона и преобразования его в текст. MyRusakov.ru +1
Пример кода:
import speech_recognition as sr
def recognize_speech():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Говорите...")
recognizer.adjust_for_ambient_noise(source) # Настройка на шум
audio = recognizer.listen(source)
try:
text = recognizer.recognize_google(audio, language="ru-RU")
print(f"Вы сказали: {text}")
return text
except sr.UnknownValueError:
print("Не удалось распознать речь.")
return None
except sr.RequestError as e:
print(f"Ошибка сервиса: {e}")
return None
Синтез речи
Для преобразования текста в речь можно использовать pyttsx3 (работает офлайн) или gTTS (требует подключения к интернету). sky.pro +2
Пример с pyttsx3:
import pyttsx3
import pyttsx3
def speak(text):
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices.id) # Выбор женского голоса [1](https://sky.pro/wiki/python/razrabotka-chat-bota-i-golosovogo-pomoshnika-na-python/)
engine.say(text)
engine.runAndWait()
Пример с gTTS:
from gtts import gTTS
import os
def speak_gtts(text, language='ru'):
filename = f"voice_{str(uuid.uuid4())}.mp3"
tts = gTTS(text=text, lang=language, slow=False)
tts.save(filename)
os.system(f"mpg321 {filename}") # Для Linux/Mac
# Для Windows: os.system(f"start {filename}")
os.remove(filename)
Обработка команд
Определите логику обработки команд. Например, можно использовать условные операторы if-elif-else для выполнения действий в зависимости от распознанного текста. geeksforgeeks.org +1
Пример:
def process_command(command):
if "время" in command:
current_time = datetime.datetime.now().strftime("%H:%M:%S")
return f"Текущее время: {current_time}"
elif "привет" in command:
return "Здравствуйте! Чем могу помочь?"
elif "выход" in command:
return "До свидания!"
else:
return "Не понял команду. Повторите, пожалуйста."
Основной цикл работы ассистента
Объедините все компоненты в единый цикл, который будет ждать команд, распознавать их, обрабатывать и озвучивать ответ. sky.pro +1
Пример:
def main():
speak("Голосовой помощник запущен. Чем могу помочь?")
while True:
command = recognize_speech()
if command and "выход" in command:
speak("До свидания!")
break
response = process_command(command)
speak(response)
if __name__ == "__main__":
main()
Дополнительные возможности
- Интеграция NLP — для более сложного понимания намерений пользователя можно использовать библиотеки машинного обучения (например, scikit-learn) или готовые решения вроде Rasa или Dialogflow.
- Локализация — настройка языка распознавания и синтеза речи.
- Активация голосом — использование библиотек вроде Snowboy или Picovoice Porcupine для активации ассистента по ключевому слову.
- Выполнение действий — добавление функций для управления устройствами, поиска информации в интернете, воспроизведения музыки и т. д.
Рекомендации
- Тестируйте ассистента в разных условиях (шум, разные акценты) для повышения точности распознавания.
- Учитывайте вопросы приватности при работе с аудиоданными.
- Для сложных проектов рассмотрите использование нейросетевых моделей (например, Vosk, Wav2Vec). github.com +1
Это базовый пример создания голосового помощника. В зависимости от задач можно расширять функциональность, добавлять новые команды и интегрировать дополнительные сервисы.
Создание голосового помощника на Python включает несколько этапов: настройку среды, выбор библиотек для распознавания и синтеза речи, обработку команд и интеграцию дополнительных функций. Рассмотрим основные шаги подробно.
Необходимые библиотеки
Для базового голосового помощника потребуются следующие библиотеки:
- SpeechRecognition — для распознавания речи (преобразования аудио в текст). sky.pro +2
- pyttsx3 — для синтеза речи (преобразования текста в аудио). sky.pro +2
- datetime — для работы с временем (например, для приветствия в зависимости от времени суток). pythonist.ru +2
- os, webbrowser — для выполнения команд (открытие сайтов, управление системой). pythonist.ru +1
Установите их с помощью pip:
pip install SpeechRecognition pyttsx3
Для более продвинутых функций могут понадобиться дополнительные библиотеки, например:
- Vosk — для оффлайн-распознавания речи. proglib.io +1
- Silero — для синтеза речи.
- Wikipedia — для поиска информации в Википедии.
- pyjokes — для генерации шуток. geeksforgeeks.org +1
Инициализация синтеза речи
С помощью pyttsx3 можно настроить голос ассистента:
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices.id) # 0 — мужской голос, 1 — женский [1](https://sky.pro/wiki/python/razrabotka-chat-bota-i-golosovogo-pomoshnika-na-python/)[6](https://pythonist.ru/golosovoj-pomoshhnik-na-python/)
def speak(text):
engine.say(text)
engine.runAndWait()
Распознавание речи
Для захвата аудио с микрофона и его преобразования в текст используйте SpeechRecognition:
import speech_recognition as sr
def take_command():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio, language='ru-RU')
print(f"User said: {query}\n")
except Exception as e:
print("Say that again please...")
return "None"
return query
Основной цикл работы
Ассистент будет работать в бесконечном цикле, ожидая команд:
def main():
speak("Голосовой помощник запущен. Чем могу помочь?")
while True:
command = take_command()
if "выход" in command:
speak("До свидания!")
break
elif "время" in command:
current_time = datetime.datetime.now().strftime("%H:%M:%S")
speak(f"Текущее время: {current_time}")
elif "привет" in command:
speak("Здравствуйте!")
else:
speak("Не понял команду. Повторите, пожалуйста.")
if __name__ == "__main__":
main()
Дополнительные функции
Можно расширить возможности ассистента, добавив:
- Поиск в Википедии: используйте библиотеку wikipedia для получения информации.
- Открытие сайтов: с помощью webbrowser можно открывать YouTube, Google и другие ресурсы.
- Управление системой: с помощью os можно выполнять команды вроде выключения компьютера.
- Интеграцию с NLP-моделями: для более сложного понимания намерений пользователя можно использовать scikit-learn, Rasa или Dialogflow.
Фреймворки
Для упрощения разработки можно использовать готовые фреймворки, например S.T.A.R.K.. Он поддерживает асинхронные команды, распознавание контекста и интеграцию с языковыми моделями (ChatGPT и др.). Требует Python 3.10 или выше.
Рекомендации
- Тестируйте в разных условиях: проверяйте работу ассистента в шумной обстановке, с разными акцентами и скоростями речи.
- Оптимизируйте распознавание: настраивайте параметры pause_threshold и другие в зависимости от микрофона и окружения.
- Используйте виртуальное окружение: это поможет изолировать зависимости проекта.
Если вам нужны более сложные функции (например, работа с мультимедиа или интеграция с локальными нейросетями), можно изучить проекты вроде «Астра» на GitHub.
Для углублённого изучения рекомендую ознакомиться с официальной документацией библиотек и примерами на GitHub.
