Нейроляпки: когда лень озвучивать книгу самому...

Автор: Евгений Задорожный

…я поручаю это скрипту…

Аудиокниги — формат востребованный, но дорогой в производстве. Дикторы, студия, сведение — это долго и затратно. Современные LLM предлагают альтернативу: полностью автоматизированный конвейер, где нейросеть сначала выступает в роли режиссера, размечая текст, а затем — в роли актеров озвучки.

Озвучивать одним нейросетевым голосом — это скучно. Поэтому я решил добавить сложности. 🙂

Режиссерский пульт: Промпт

Основа системы — запрос (промпт) к модели, которая должна превратить «простыню» текста в структурированный сценарий. Задача модели — не просто прочитать текст, а понять, кто именно говорит в данный момент, и расставить теги.

Чтобы модель понимала задачу, мы задаем жесткие рамки через системный промпт:

Ты профессиональный режиссер аудиокниг. Разметь текст по ролям.

ИНСТРУКЦИЯ:

Весь текст автора отдавай роли 'Narrator'. Для главного героя: 'Male_Hero'. Если повествование идёт от первого лица ГГ, то используй роль Narrator, а Male_Hero — только для его мыслей и реплик.

Прямую речь распредели по персонажам. ВЫБИРАЙ ТОЛЬКО ИЗ СПИСКА. Если нужной роли нет, выбери ближайшую по смыслу.

ВАЖНО: Если видишь в тексте разделители сцен (***, пустые строки с отбивкой), вставь отдельный элемент с ролью 'Silent_Break' и текстом «Пауза/Отбивка». Убери слова автора («сказал он»), если они лишние.


Список ролей и голосов:

«speakers»: {
«Narrator»: «Rasalgethi», «Narrator_Drama»: «Fenrir», «Narrator_Soft»: «Vindemiatrix»,
«Male_Hero»: «Orus», «Male_Deep»: «Puck», «Male_Calm»: «Umbriel», «Male_Villain»: «Algenib», «Male_Old»: «Gacrux», «Male_Casual»: «Zubenelgenubi»,
«Female_Hero»: «Zephyr», «Female_Strict»: «Kore», «Female_Soft»: «Achernar», «Female_Mature»: «Schedar», «Female_Mystic»: «Enceladus»,
«Child»: «Leda», «Robot»: «Iapetus», «Silent_Break»: «None»,
}


Кастинг голосов (Разметка)

После анализа текста скрипт получает структуру, где каждая реплика привязана к конкретному голосу. Для озвучки используется модель gemini-2.5-flash-preview-tts.

Вот как выглядит «разметка» сцены в опиумном притоне (Макао, 1888 год):

Narrator: Воздух в верхней галерее «Золотого Лотоса» был таким густым, что его хотелось сплюнуть. Пахло не дешёвой опиумной шелухой…

Narrator: Я стоял в тени тяжёлой парчовой портьеры…

Narrator: Моя цель — генерал Ли — сидел за низким столиком…

Далее происходит переключение на диалог с капитаном корабля:

Male_Old: Пятьдесят соверенов. И спишь на палубе с кули.

Male_Hero: Двадцать. И каюта.

Male_Old: Проваливай, белый дьявол. Мой корабль не возит нищих.

Голоса распределены в конфигурации следующим образом:

  • Narrator → Rasalgethi
  • Male_Hero → Orus
  • Male_Old → Gacrux

Оценка времени и лимиты

Gemini TTS может в одном фрагменте использовать только два голоса. На это ещё накладываются ограничения на длительность созданного фрагмента: оптимально до полутора минут. Иначе начинают вылезать звуковые артефакты, свист. Поэтому каждый чанк — не более 1000-1500 символов, примерно 150-200 слов.

Генерация одной главы на 15 минут речи занимает примерно 7 минут. Но у модели есть ограничение на 100 запросов API в день. И поскольку на одну главу тратится 10-12 запросов, генерация для всего романа займет 3-4 дня.

Код здесь: https://pastes.io/multi-voice-audiobook-generator-with-gemini-tts

Пример озвучки скриптом: 

Youtube: https://youtu.be/KVlE40Q0tNQ


-----

P. S. Для сравнения, попробовал и Elevenlabs: https://elevenlabs.io/app/studio/FnKnmnrI06wBWTBMtbFY — чуть чаще путает ударения, но позволяет более тонкие настройки. Качественное решение — не для ленивых 🙂

 

+24
137

0 комментариев, по

5 945 0 141
Мероприятия

Список действующих конкурсов, марафонов и игр, организованных пользователями Author.Today.

Хотите добавить сюда ещё одну ссылку? Напишите об этом администрации.

Наверх Вниз