Разработать собственный пайплайн озвучки вьетнамского языка и словарь аудио
Контекст
Первичное исследование показало, что полагаться на браузерный speechSynthesis для вьетнамского языка нельзя.
Почему browser speechSynthesis не подходит
- В браузере голос для вьетнамского не удаётся надёжно установить.
- Доступный путь установки через Reading Mode неудобен для обычного пользователя: открыть режим чтения → настройки → языки → добавить вьетнамский → дождаться загрузки голосов.
- На практике после включения вьетнамского появляется
Downloading voices ..., после чего загрузка может зависать бесконечно. - Официальная документация не даёт прозрачной гарантии поддержки конкретного вьетнамского голоса.
- В исходниках Chromium язык может быть заявлен, но сам Chromium не содержит конечные голосовые словари: наличие и качество голоса зависит от конкретного поставщика браузера/сервиса, в нашем случае Google.
- Даже если голос доступен у разработчика, нельзя требовать от пользователя устанавливать дополнительные системные или браузерные словари ради работы курса.
Вторая проблема: качество
Разработчик не является носителем вьетнамского языка и не может самостоятельно гарантировать фонетическую корректность, естественность тонов и качество синтеза. Поэтому нужен контролируемый пайплайн генерации и последующая проверка носителем языка.
Решение
Реализовать собственный пайплайн озвучки через OpenRouter + Google Gemini.
Озвучку не генерировать при каждом пользовательском запросе. Вместо этого создать постоянный словарь аудио.
Базовая модель
- В системе появляется сущность/словарь единиц для озвучки: буква, слог, слово, фраза или другой учебный элемент.
- Для отсутствующей озвучки запускается генерация через OpenRouter + Google Gemini.
- Полученный аудиофайл сохраняется в файловом хранилище.
- Метаданные и связь с учебной единицей сохраняются в базе.
- При следующих обращениях используется уже сохранённый файл.
- Должна быть возможность перегенерации конкретной озвучки без изменения самой учебной единицы.
- Носитель языка позднее проверяет качество и отмечает подходящие/неподходящие варианты.
Что нужно продумать
- структуру сущности аудио в БД;
- типы озвучиваемых объектов: буква, звук, слог, слово, фраза;
- хранение исходного текста и параметров генерации;
- провайдера/модель и версию модели;
- формат и место хранения аудиофайлов;
- кеширование и повторное использование;
- статусы: сгенерировано / требует проверки / подтверждено носителем / отклонено;
- перегенерацию и версионность;
- различия северного и южного произношения, если понадобится несколько голосовых вариантов;
- массовую генерацию для букваря и словаря;
- возможность вручную загрузить эталонную запись носителя;
- интерфейс проверки качества.
Первый практический этап
Сначала обеспечить качественные озвучки для букваря:
- базовые гласные;
- согласные и сочетания;
- шесть тонов на одинаковом/сопоставимом слоге;
- основные дифтонги и трифтонги;
- примеры слов.
После подтверждения качества расширить тот же механизм на весь словарь курса.
Критерий результата
Пользователь получает озвучку без установки каких-либо системных голосов или словарей. Один и тот же учебный элемент воспроизводится из заранее сгенерированного и сохранённого аудио, а качество может быть независимо проверено и подтверждено носителем языка.