Зачем я выбрал Astro для контентного сайта: архитектура островов, минимум JS, три режима рендеринга, Content Collections и сравнение с конкурентами.
Я научил сайт говорить, и он первым делом переврал собственное имя
Как я учил pimenov.ai говорить вслух: тесты MiniMax и Yandex SpeechKit, война с произношением, полные аудиоверсии и краткие аудиообзоры, плюс оглавления, нормальные таблицы и даты в поиске.
Три месяца назад мой сайт умел только читать. Я долго копил на нём длинные тексты: статьи, заметки, практические разборы, целую базу знаний. А позавчера я решил научить его говорить вслух. И знаете, что он сделал первым делом, когда заговорил? Гордо переврал собственное имя.
Синтезатор прочитал «pimenov.ai» не как «пименов эй ай», а примерно как «пимэнов яйяй». Сайт будто решил стать отдельным персонажем, причём не тем, который мне был нужен. Я слушал, как моя площадка представляется голосом иностранца, выучившего русский по обрывкам объявлений на вокзале, и понимал: я ввязался во что-то большее, чем «добавить аудио к страницам».
Почему нельзя просто скормить текст синтезатору
Сначала мне казалось, что всё просто. Берёшь текст страницы, отправляешь в синтез речи, получаешь аудио. Я попробовал и получил кашу: ссылки читались вслух целиком, английские термины превращались в фарш, технические команды звучали как заклинания, а ударения жили своей отдельной жизнью.
Стало понятно, что озвучка это не кнопка, а целый контур: как подготовить текст, как озвучить, как проверить, где хранить, как показать на сайте и где честно признаться, что это пока альфа. Примерно как нанять диктора, которому мало дать микрофон: ему нужен сценарий, словарь ударений и редактор, который не пустит в эфир «пимэнов яйяй».
Сначала был MiniMax
Первым кандидатом я взял MiniMax. У меня был ключ, token plan и понятный вопрос: вытянет ли он нормальные русские аудиоверсии.
Мы прогнали серию тестов русских мужских голосов. Отдельно гоняли голос Russian_ReliableMan, меняли скорость, слушали на 1.2 и на 1.1. На 1.1 он звучал спокойнее, ближе к тому, что можно терпеть в длинном материале.
Тут я сделал важную вещь: проверил не пару фраз, а полный текст статьи. Короткий тест почти всегда обманывает. На двух абзацах голос звучит прилично, а на восьмой минуте вылезают повторяющиеся интонации, роботические места, странные паузы и ударения, будто диктор спорит сам с собой.
Заодно я посмотрел в сторону voice clone. Идея была красивая до дрожи: клонировать мой собственный голос, и тогда аудио перестанет быть внешней озвучкой и станет продолжением сайта. Мы нашли на компьютере файл с моим голосом, попробовали прогнать тест и упёрлись: в моём token plan рабочий voice_clone был недоступен. Идея века подождёт до лучших времён.
Так что MiniMax как TTS работает, голоса годные, но по сумме цены, ограничений и качества на русском я пошёл дальше.
Потом был Yandex SpeechKit
Следующим я взял Yandex SpeechKit, и тут совпали сразу две вещи. Во-первых, у Яндекса есть приемлимая русская речь, которую логично тестировать именно на русскоязычном сайте. Во-вторых, Яндекс дал мне небольшой грант на тесты, так что для pimenov.ai это сейчас не просто доступный, но ещё и бесплатный экспериментальный контур.
Поэтому я и остановился на нём как на промежуточном решении: не потому что это идеальный голос навсегда, а потому что на этом этапе у него правильное соотношение цены, качества и скорости проверки гипотезы.
Из мужских голосов мы остановились на связке anton / neutral. А дальше началась самая смешная и самая полезная часть всей истории: произношение.
С «пимэнов яйяй» пришлось воевать всерьёз. Мы перебирали латиницу, кириллицу, паузы, дефисы и ударения, пока не нашли рабочую схему: «П+именов эйай», с ударением на «И» и без лишней паузы внутри «эйай». Заодно дрессировали технические слова: Codex, Directus, Notion, Synology и прочие термины, которые обычный синтезатор превращает в аудиоверсию опечатки. Где-то спасала кириллизация, где-то ударение, а где-то проще было переписать фразу по-человечески.
Почему база знаний не читается дословно
Самый ценный вывод пришёл на базе знаний.
Статью или пост в блоге ещё можно озвучивать почти целиком: там есть повествование, ритм, авторский текст. Синтезатор споткнётся на паре ударений, но материал останется слушабельным. А база знаний устроена иначе: ссылки, URL, HTTPS, команды, названия сервисов, таблицы, настройки. Прочитай это дословно, и получится не аудиоверсия, а шумовая дорожка для очень уставшего человека.
Поэтому я развёл два жанра. Статьи и блог озвучиваются как полные аудиоверсии. А материалы базы знаний превращаются в краткий аудиообзор: не диктовка инструкции, а человеческое вступление, после которого понятно, о чём текст и стоит ли открывать его глазами. Такие записи начинаются с честной фразы вроде «Это краткий аудиообзор материала», без разгона и без попытки изобразить подкаст.
Что получилось сейчас
Сейчас на сайте работает пилотный аудиоконтур.
На страницах материалов появился блок аудио: для статей и блога он называется «Аудиоверсия», для базы знаний «Краткий аудиообзор». Внутри обычный браузерный плеер, кнопки скорости и ссылка на скачивание MP3.
Скорости я сделал не для красоты, а для дела: 0.85x, 1x, 1.25x, 1.5x и 2.0x. При переключении пересчитывается время прослушивания, и это мелочь, которая радует: если файл идёт восемь минут, а вы слушаете на 2.0x, интерфейс показывает честные четыре минуты, а не исходную длину.
Формат публикации выбрал простой: MP3 64 kbps. Не самый роскошный звук на планете, но для голоса нормальный компромисс: файл маленький, грузится быстро, открывается почти везде.
Сами файлы лежат отдельно на VPS, у каждого материала папка вида /audio/{collection}/{slug}/{hash}/, рядом с audio.mp3 хранится сценарий и манифест генерации, чтобы потом было видно, из какого текста и каким голосом сделан файл. Метаданные живут в Directus в коллекции pimenov_ai_audio_variants, и сайт показывает только то аудио, у которого статус approved: сгенерировано не значит опубликовано.
Ещё появилась отдельная страница /audio/, аудиолента. Там материалы можно слушать подряд: карточка, короткое описание, плеер, ссылка на материал и скачивание. Для длинного сайта это уже отдельный режим: не «найти и прочитать», а «включить и идти дальше».
Почему это честная альфа
Я не хочу делать вид, что синтез уже звучит идеально. У Yandex SpeechKit есть ошибки: неверные ударения, иногда странная интонация, на длинном тексте голос становится чуть механическим. Это особенно слышно, когда в голове живёт ожидание настоящего человеческого голоса.
Поэтому в интерфейсе стоит честная пометка: «Альфа-версия: аудио подготовлено через Yandex SpeechKit, возможны ошибки». Мне нравится такая честность: она не прячет несовершенство, но и не отменяет пользу. Даже сейчас материалы можно слушать, понимать смысл и возвращаться к странице, если что-то зацепило. А дальше будут лучше сценарии, словари произношения и, может быть, тот самый клон голоса, когда он станет доступен и оправдан.
Три маленьких обновления в придачу
Пока сайт учился говорить, я заодно починил три вещи, которые давно просили внимания.
Первое: оглавление длинных материалов. На длинных страницах появилась навигация по разделам. На десктопе это аккуратная линеечка рядом с текстом, которая подсвечивает текущий раздел, на мобильном компактная плавающая навигация. Включается оглавление только там, где разделов реально много: короткий материал не притворяется сложнее, чем он есть.
Второе: нормальные таблицы. В технических материалах без таблиц никуда, но раньше они давали горизонтальную прокрутку даже на десктопе. Теперь на широких экранах они остаются таблицами, а на узких превращаются в читаемые карточки с подписями колонок. Старые таблицы из Directus и HTML дообогащаются прямо на клиенте.
Третье: даты в поиске. Теперь в выдаче видно, когда материал опубликован или обновлён. Если текст не менялся, показывается дата публикации, а если у него есть обновление, первая дата не дублируется и остаётся только «Обновлено». Мелочь, но шума в интерфейсе стало меньше.
А ещё в процессе видео
Параллельно идёт работа над видео-слоем через Remotion. Логика та же: материал может жить не только текстом, у него может быть аудиоверсия, короткое видео, визуальная выжимка. Я специально не сваливаю всё в одну кучу: аудио довожу своим контуром, видео через Remotion своим. И там тоже главный вопрос не «как сгенерировать», а «как опубликовать»: где видео стоит на странице, как не конфликтовать с плеером, какие версии считать approved.
Что дальше
Следующий шаг не в том, чтобы озвучить всё любой ценой. Я хочу спокойно пройтись по материалам и понять, где нужна полная аудиоверсия, где краткий обзор, а где аудио вообще не помогает.
Сначала сайт научился собирать и связывать материалы. Теперь он научился говорить: пока с акцентом, немного роботически, через Яндекс и с честной пометкой «альфа». Но это уже не концепт, а работающая возможность, которую можно слушать, проверять и улучшать. А имя своё он наконец произносит правильно, и за это я его уже почти зауважал.
По теме
Если у вас тоже есть длинные тексты или база знаний, которые хочется озвучить без боли с произношением и ударениями, — такой аудиоконтур реально собрать и довести до ума. Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Связанные материалы
Что такое Cloudflare Pages, как подключить репозиторий, настроить деплой, привязать домен и чем отличается от GitHub Pages и Vercel. Полное руководство для новичков.
Open-source CMS нового поколения от Cloudflare: TypeScript, Astro, sandbox-плагины, встроенный MCP-сервер и serverless-деплой. Позиционируется как современная замена WordPress.