Кампания
549 файлов
548 файлов соответствовали актуальным материалам сайта; один исторический вариант был корректно исключён.
Аудиоверсии сайта раньше создавал платный API Яндекса. Каждый новый материал означал внешний вызов, расходы и зависимость от чужой инфраструктуры. Задача была не просто поставить локальную модель, а заменить штатный маршрут без риска для уже работающего сайта.
На Mac mini развернули OmniVoice, создали голосовой профиль
sergey-v1 и собрали производственный контур с очередью,
проверкой качества, наблюдением и аварийным резервом. Codex помог провести
систему от первого образца до массовой публикации и внешней проверки.
Кампания
549 файлов
548 файлов соответствовали актуальным материалам сайта; один исторический вариант был корректно исключён.
Готовый звук
28,6 часа
102 972 секунды аудио общим объёмом около 824 МБ.
Контроль
548 из 548
Все актуальные материалы получили правильный новый адрес аудио; ошибок в финальной проверке не было.
Архитектура
Локальная машина не получила доступ к Directus и ключам Яндекса. Она видит только защищённую SFTP-очередь, забирает одно задание, создаёт аудио и возвращает результат. Координатор на VPS проверяет актуальность, публикует файл и пересобирает сайт.
sergey-v1.Качество
Синтезатор может выдать нормальный по длительности и размеру файл, но проглотить слово или повторить фрагмент. Поэтому контроль построили вокруг содержания, а не только вокруг технических параметров.
Распознанный текст сравнивается с исходным сценарием: система ищет смысловые расхождения, пропуски и подозрительные фрагменты.
Когда 22 нормальных файла получили тревогу GigaSTT выше 30%, whisper.cpp с large-v3-turbo подтвердил их качество без лишней перегенерации.
Если два независимых распознавателя не дают уверенности, результат остаётся на ручной проверке.
Безопасная миграция
Массовый проход не менял Directus, публичные адреса и текущие аудиоверсии. Все файлы сначала создавались в режиме предварительной генерации, а публикация началась только после полной сверки.
Новая коллекция не влияла на пользователей, пока генерация, распознавание и контрольные проверки не завершились.
Идентификатор, хеш текста и версия маршрутизации дали 548 точных совпадений, один исторический вариант и ни одного пропуска.
Только после сверки система обновила 548 материалов, пересобрала сайт и прочитала результат обратно.
Файлы Яндекса не удаляли: они сохранились как вариант отката и временный маршрут при недоступности Mac mini.
Надёжность
За 76,75 часа кампания встретилась с гонкой при записи состояния, истёкшим токеном, ростом служебных каталогов, заполнением диска и отключением электричества. Каждый сбой превратился в проверяемое ограничение системы.
Гонка вокруг .worker-state.json.tmp перезапускала LaunchAgent. Запись исправили и отдельно проверили восстановление процесса.
Перед удалением повторных проходов проверили 3422 отчёта и убедились, что загрузок и записей в Directus не происходило.
Вместо примерно 8,7 МБ служебных данных каждые пять минут координатор теперь сохраняет компактное резюме.
После возвращения электричества LaunchAgent поднялся, прочитал сохранённое состояние и продолжил работу.
Роль Codex
Работа не свелась к генерации кода. Codex помог проектировать очередь, сверять хеши и состояния, разбирать журналы VPS и Mac mini, собирать тесты, готовить откат и проверять уже опубликованный результат.
Финальный набор дал 313 из 313 успешных тестов, а локальная сборка Astro создала 65 страниц.
Контрольное задание получило статус mac_published, страница вернула 200, а аудиофайл корректно ответил на запрос фрагмента.
Результат
Mac mini с 48 ГБ памяти теперь ежедневно создаёт штатный голос сайта. Основной маршрут работает через OmniVoice, а Яндекс включается только как аварийный резерв, если локальный обработчик давно не подавал контрольный сигнал или задание вышло за срок.
У неё есть очередь, ограниченная зона доступа, проверка качества, наблюдение, восстановление и понятное право публикации.
Внешний TTS больше не нужен для каждого материала, но сохранён как осознанная страховка, а не удалён ради красивой схемы.
Предварительная генерация, сверка хешей, отдельный gate публикации и обратное чтение результата защитили сайт во время миграции.
Проект подтвердил, что один измеримый ИИ-процесс можно перенести на собственное железо и оставить управляемым в ежедневной эксплуатации.
Источник
В статье есть архитектура очереди, параметры голоса, двухступенчатая проверка, инциденты большой кампании, безопасная публикация и выводы после переноса первого процесса на собственное железо.
Разборы
Разбор
Сайт прошёл путь от первых TTS-тестов и борьбы с произношением pimenov.ai до 365 опубликованных аудиоматериалов, 21:25:01 звука и понятной стоимости через Yandex SpeechKit.
Открыть разбор →Разбор
Работа перестала зависеть от одного ноутбука: MacBook стал интерфейсом, Mac mini — постоянной агентной базой, iPhone — мобильными пультами, а сеть, NAS и VPN — управляемым слоем вокруг Codex.
Открыть разбор →Разбор
Связка человека, агента, Notion и кода, в которой мысль быстро превращается в опубликованный результат на живом сайте.
Открыть разбор →