Настройка синтеза речи (TTS)

Синтез речи (TTS) читает вслух сообщения чата и игровое повествование. В этом руководстве описано, как его включить, выбрать голосовой сервис и голоса, настроить автовоспроизведение и пользоваться кнопками у каждого сообщения.

Быстрый старт

  1. Откройте карточку синтеза речи (шаги ниже) и включите Use text to speech (использовать синтез речи).
  2. Выберите Source (источник) и вставьте ключ в поле API key (ключ API).
  3. Нажмите Preview (прослушать), чтобы услышать пример.
  4. В чате нажмите Speak (озвучить) под сообщением.

Включение синтеза речи

Почти все настройки TTS собраны в одной карточке. Включение TTS само по себе ничего не озвучивает. Оно показывает кнопку Speak у каждого сообщения и настройки Auto-play (автовоспроизведение). Что и когда читать, вы по-прежнему решаете сами.

  1. Нажмите Connections (подключения) на верхней панели, затем Add (добавить). Откроется окно Add account (добавить аккаунт).
  2. В разделе Voice (голос) выберите Text to speech (синтез речи). Откроется карточка. Если вы уже пользуетесь PocketTTS, та же карточка есть и в группе On this device (на этом устройстве).
  3. Включите Use text to speech. Пока эта настройка выключена, вслух ничего не читается.
  4. Откройте список Source и выберите сервис.

Source – это сервис, который создает звук.

Marinara хранит отдельный сохраненный профиль для каждого источника: его ключ, адрес, модель, голоса и параметры. При переключении источника возвращаются его прежние настройки. Источник, который вы еще не настраивали, начинает со значений по умолчанию.

Запросы идут через собственный сервер Marinara. Ключ API хранится на сервере в зашифрованном виде. После сохранения в поле видны точки маскировки, а настоящий ключ никогда не возвращается в браузер.

Использование аудиоподключения

Если вы уже добавили аккаунт Audio (смотрите Поддерживаемые провайдеры ИИ), вводить его данные заново не нужно. Он появляется в списке Source в группе Audio providers (аудиопровайдеры), а в скобках указан тип его источника.

  1. Откройте список Source и выберите аккаунт.
  2. Выберите его голоса и остальные настройки, описанные ниже.

Тогда Marinara использует адрес, ключ, модель и Request timeout (seconds) (тайм-аут запроса в секундах) этого аккаунта, поэтому карточка скрывает эти поля. Ключ остается в аккаунте: он никогда не копируется в карточку и не отправляется в браузер. Изменения в аккаунте, например новый ключ, вступают в силу сразу.

Голоса, скорость и остальные настройки речи сохраняются отдельно для каждого аккаунта. Два аккаунта одного типа никогда не делят их между собой. Ваши настройки для четырех обычных источников остаются прежними. Переключатель карточки по-прежнему включает и выключает обычный синтез речи.

Если выбранный аккаунт удален или им нельзя воспользоваться, карточка показывает Missing Audio provider, и ничего не озвучивается, пока вы не выберете другой источник. Marinara никогда не переключается сама. Если аккаунт отдает список своих голосов, карточка называет каждый сохраненный голос, которого нет в этом списке.

Настройка адреса, ключа и модели

Пропустите этот раздел, если выбрали аккаунт Audio. Эти данные берутся из аккаунта.

  1. Проверьте поле Base URL (базовый адрес). Каждый источник подставляет значение по умолчанию (таблица ниже). Меняйте его только для прокси или сервера, который вы запускаете сами.
  2. Вставьте ключ в поле API key. Чтобы сохранить прежний ключ, не трогайте точки маскировки. Чтобы удалить ключ, очистите поле.
  3. Проверьте поле Model (модель). Каждый источник подставляет модель по умолчанию. Можно вписать другую модель, которую поддерживает ваш сервис.
ИсточникBase URL по умолчаниюМодель по умолчаниюГолос по умолчанию
OpenAI-compatiblehttps://api.openai.com/v1tts-1alloy
ElevenLabshttps://api.elevenlabs.ioeleven_multilingual_v2нет, нужно выбрать самостоятельно
PocketTTShttp://localhost:8000pocket-ttsalba
xAI Voicehttps://api.x.ai/v1grok-ttseve

