Ворклог по задаче "Разработать собственный пайплайн озвучки вьетнамского языка и словарь аудио"
Полный промежуточный итог по TTS и локальной озвучке вьетнамского
Работа относится к задаче «Разработать собственный пайплайн озвучки вьетнамского языка и словарь аудио».
Исходная проблема
Изначально рассматривались browser speechSynthesis и затем генерация через OpenRouter + Google Gemini.
Browser speechSynthesis для вьетнамского оказался непригоден как базовый механизм курса: установка голоса непрозрачна, зависит от конкретного браузера/поставщика, может зависать на Downloading voices ..., а требовать от пользователя вручную устанавливать языковые голоса нельзя.
Далее был реализован TTS-пайплайн через OpenRouter. В целом он работает для обычного текста, но на минимальных входах обнаружилось критичное ограничение: при попытке озвучить одну отдельную букву OpenRouter/Gemini возвращает HTTP 400 или не даёт пригодного результата. Для обычного TTS это может быть допустимо, но для букваря — блокирующая проблема, потому что нам нужны отдельные буквы, графемы, короткие слоги и минимальные фонетические единицы.
Из-за этого была вынесена отдельная техническая ветка: «Исследовать и реализовать локальную TTS-озвучку через локальный сервер».
Переход к локальной генерации
Локально в Docker поднят проект VieNeu-TTS.
Пока используется версия 2, с которой уже были предыдущие эксперименты; существует и более новая версия 3.
Ключевой практический результат: VieNeu-TTS стабильно и чётко умеет озвучивать отдельные вьетнамские буквы/графемы. Это принципиально отличает его от текущего Gemini-пайплайна.
Почему это важно именно для букваря
Для вьетнамского нам нужен не просто универсальный «читатель текста», а генератор минимальных учебных единиц:
- отдельные гласные;
- отдельные графемы с тонами;
- короткие слоги;
- дифтонги/трифтонги;
- минимальные контрасты;
- отдельные слова;
- затем короткие фразы.
То есть TTS должен поддерживать адресный запрос вида: «озвучь именно эту графему/слог», а не требовать контекста предложения.
На этом критерии VieNeu-TTS уже показывает существенное преимущество.
Теоретическая база по тому, какие именно единицы нужно уметь озвучивать, зафиксирована в концептах:
- Вьетнамский алфавит и орфография;
- Фонетика и звуковая система вьетнамского языка;
- Тоны вьетнамского языка;
- Структура вьетнамского слога, дифтонги и трифтонги.
Пример: 18 форм группы A
Для базовой латинской формы a во вьетнамском есть три разные гласные:
a;ă;â.
Каждая из них может нести один из шести тонов, что даёт 18 письменных форм:
a á à ả ã ạ;ă ắ ằ ẳ ẵ ặ;â ấ ầ ẩ ẫ ậ.
VieNeu-TTS способен отдельно озвучивать такие минимальные единицы.
Для курса это означает естественную структуру:
графема → сохранённая аудиозапись.
После генерации каждый вариант можно сохранить в файловое хранилище и использовать повторно без обращения к TTS на каждом воспроизведении.
Акустическая ценность синтетического набора
По спектрограмме сгенерированного набора видно, что отдельные произнесения хорошо разделяются и обладают различимой внутренней структурой.
Для дальнейшего анализа полезно рассматривать 18 вариантов не как 18 полностью независимых классов, а как комбинацию двух факторов:
- качество гласного:
a / ă / â; - тон:
ngang / sắc / huyền / hỏi / ngã / nặng.
Теоретически это позволяет анализировать признаки раздельно:
- F1/F2 и длительность → какой гласный;
- F0-контур, длительность, энергия, voicing и признаки фонации → какой тон;
- затем объединять результат в конкретную графему.
Это может быть полезно не только для генерации, но и как основа синтетического ground truth для будущих экспериментов «звук → фонетические признаки/графема».
Почему VieNeu-TTS выглядит перспективно
Проект специализирован именно на вьетнамском языке, разработан во Вьетнаме и обучался на большом объёме вьетнамской речи. По имеющейся информации, версия 2 использовала более 10 000 часов вьетнамских записей.
Это не отменяет валидацию, но делает модель гораздо более релевантной для нашей задачи, чем универсальный мультиязычный TTS.
Валидация качества
Финальное качество отдельных звуков и тонов будет проверяться с носителями языка.
Проверять нужно прежде всего:
- различимость тонов;
- корректность
hỏi/ngã; - краткость
ă/â; - естественность отдельных букв/слогов вне контекста;
- региональный акцент;
- отсутствие артефактов на очень коротких входах.
Таким образом, архитектура доверия сейчас видится так:
VieNeu-TTS = основной локальный генератор кандидатов
носители языка = валидаторы качества
наша база = хранит подтверждённые/принятые аудиозаписи
Требования к этой части системы собраны также в концепте «Озвучка и аудиослой курса вьетнамского языка».
Архитектура хранения
Озвучку не нужно генерировать каждый раз.
Для каждой учебной единицы нужно хранить:
- текст/графему/слог;
- тип единицы;
- аудиофайл;
- движок и версию модели;
- параметры генерации;
- вариант произношения/диалект при необходимости;
- статус проверки;
- возможность перегенерации;
- возможность заменить синтетическую запись живой записью носителя.
Статусы разумно оставить в духе:
generated;needs_review;approved;rejected.
Текущий практический вывод
Для Vietnamguru локальный VieNeu-TTS сейчас выглядит намного более подходящим базовым механизмом для букваря, чем Google Gemini через OpenRouter, потому что он стабильно работает на минимальных входах и умеет озвучивать отдельные буквы/графемы.
Даже если позднее другой движок окажется качественнее на длинной речи, возможность надёжно синтезировать минимальные единицы — отдельный критичный критерий для нашего проекта.
Вся методическая рамка проекта собрана в концепте «Вьетнамский язык: система и методика изучения», а практическая разработка курса ведётся в задаче «Разработать систему изучения вьетнамского языка для взрослой аудитории».
Отказаться от зависимости от browser speechSynthesis для вьетнамского и реализовать управляемую генерацию, проверку и хранение озвучек через OpenRouter + Google Gemini.