Когда мы начинали AI Teacher, модули чтения и письма казались самыми сложными. Оказалось наоборот — настоящий вызов начался, когда мы решили добавить Speaking и Listening. Бот должен был уметь произносить фразы на английском и, что сложнее, — понимать, что говорит пользователь.
// Listening: синтез речи через gTTS
Для модуля Listening нам нужен был способ озвучивать тексты на английском. Мы выбрали Google Text-to-Speech (gTTS) — бесплатный, качественный, поддерживает множество языков. GPT-4o генерирует текст по уровню пользователя (от A1 до C2), gTTS превращает его в аудиофайл, бот отправляет голосовое сообщение. После прослушивания — 10 вопросов на понимание с вариантами ответов.
// Speaking: распознавание через Vosk
С распознаванием речи всё интереснее. Мы попробовали Google Speech-to-Text API, но он стоит денег за каждый запрос. Vosk — открытая модель для оффлайн-распознавания — решила проблему. Модель весит ~50 МБ, работает на сервере без обращения к внешним API. Пользователь записывает голосовое, Vosk транскрибирует, а GPT-4o оценивает результат.
GPT-4o оценивает три параметра: произношение (насколько точно произнесены слова), грамматику (правильность построения предложений) и структуру (логичность и связность ответа). Каждый параметр — от 0 до 10.
// Архитектура пайплайна
Пайплайн выглядит так: Telegram присылает OGG-файл → pydub конвертирует в WAV → Vosk распознаёт текст → GPT-4o получает распознанный текст + оригинальное задание → возвращает JSON с оценками и рекомендациями. Весь процесс занимает 3-5 секунд. Результаты сохраняются в PostgreSQL для отслеживания прогресса.
// Что дальше
Сейчас мы экспериментируем с Whisper от OpenAI для более точного распознавания. Vosk отлично справляется с чёткой речью, но с акцентами и фоновым шумом бывают проблемы. Whisper значительно точнее, хотя требует отправки аудио на сервер OpenAI. Компромисс между приватностью и качеством — вечная дилемма.