Для ElevenLabs список Model загружает речевые модели, доступные вашему аккаунту. Выбирайте обычную речевую модель. Модели, в идентификаторе которых есть ttv, предназначены для конструирования голоса и читать текст не умеют. Если выбрать такую модель, воспроизведение прервется ошибкой с просьбой указать речевую модель.

PocketTTS

PocketTTS не встроен в Marinara. Установите официальный сервер PocketTTS отдельно и запустите его командой uvx pocket-tts serve. Marinara не загружает его и не управляет им. Официальный сервер использует http://localhost:8000. Оставьте это значение в Base URL, если не меняли хост или порт. Marinara определяет официальный multipart API /tts. Собственные URL для OpenAI-совместимой обертки PocketTTS по-прежнему работают.

Тайм-аут запроса

Marinara ждет каждую озвученную реплику до 60 секунд. Голосовому серверу на вашем собственном компьютере, особенно на ноутбуке, для длинной реплики может понадобиться больше времени. Увеличьте Request timeout (seconds) под полем Model. Диапазон – от 10 до 3 600 секунд.

У аккаунта Audio есть собственное поле Request timeout (seconds) под полем Default voice (голос по умолчанию) в его редакторе. Чаты, которые озвучиваются через аккаунт Audio, в том числе выбранный как Source, используют этот лимит. Лимит карточки действует для речи по собственным настройкам карточки, включая Preview. Если реплика занимает слишком много времени, ошибка сообщает, сколько секунд ждала Marinara и какую настройку нужно увеличить.

Выбор голосов

Настройка Voice option (выбор голоса) определяет, как распределяются голоса.

Один голос для всех

Выберите голос в поле Shared voice (общий голос). Чтобы загрузить настоящий список голосов вашего сервиса, введите его данные и нажмите Refresh voices from provider (обновить голоса от провайдера; иконка круговой стрелки). Сначала эта кнопка сохраняет карточку, поэтому только что введенный ключ используется сразу. До подключения показывается короткий встроенный список, чтобы поле не было пустым. Если сервис вернул ошибку, показывается она, а запасной список не выдается за успешное обновление.

У официального сервера PocketTTS нет эндпоинта со списком голосов, поэтому Marinara показывает его встроенные голоса и оставляет рядом со списком текстовое поле для другого встроенного имени или поддерживаемого URL голоса. Совместимые серверы-обертки могут возвращать свой список и принимать собственные ID или пути.

Для ElevenLabs голос выбрать обязательно. Marinara загружает всю библиотеку аккаунта: личные голоса, голоса рабочего пространства, сохраненные и стандартные. В окне выбора есть поле поиска и счетчик загруженных голосов. Изначально в нем стоит "Select an ElevenLabs voice", и до выбора настоящего голоса воспроизведение заблокировано.

Отдельные голоса для персонажей и персон

  1. Установите Voice option в значение Selected per character or persona.
  2. В блоке Character and persona voices (голоса персонажей и персон) нажмите Add voice (добавить голос).
  3. Выберите персонажа или персону в левом списке и голос в правом.
  4. Повторите для каждого.

Голос персонажа можно задать и на вкладке Voice редактора Character Editor. Это меняет ту же строку. Refresh (обновить) в этом блоке перезагружает список голосов. Сначала создайте персонажей. Если их нет, приложение просит добавить персонажа или персону, прежде чем назначать голоса.

Персонаж без личного голоса использует голос карточки с совпадающим именем, например оригинала AU-копии (версии персонажа в альтернативной вселенной). Иначе он говорит общим голосом. См. Создание и редактирование персонажей.

Голос рассказчика

Повествование – это текст, который не произносит ни один персонаж: например, описание сцены или реплики ведущего игры.

  1. В блоке Narrator voice (голос рассказчика) включите Use separate narrator voice (использовать отдельный голос рассказчика).
  2. Выберите голос.

