Текст в ИИ-видео не с ошибкой — вы поймали его в движении
Шесть клипов покадрово: все 22 строки, названные в промпте, написаны верно. Решает всё тот текст, который никто не назвал.

Стандартный совет про текст в ИИ-видео — не генерировать его вовсе. Сделайте клип без надписей, заберите его в монтажку, наберите шрифт сами. На первой странице поиска это в том или ином виде пишут все, и причина у всех одна: видеомодели рисуют буквы как фактуру, а не набирают их посимвольно, поэтому надпись плывёт и от кадра к кадру выходит с ошибками.
Я пошёл проверять это на MiniMax H3 и нашёл то, что этот совет упускает.
Я взял шесть опубликованных примеров и прошёл их покадрово. Вместе они несут 22 надписи, которые промпт назвал поимённо. Как только каждая перестаёт двигаться, все 22 написаны верно — включая меню игры, список снаряжения и двухстрочную титульную карточку с подзаголовком.
В тех же клипах полно текста, который является полной абракадаброй, — а в двух из них есть надписи, которых никто не просил, которые модель придумала сама и которые она безошибочно писала каждый раз, когда они появлялись. Разобраться почему стоит дороже, чем сам заголовок: это говорит вам, какие из ваших собственных кадров в безопасности.
Как на самом деле выглядит «сломанный» кадр MiniMax H3
Вот одна панель меню из того же клипа, с разницей в полсекунды. Верхний кадр на 2,458 с, нижний на 2,958 с:

Верхний кадр — это тот самый скриншот, который выкладывают с подписью о том, что нейросети не умеют писать. Вторая строка там — смазанный полусформированный дубль строки над ней. Выглядит сломанным, потому что оно и есть сломанное — примерно четыре десятых секунды, пока панель дописывает вторую строку.
Дальше она разрешается в CHRONOS CLAW и такой и остаётся.
Я посчитал кадры. Панель приходит на 56-м кадре и уходит на 103-м. Вторая строка нечитаема с 56-го по 65-й и чиста начиная с 68-го. При 24 кадрах/с это окно в 0,4 секунды внутри двух секунд панели — примерно пятая часть её экранного времени выглядит орфографическим провалом и им не является.
Это важнее, чем звучит, потому что пятая часть — не настоящая вероятность попасть на такой кадр. Когда вы тянете плейхед, вы останавливаетесь там, где что-то происходит, а кадры, где что-то происходит, — ровно те, где шрифт ещё не устоялся. Перемотка смещена в сторону артефакта.
Поэтому первое правило процедурное, а не творческое. Оценивайте шрифт на кадре, где ничего не движется. А когда снимаете превью, снимайте его после того, как карточка зафиксировалась, — иначе вы сами выложите артефакт, и скриншотить будут вас.
Назовите строку — и MiniMax H3 её напишет
Теперь находка, которая меняет то, как вы пишете промпт.
Обе половины картинки ниже взяты из одного клипа, из одной генерации, с разницей в десять секунд:

Верхняя половина — чёткая. MINIMAX, RIGHT ARM EQUIPMENT, PHANTOM GRIP,
CHRONOS CLAW — всё верно, на панелях, которые едут, под движущейся камерой.
Нижняя половина — улица, забитая неоновыми вывесками, и ни на одной из них нет ни одного слова. Та же модель, тот же клип, тот же seed, десятью секундами позже.
Промпт объясняет это целиком. Он называет десять строк, и вот что вернулось:
| Строка, названная в промпте | Как отрисовалась |
|---|---|
START NEW GAME | верно |
CONTINUE | верно |
SETTINGS | верно |
EXIT GAME | верно |
MINIMAX | верно |
RIGHT ARM EQUIPMENT | верно |
PHANTOM GRIP | верно |
CHRONOS CLAW | верно |
ARMAMENT CUSTOMIZATION | верно |
CONFIRM CONFIG | верно |
Десять из десяти. А для улицы промпт попросил киберпанк-город и ни слова не сказал о том, что должно быть написано на вывесках, — поэтому модель сделала единственное доступное ей и нарисовала фактуру в форме вывесок.
Это то же самое поведение, которое измерили конкурирующие руководства. Они просто ни разу не развели эти два случая. «Текст рисуется как фактура, а не как символы» — справедливое описание фона, для которого промпт не написал ни одной надписи. Это не описание строки, которую вы модели передали.
В том же клипе есть и третий случай. Промпт просит сетку, «отображающую компоненты кисти, предплечья, локтя, плеча». Он описывает компоненты и ни разу не называет строку-подпись — и сетка возвращается иконками, под которыми текста нет вообще. Не искажён. Отсутствует.
Пока правило выглядит так: «названный текст пишется, неназванный — нет». Я в это верил, пока не проверил рекламный клип, и оно неверно.
Неназванный текст, который вышел безупречным
Ещё два клипа. Ни один не называет тот текст, который вы сейчас прочитаете:

