Распознавание речи и синтез речи на Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение в распознавание и синтез речи

Распознавание речи и синтез речи — это две ключевые области в сфере обработки естественного языка (NLP). Распознавание речи позволяет компьютерам "слушать" и понимать человеческую речь, а синтез речи — "говорить" на естественном языке. Эти технологии находят применение в различных областях, от голосовых помощников до автоматических систем перевода. Например, голосовые помощники, такие как Siri, Google Assistant и Alexa, активно используют эти технологии для взаимодействия с пользователями. Автоматические системы перевода, такие как Google Translate, также используют распознавание и синтез речи для перевода устных сообщений в режиме реального времени.

Кинга Идем в IT: пошаговый план для смены профессии

Основные библиотеки для распознавания речи

SpeechRecognition

SpeechRecognition — это популярная библиотека для распознавания речи на Python. Она поддерживает несколько движков распознавания, включая Google Web Speech API, Microsoft Bing Voice Recognition и другие. Эта библиотека является отличным выбором для начинающих, так как она проста в использовании и предоставляет множество функций для работы с различными источниками аудио.

Python
Скопировать код
import speech_recognition as sr

# Инициализация распознавателя
recognizer = sr.Recognizer()

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

# Распознавание речи с использованием Google Web Speech API
try:
    text = recognizer.recognize_google(audio, language="ru-RU")
    print(f"Вы сказали: {text}")
except sr.UnknownValueError:
    print("Не удалось распознать речь")
except sr.RequestError as e:
    print(f"Ошибка сервиса; {e}")

pocketsphinx

Pocketsphinx — это оффлайн-библиотека для распознавания речи, которая не требует подключения к интернету. Она особенно полезна для встроенных систем и приложений, где интернет-соединение может быть нестабильным. Pocketsphinx является частью проекта CMU Sphinx, который включает в себя несколько инструментов для распознавания речи.

Python
Скопировать код
import speech_recognition as sr

recognizer = sr.Recognizer()

# Использование аудиофайла для распознавания
with sr.AudioFile('path_to_audio.wav') as source:
    audio = recognizer.record(source)

try:
    text = recognizer.recognize_sphinx(audio)
    print(f"Распознанный текст: {text}")
except sr.UnknownValueError:
    print("Не удалось распознать речь")
except sr.RequestError as e:
    print(f"Ошибка сервиса; {e}")

vosk

Vosk — это еще одна оффлайн-библиотека для распознавания речи, которая поддерживает множество языков и акцентов. Она работает на различных платформах, включая Windows, Linux и macOS, и может быть использована в мобильных приложениях.

Python
Скопировать код
import vosk
import sys
import os
import wave
import json

# Загрузка модели
if not os.path.exists("model"):
    print("Пожалуйста, скачайте модель с https://alphacephei.com/vosk/models и распакуйте ее в текущий каталог.")
    sys.exit()

model = vosk.Model("model")

# Открытие аудиофайла
wf = wave.open("path_to_audio.wav", "rb")
rec = vosk.KaldiRecognizer(model, wf.getframerate())

# Распознавание речи
while True:
    data = wf.readframes(4000)
    if len(data) == 0:
        break
    if rec.AcceptWaveform(data):
        result = json.loads(rec.Result())
        print(f"Распознанный текст: {result['text']}")

Основные библиотеки для синтеза речи

gTTS (Google Text-to-Speech)

gTTS — это библиотека, которая использует Google Text-to-Speech API для синтеза речи. Она проста в использовании и поддерживает множество языков. Эта библиотека является отличным выбором для создания приложений, которые требуют синтеза речи высокого качества.

Python
Скопировать код
from gtts import gTTS
import os

# Текст для синтеза
text = "Привет, как дела?"

# Синтез речи
tts = gTTS(text=text, lang='ru')
tts.save("output.mp3")

# Воспроизведение аудиофайла
os.system("mpg321 output.mp3")

pyttsx3

pyttsx3 — это оффлайн-библиотека для синтеза речи, которая работает без необходимости подключения к интернету. Она поддерживает различные движки синтеза речи, включая SAPI5 на Windows и NSSpeechSynthesizer на macOS. Эта библиотека является отличным выбором для приложений, которые должны работать в автономном режиме.

Python
Скопировать код
import pyttsx3

# Инициализация движка
engine = pyttsx3.init()

# Текст для синтеза
text = "Привет, как дела?"

# Синтез речи
engine.say(text)
engine.runAndWait()

espeak

eSpeak — это еще одна оффлайн-библиотека для синтеза речи, которая поддерживает множество языков и акцентов. Она работает на различных платформах, включая Windows, Linux и macOS, и может быть использована в мобильных приложениях.

Python
Скопировать код
import os

# Текст для синтеза
text = "Привет, как дела?"

# Синтез речи
os.system(f'espeak "{text}"')

Примеры использования библиотек для распознавания речи

Пример с использованием SpeechRecognition и микрофона

Python
Скопировать код
import speech_recognition as sr

recognizer = sr.Recognizer()

with sr.Microphone() as source:
    print("Скажите что-нибудь...")
    audio = recognizer.listen(source)

try:
    text = recognizer.recognize_google(audio, language="ru-RU")
    print(f"Вы сказали: {text}")
except sr.UnknownValueError:
    print("Не удалось распознать речь")
except sr.RequestError as e:
    print(f"Ошибка сервиса; {e}")

Пример с использованием pocketsphinx и аудиофайла

Python
Скопировать код
import speech_recognition as sr

recognizer = sr.Recognizer()

with sr.AudioFile('path_to_audio.wav') as source:
    audio = recognizer.record(source)

try:
    text = recognizer.recognize_sphinx(audio)
    print(f"Распознанный текст: {text}")
except sr.UnknownValueError:
    print("Не удалось распознать речь")
except sr.RequestError as e:
    print(f"Ошибка сервиса; {e}")

Пример с использованием vosk и аудиофайла

Python
Скопировать код
import vosk
import sys
import os
import wave
import json

if not os.path.exists("model"):
    print("Пожалуйста, скачайте модель с https://alphacephei.com/vosk/models и распакуйте ее в текущий каталог.")
    sys.exit()

model = vosk.Model("model")

wf = wave.open("path_to_audio.wav", "rb")
rec = vosk.KaldiRecognizer(model, wf.getframerate())

while True:
    data = wf.readframes(4000)
    if len(data) == 0:
        break
    if rec.AcceptWaveform(data):
        result = json.loads(rec.Result())
        print(f"Распознанный текст: {result['text']}")

Примеры использования библиотек для синтеза речи

Пример с использованием gTTS

Python
Скопировать код
from gtts import gTTS
import os

text = "Привет, как дела?"

tts = gTTS(text=text, lang='ru')
tts.save("output.mp3")

os.system("mpg321 output.mp3")

Пример с использованием pyttsx3

Python
Скопировать код
import pyttsx3

engine = pyttsx3.init()

text = "Привет, как дела?"

engine.say(text)
engine.runAndWait()

Пример с использованием espeak

Python
Скопировать код
import os

text = "Привет, как дела?"

os.system(f'espeak "{text}"')

Эти примеры помогут вам начать работу с распознаванием и синтезом речи на Python. Используйте их как основу для создания собственных приложений и экспериментов. Важно помнить, что каждая библиотека имеет свои особенности и ограничения, поэтому рекомендуется ознакомиться с документацией и примерами использования, чтобы выбрать наиболее подходящее решение для ваших задач. Удачи в изучении! 🚀

Читайте также