Этот голос звучит, когда автор реплики – Narrator, GM, Game Master или System, в сообщениях Roleplay и Conversation, а также в повествовании Game Mode без указанного автора. При работе с ElevenLabs выберите голос рассказчика здесь. Если оставить поле пустым, повествование получает запасной голос только при заданном глобальном голосе.

Случайные голоса NPC (только Game Mode)

Эта настройка выдает свободные голоса второстепенным игровым персонажам, за которыми следит Game Mode. В Roleplay и Conversation она ничего не делает.

  1. В блоке Random NPC voices (случайные голоса NPC) включите Use default voices for random NPCs (использовать голоса по умолчанию для случайных NPC).
  2. Отметьте голоса в Male NPC defaults (мужские голоса NPC по умолчанию) и Female NPC defaults (женские голоса NPC по умолчанию).

Отслеживаемый персонаж NPC без личного голоса получает устойчивый выбор из подходящего набора и сохраняет его до конца сессии. Персонаж NPC с назначенным голосом сохраняет этот голос. Персонажи NPC с неясным полом выбирают из обоих наборов. Если приложение не находит голосов с пометкой мужских или женских, каждый набор использует полный список.

Формат звука и скорость

Настройка Audio format (формат звука) – это MP3 (по умолчанию) или WAV. Выбирайте WAV для локальных серверов, которые не умеют отдавать MP3. Для ElevenLabs эта настройка скрыта: он всегда использует MP3. Для xAI Voice она видна, но ни на что не влияет, потому что xAI всегда возвращает MP3.

Диапазон ползунка Speed (скорость) зависит от источника:

ИсточникДиапазон
OpenAI-compatibleот 0,25 до 4,0 от обычной скорости
PocketTTSот 0,25 до 4,0 на совместимых обертках. Официальный сервер сам управляет скоростью.
ElevenLabsот 0,7 до 1,2 от обычной скорости
xAI Voiceот 0,7 до 1,5 от обычной скорости

Сохраненная скорость вне диапазона подтягивается к ближайшему допустимому значению. Для ElevenLabs есть еще две настройки: Language (язык; можно жестко задать язык или оставить Auto detect) и Stability (стабильность; от более выразительной речи к более ровной).

Автовоспроизведение

Каждый переключатель Auto-play читает один вид новых сообщений сразу после окончания генерации. Они работают только при включенном Use text to speech. Изначально все они выключены.

Автовоспроизведение срабатывает один раз – на самом новом ответе, в момент его завершения. Старые сообщения не перечитываются, когда вы открываете чат заново или прокручиваете его.

В Roleplay подготовка голоса начинается сразу после сохранения основного ответа. Если включенный агент переписывает ответ, например Prose Guardian, Marinara ждет окончательного текста.

Фильтры текста и указания эмоций

Эти фильтры действуют при ручном воспроизведении и автовоспроизведении, включая повествование Game и определение говорящих в Roleplay. Блоки кода пропускаются по умолчанию. Два других фильтра изначально выключены.

Включите Roleplay speaker extractor (определение говорящих в Roleplay), чтобы появился переключатель Enable emotion indicators (включить пометки эмоций). Пометки эмоций добавляют указания для голоса, не меняя слов реплик. Когда пометки эмоций включены, текст в квадратных скобках передается сервису синтеза речи, даже если включен Skip text inside square brackets. В этот текст могут входить и заметки. Чтобы заметки в скобках не попадали в озвучивание, выключите пометки эмоций и оставьте пропуск включенным. Указания вроде [Low, steady voice, restrained urgency] сохраняются целиком, когда длинная реплика делится на части. Известные метки говорящих и сцен по-прежнему удаляются. Модель синтеза речи сама решает, как использовать каждое указание. Когда включены Use text to speech, Game narration и пометки эмоций, указания могут появляться и в диалогах Game: в сценах, в разговорах отряда и в бою.

Озвучивание одного сообщения

При включенном TTS в панели инструментов под каждым сообщением персонажа или рассказчика появляется кнопка Speak (иконка микрофона).

Пока сообщение звучит, появляются кнопки Pause speaking (приостановить озвучивание), Resume speaking (продолжить озвучивание) и Restart speaking (озвучить заново). Кнопка с иконкой громкоговорителя открывает ползунок Line volume (громкость реплики) от 0 до 100 процентов (по умолчанию 50). Эта громкость не связана ни с микшером Game Mode, ни с громкостью звонков в Conversation.