Верхний кадр — реклама летнего напитка. Весь её промпт — одно предложение: велосипедист пересекает городок на холме, «открывает газированный лимонный напиток», комикс-графика. Никакого бренда. Никакого текста на этикетке. Вообще ничего в кавычках.
Модель придумала BRIGHTSIP, поставила его на бутылку и дальше написала верно
на четырёх этикетках в одном кадре под четырьмя разными углами, потом ещё
раз на главной бутылке девятью секундами позже и ещё раз на финальной карточке —
где она заодно придумала и безошибочно написала слоган TASTE THE SUN. Гнутое
стекло, меняющийся масштаб, движущаяся камера — и слово ни разу не ломается.
Нижний кадр — фотореалистичная реклама кресла. Её HUD-подписи — нечитаемые смазы, и это в том же клипе, чья финальная карточка несёт восемь верных символов.
Обе половины — неназванный текст. Одна безупречна, вторая шум: значит, назвать строку достаточно, чтобы её написали, но не это решает, будет ли строка написана. Решает то, есть ли у конкретной строки работа в кадре. Показ продукта не показ продукта без бренда на бутылке, поэтому модель бренд поставляет и держится за него. Технические показания — это декорация, никакое конкретное слово в них ничего не значит, поэтому модель рисует фактуру показаний. Сорок неоновых вывесок на фоне — тот же случай, что и HUD.
Называние — не выключатель, который включает орфографию. Это способ отобрать у
модели выбор. Оставленная сама с собой, H3 придумает вашему продукту имя — и
BRIGHTSIP вполне хорошая выдумка, только выбирали её не вы, брифовать её вы не
можете и на следующем дубле она к вам не вернётся.
То же самое ещё раз — в фотореализме, со всем текстом от модели
BRIGHTSIP — одно слово в комикс-графике, отмахнуться от этого легко. Поэтому
вот случай, от которого отмахнуться трудно: рекламный ролик утки по-пекински, и
каждое слово в нём принадлежит модели.