Если не получилось, смотрите раздел Устранение неполадок.

Кешированные клипы

Marinara сохраняет сгенерированный звук в браузере, чтобы не создавать одну и ту же реплику дважды. Панель Cached clips (кешированные клипы) показывает текущее количество клипов и их общий размер. Нажмите Export cached TTS clips (экспортировать кешированные клипы TTS; иконка скачивания), чтобы сохранить все кешированные клипы отдельными звуковыми файлами. Кеш сам удаляет самые старые клипы. Кнопки очистки в приложении нет. Чтобы очистить кеш, удалите данные браузера.

TTS в разных режимах чата

Фонетическое имя (произношение в звонках)

Если голос неверно произносит имя персонажа или персоны, добавьте Phonetic name (фонетическое имя) и впишите, как оно должно звучать. В редакторе Character Editor это поле находится на вкладке Voice. В редакторе Persona Editor оно стоит среди полей основных сведений. Оно используется только во время аудио- и видеозвонков в Conversation. Speak, автовоспроизведение и повествование Game Mode его не учитывают.

Устранение неполадок

Справочник: музыка, звуковые эффекты и Gacha Forge

Эти разделы предназначены для продвинутых настроек.

Музыка и звуковые эффекты Game на совместимом аудиосервере

  1. В Connections откройте свой аккаунт Music & Sound Effects (музыка и звуковые эффекты) через Edit model (изменить модель) и выберите Custom compatible server (свой совместимый сервер). В окне Add account для этого типа аккаунта нет плитки: такой аккаунт появляется после обновления или импорта (смотрите справочник аккаунтов).
  2. Укажите адрес, ключ и модель своего сервера музыки или звуковых эффектов.
  3. Задайте Generation API format (формат API генерации) и введите пути эндпоинтов, которые предоставляет сервер. Пустой путь делает соответствующую возможность недоступной.
  4. Включите Music generation (генерация музыки), Sound-effect generation (генерация звуковых эффектов) или обе настройки.
  5. Выберите этот аккаунт при настройке Game или в настройках звука игры. Речевой аккаунт оставьте выбранным отдельно в карточке TTS.

Пути эндпоинтов добавляются к Base URL аккаунта. Для http://localhost:8002/v1 используйте chat/completions, чтобы обратиться к /v1/chat/completions. Локальным HTTP-эндпоинтам нужен TTS_LOCAL_URLS_ENABLED=true в .env, как и другим локальным запросам к совместимым аудиосерверам.

Поддерживаются два формата API:

Включайте только то, что сервер действительно реализует. Один лишь речевой эндпоинт, совместимый с OpenAI, не означает поддержки музыки или звуковых эффектов. Сервис вроде Infermatic должен предоставлять один из этих форматов или адаптер. Его действующий музыкальный эндпоинт здесь не проверялся. Для нативной генерации ElevenLabs или SunoAPI выберите соответствующий источник в Music & Sound Effects. Смотрите справочник аккаунтов.

Сгенерированная контекстная музыка создается один раз для области или уровня столкновения и используется повторно. Повторяющиеся звуковые эффекты используют аудиокеш. Ошибка генерации оставляет кеш доступным для новой попытки.

Диалоги и звук в Gacha Forge

Gacha Forge 1.11.0 и новее использует аккаунт, выбранный в карточке TTS, и назначенные для него голоса персонажей. - Включите Read character dialogue (читать диалоги персонажей), чтобы озвучивать диалоги импортированных персонажей с назначенным голосом. Эта настройка находится на шаге Lore (лор) настройки нового мира, а для существующего мира – в собственных настройках мира Gacha Forge. Повествование, мысли, созданные генерацией бойцы без ID персонажа Engine и персонажи без голоса не озвучиваются. Одно лишь совпадение имени никогда не дает взять голос другого персонажа.

Чтобы получить эти элементы управления, обновите и Engine, и установленный пакет Gacha Forge.

Смежные руководства