Это не рисунок. Это фотореалистичная реклама еды — студийный свет, влажные блики, сланцевая тарелка с отражением. И её промпт — это 655 символов, которые не называют ни одной строки. Вместо этого он называет язык:
Use clean, lightweight sans-serif typography throughout, with generous negative space and a consistent visual system. All Bahasa Indonesia text must be spelled and rendered correctly.
Модель написала рекламу сама. Пять строк, все на индонезийском, все верные:
Memperkenalkan (представляем), Kulit Sempurna (идеальная корочка),
Rasa Pro., Bebek Panggang. (жареная утка) и Beli Sekarang (купить сейчас).
Она заодно перевела и бриф: в промпте по-английски написано «Peking duck», а на
финальной карточке стоит Bebek Panggang.
Отсюда следуют две вещи, и они важнее самого клипа.
Фотореализм — не та переменная. Я исходил из того, что верные надписи, которые я замерял, верны потому, что они нарисованы: плоские буквы, которые модель красит, а не поверхность, которую ей надо осветить. Этот клип фотореалистичен ровно настолько же, насколько реклама кресла со смазанными HUD, и шрифт в нём безупречен. Разделяет их не стиль отрисовки.
Язык можно задать, не задавая слов. Это оказывается важным, потому что
полученный текст не обязательно на том языке, на котором вы писали. Клип с
креслом назвал свою финальную карточку по-английски — «Inspiration and Comfort
Online Simultaneously», — а модель отрисовала 灵感与舒适同时在线, китайский
эквивалент, и отрисовала верно. Верно и не то, о чём просили. Одна строка с
названием языка чинит это целиком.
Размер — не тот порог, о котором все думают
Самая повторяемая цифра в этом углу интернета: текст ниже примерно 40 px по высоте плывёт, потому что модели не хватает пикселей, чтобы написать буквы.
На этих клипах это не подтверждается. Промежуточные карточки в трейлерном
примере MiniMax — это 29–30 px высоты прописной в кадре 1280×720, ниже
порога, — и THE MISSION WAS A LIE написано верно. START NEW GAME меряется в
42 px и тоже верно.
Самая маленькая верная строка, которую я нашёл, ещё меньше, и она на
фотореалистичном клипе: Rasa Pro. — это 22 px прописной в кадре 1698×720,
три процента высоты кадра, и она чистая. Её тоже никто не называл.
Мелкий текст действительно даётся тяжелее. Но на этой модели высота — не то, что предсказывает, выйдет ли строка написанной.
Как назвать строку, чтобы она отрисовалась
Конкретно — четыре вещи, и все они сняты с промптов, которые сработали:
- Поставьте её в кавычки, капслоком, ровно в том виде, в каком хотите.
Работает форма
Cursor clicks "CONTINUE". Описание кнопки как «кнопки продолжения» даёт модели форму для закрашивания, а не слово для написания. - Скажите, где она стоит. «Right side displays game menu UI», «Top left displays player profile». Текст с позицией — это объект в сцене; текст без позиции — украшение.
- Режиссируйте шрифт отдельно от слов. Трейлерный промпт MiniMax тратит 90 слов на одну лишь подачу: межбуквенное расстояние, свечение, «шрифт не чисто белый», как надпись входит в кадр. Ни одно из этих слов не называет строку, и всё вместе делает так, что названные строки выглядят отрежиссированными, а не набранными.
- Назовите язык, даже когда не называете слов. «All Bahasa Indonesia text must be spelled and rendered correctly» — это вся текстовая инструкция в ролике с уткой, и каждая строка вернулась на индонезийском. Без неё вы получаете то, что подразумевает сцена, — так английский бриф и заканчивается китайской финальной карточкой.
И следствие, которое как раз экономит деньги: неназванная вывеска никогда не нейтральна. Что бы на ней ни было написано, это кто-то решил, и если не вы, то модель — либо в виде фактуры, которую вам придётся обрезать, либо в виде названия бренда, с которым вам теперь жить.
Где отрисовка текста в MiniMax H3 всё-таки ломается
Три честных предела, и все три видны на клипах выше.
Вёрстка — это не орфография. Посмотрите ещё раз на верхнюю половину
сравнительной картинки: CHRONOS CLAW появляется дважды, на двух соседних
строках. Каждая буква верна, а список неверен. Модель — надёжный наборщик и
ненадёжный интерфейсный дизайнер, и это разные задачи.
Реквизит остаётся абракадаброй, и вычерпать это называнием получится не до конца. Вы можете назвать три вывески, которые важны. Сорок вывесок вы назвать не можете, а плотной городской улице нужно сорок.
Есть ровно одна клетка, которую я заполнить не могу: фотореалистичный шрифт на изогнутой поверхности. В игре две переменные, и развести их стоит, потому что большинство советов по этой теме схлопывают их в одну.
| Шрифт на плоскости | Шрифт, обёрнутый по изогнутой поверхности | |
|---|---|---|
| Рисованное / комикс | верно — трейлерные карточки, игровой интерфейс | верно — BRIGHTSIP, четыре угла на стекле |
| Фотореализм | верно — ролик с уткой | свидетельств нет ни за, ни против |
Ролик с уткой отменяет версию «дело в фотореализме». BRIGHTSIP отменяет версию
«дело в кривизне». Ни один из них не отменяет их сочетание, и есть физическая
причина ждать, что тяжёлым окажется именно оно: рисованная этикетка — это форма,
которую модель наносит на стекло, а фотореалистичную приходится перепроецировать
и заново освещать под каждым новым углом.
Я пошёл искать такой случай, и в библиотеке его нет. Из 102 записей единственный фотореалистичный клип, чей промпт действительно просит «ultra-slow rotating close-ups», — это утка, а у утки нет этикетки. Авторы, работающие с фотореалистичными бутылками, сообщают, что этикетка ломается с первого кадра и не выживает ни при генерации из фотографии, ни при генерации по референсному изображению. Я этого не воспроизводил и не собираюсь утверждать это с чужого скриншота — но именно здесь правилу логично закончиться, и это первое, что я бы проверил, будь кадр моим.
Это отобранные примеры. Четыре клипа из шести — собственная витрина MiniMax, два — работы сообщества из той же библиотеки, так что они представляют удачный день, а не средний, и 22 из 22 — не та цифра, которую стоит ждать от повторения. Отбор переживает закономерность, а не счёт, — и переживает отчасти потому, что абракадабра лежит здесь же, в тех же отобранных клипах. Вендор, черри-пикающий результаты, эту улицу бы не выпустил.
Для той единственной строки, которая обязана быть верной всегда
Названные строки отрисовываются верно — и остаются генерацией. Верно на этом дубле не значит верно на следующем, и если строка — это ваш бренд, название продукта или настоящий заголовок, то «обычно верно» спецификацией не является.
Есть маршрут, убирающий бросок кубика: положите слова в референсное изображение. Тогда у модели есть готовый блок для совпадения, а не буквы для рисования, — она вообще не отрисовывает шрифт, и варьироваться нечему. В трейлерном примере MiniMax единственная нарисованная двухстрочная титульная карточка сделана именно так: это входное изображение, оно на экране в начале и ещё раз в конце.
Полный разбор — в статье как сделать трейлер на MiniMax H3, там же лежит тайминг по событиям.
Итого разделение труда такое:
| Назвать в промпте | Положить в референсное изображение | |
|---|---|---|
| Для чего лучше | подписи меню, титры-перебивки, важные вывески | бренд, название продукта, настоящий заголовок |
| Верно сейчас | да, 22 из 22 на этих клипах | да, для шрифта, остающегося на плоскости |
| Верно на следующем дубле | это генерация, значит перебрасывается | идентично |
| Текст и язык | язык фиксируйте отдельно, иначе получите то, что подразумевает сцена | что на картинке, то и будет |
| Чего стоит | ничего | один референсный слот |
У правой колонки есть граница, и она та же, что и выше. Титульная карточка — это плоскость, которую модель удерживает. Этикетка, обёрнутая вокруг вращающейся бутылки, — поверхность, которую ей приходится перерисовывать под каждым новым углом, и передача референса эту перерисовку не убирает. Считайте маршрут через референсное изображение решённым для плашек и недоказанным для всего изогнутого.
Как проверить свой клип примерно за минуту
Не судите по плееру. Разложите весь клип разом, а потом вернитесь в полном разрешении к тому, что выглядит неправильно:
# примерно каждый второй кадр, одной контролькой
ffmpeg -i clip.mp4 -vf "fps=2,scale=320:-1,tile=5x7" -frames:v 1 sheet.png
# затем подозрительный момент, в полный размер, точный кадр
ffmpeg -i clip.mp4 -vf "select='eq(n,59)'" -fps_mode passthrough frame.pngЕсли строка читается неправильно на контрольке, вытащите кадры по обе стороны от неё, прежде чем делать выводы. В этих шести клипах каждая строка, выглядевшая сломанной на первом проходе, оказывалась в середине анимации, — и хотя неназванный текст не сломан автоматически, всё сломанное было неназванным.
Попробуйте
Самая быстрая версия проверки: впишите в промпт одну строку в кавычках, сгенерируйте на 8 секундах и пройдите результат покадрово.
Видео по тексту сделает это из одного предложения. Если слова обязаны быть точными каждый раз, принесите своё изображение в генерацию по референсному изображению и пусть их несёт картинка.
Клипы, промпты и референсные изображения, о которых здесь речь, взяты из awesome-minimax-h3-prompts, CC BY 4.0. Четыре приписаны MiniMax; реклама лимонада и ролик с уткой — работы сообщества из той же библиотеки, авторства Hemanth и Feyber соответственно. Промпт ролика с уткой процитирован целиком по оригинальной публикации автора, потому что библиотека несёт только выдержку. Номера кадров, тайминги, высоты прописных и все строки выше считаны с самих файлов.
Автор
Редакция
minimax-h3ai.video
Опубликовано на нейросети для генерации видео MiniMax H3 — независимом стороннем интерфейсе к модели MiniMax H3.


