Документация Twitch TTS
Страница озвучивает сообщения чата Twitch голосами сервиса /N/TTS: от «поставил токен и подключился» до тонкой настройки фильтров, прав зрителей и работы в OBS.
Быстрый старт
Чтобы озвучка заработала, нужны три вещи: токен /N/TTS, имя вашего канала и пара кликов.
- Получите токен /N/TTS Откройте профиль на сайте /N/TTS (вход там выполняется через Discord) и скопируйте личный API-токен.
- Вставьте токен Нажмите чип Токен не задан в шапке, вставьте токен в поле и нажмите «Сохранить токен». Чип станет зелёным: Токен ✓.
- Подключитесь к каналу
Введите имя канала Twitch (без
#) и нажмите «Подключиться». В плитке «Статус» загорится «Подключено». - Включите озвучку
Нажмите Все пользователи, чтобы озвучивались все сообщения чата, либо оставьте выключенным и разрешите зрителям команду
!tts(см. «Доступ к командам»).
Проверка за 10 секунд. Напишите в своём чате !tts привет. Стример и модераторы могут использовать команду всегда, без дополнительных настроек.
Страница только читает чат (подключение анонимное, без входа в Twitch), поэтому бот не отвечает на команды сообщениями в чате. Все подсказки и ошибки показываются на самой странице.
Токен и подключение
Для чего нужен токен
Токен выдаёт сервис /N/TTS. Он нужен для всего, что создаёт звук или меняет ваши данные:
| Действие | Нужен токен |
|---|---|
| Смотреть список голосов и их описания | Нет — список открыт всем |
| Список эффектов | Нет |
| Озвучка сообщений, предпрослушка ▶ | Да |
| Загрузка и удаление своих голосов | Да (свои голоса привязаны к токену) |
Состояния чипа токена
- Токен не задан — озвучка работать не будет, пока вы его не введёте.
- Токен ✓ — токен сохранён в этом браузере.
- Токен отклонён — сервер ответил ошибкой 401: токен неверный или истёк. Очередь остановлена, новые запросы не отправляются, пока вы не сохраните другой токен.
Куда уходят данные
Токен хранится только в вашем браузере (localStorage) и отправляется только на API озвучки в заголовке Authorization. Подробнее — в разделе «Данные и приватность».
Подключение к каналу
Введите имя канала и нажмите «Подключиться» (или Enter в поле). Последний канал запоминается. Состояния подключения:
- серый — ожидание или отключено;
- жёлтый — идёт подключение;
- зелёный — подключено, сообщения читаются;
- красный — ошибка чата, проверьте имя канала и интернет.
Чтобы подключаться автоматически при открытии страницы, см. «OBS и автоподключение».
Обзор интерфейса
Плитки состояния
Статус подключения, канал, число сообщений в очереди и то, что звучит прямо сейчас. Число в очереди дублируется в заголовке вкладки: (3) Twitch TTS.
Строка управления
Кнопки групп авто-озвучки, бейджи доступа к командам, «Скип» (пропустить текущее) и «Очистить очередь» (остановить звук и удалить всё).
Голоса
Поиск, категории, предпрослушка, копирование ID и добавление своих голосов.
Зрители
До 100 последних авторов сообщений: назначить голос или перестать слушать зрителя.
История
Последние 50 озвученных сообщений с кнопкой «озвучить ещё раз».
Настройки
Выезжающая панель: токен, озвучка, фильтры, автоподключение, резервная копия, список команд.
На экранах уже 900 px три панели превращаются во вкладки «Голоса / Зрители / История», а шапка перестаёт закрепляться.
Бейджи доступа
Показывают, кому из зрителей сейчас разрешены команды !tts и !s:
VIP: открыт All: закрыт. Управляются командами !open / !close.
Голоса
Голоса сгруппированы по категориям (игры, фильмы, стримеры и т. д.). Свои голоса всегда закреплены сверху в категории «Мои голоса». Остальные категории свёрнуты — раскрытое состояние запоминается.
- Поиск работает по названию, ID, категории и описанию; во время поиска все подходящие категории раскрыты.
- Описание голоса появляется во всплывающей подсказке при наведении на строку.
- ID голоса — клик по нему копирует идентификатор (он нужен для команды
!s). - Предпрослушка ▶ озвучивает фразу «так звучит мой голос» с текущими громкостью и эффектом. Нужен токен.
Если голоса не загрузились, вместо списка появится кнопка «Повторить». Страница не требует токена, чтобы показать список, но если анонимный доступ вдруг перестанет работать, сохраните токен: запрос с ним может пройти.
Свои голоса
Вы можете создать голос по образцу записи. Кнопка «Добавить свой голос» открывает форму:
- Имя голосаЛюбое название для себя. Из него автоматически подставляется ID: кириллица транслитерируется («Мой Голос» →
moy_golos). - ID голосаИменно он отправляется на сервер как
speaker_name. Допустимы латиница, цифры и_. Поле можно править вручную: после первой правки автоподстановка из имени прекращается. - АудиофайлОбразец голоса. Требования к длительности и формату определяет сервис /N/TTS; если файл не подошёл, страница покажет ответ сервера.
- Если ID уже занят (встроенным или вашим голосом), поле сообщает об этом сразу, и отправка блокируется — раньше такой голос загружался и пропадал из списка.
- После загрузки список обновляется, голос появляется в «Мои голоса» с кнопкой удаления. Удаление необратимо и требует подтверждения.
- Свои голоса привязаны к токену и доступны с любого устройства, где введён тот же токен.
Голоса зрителей
У каждого зрителя свой голос. Когда его сообщение озвучивается впервые, голос выбирается случайно и запоминается, поэтому он не меняется от сообщения к сообщению.
Как сменить голос зрителю
- В колонке «Зрители» нажмите кнопку с названием голоса (или «Назначить голос»), найдите голос и выберите его. Пункт «— без голоса —» сбрасывает назначение, голос снова будет выбран случайно.
- Зритель сам пишет
!s id_голоса, если у него есть доступ к командам. - Модератор пишет
!s ник id_голоса.
Кнопка игнора
Значок динамика в строке зрителя добавляет его в список игнорируемых: его сообщения и команды больше не обрабатываются. Он остаётся в списке зачёркнутым, чтобы вы могли вернуть его в один клик. Стримера игнорировать нельзя.
Голоса и игнор-лист привязаны к логину зрителя. Зритель, сменивший ник, будет считаться новым.
История озвученных сообщений
В панель попадают последние 50 сообщений, которые начали звучать: время, зритель, голос и текст. Кнопка со стрелкой ставит сообщение в очередь ещё раз (повтор помечается «повтор» и проходит без фильтров). Кнопка с корзиной очищает историю.
История хранится только в памяти страницы и пропадает при перезагрузке.
Команды чата
Нажмите значок копирования, чтобы скопировать команду.
Зрителям (если им открыт доступ)
!tts текстозвучить текст!s id_голосасменить свой голос; подойдёт ID или точное название голосаМодераторам и стримеру: авто-озвучка
!tts onозвучивать все сообщения чата; сбрасывает ручные списки, выключает random и очищает очередь!tts offвыключить озвучку всех сообщений (те же сбросы)!tts on vipвключить для VIP (как кнопка Vip)!tts off modsвыключить для модераторов; ключевые слова: vip, mods, all!tts on никвсегда озвучивать этого зрителя!tts off никне озвучивать этого зрителя автоматически!tts random 10раз в 10 секунд озвучивать случайное сообщение!tts random offвыключить рандомную озвучку!tts clearостановить звук и очистить очередьМодераторам и стримеру: доступ и голоса
!openоткрыть команды всем зрителям и VIP!closeзакрыть для всех и сбросить персональные разрешения!open allоткрыть для всех зрителей (!close all — закрыть)!open vipоткрыть для VIP (!close vip — закрыть)!open никразрешить конкретному зрителю (!close ник — запретить)!s ник id_голосаназначить голос другому зрителюСлова-команды у модераторов. Если модератор пишет !tts on, !tts off, !tts clear или !tts random …, это всегда управление, а не текст для озвучки.
Голос из нескольких слов. У модератора !s Джо Байден будет понято как «назначить голос Байден зрителю Джо». Для себя указывайте ID голоса.
Доступ к командам
Команды !tts и !s проверяют права по порядку:
- Стример и модераторы — всегда можно.
- Зритель, которому написали
!close ник— нельзя, даже если открыто для всех. - Если открыто для всех (
!open all) — можно. - VIP при открытом для VIP — можно.
- Зритель, которому написали
!open ник— можно. - Иначе — нельзя, команда молча игнорируется.
Доступ к командам и авто-озвучка не зависят друг от друга: авто-озвучка читает обычные сообщения и не требует прав на команды.
Состояние доступа хранится в памяти и сбрасывается при перезагрузке страницы: после неё все команды для зрителей снова закрыты.
Авто-озвучка
Автоматическая озвучка читает обычные сообщения, без команд. Она включается кнопками в строке управления или командами из раздела выше:
| Кнопка | Что озвучивается |
|---|---|
| Vip | Сообщения VIP |
| Mods | Сообщения модераторов и стримера |
| Все пользователи | Все сообщения |
Персональные правила сильнее групп: !tts on ник озвучивает зрителя даже при выключенной группе, а !tts off ник отключает ему автоматическую озвучку (команда !tts у него при этом работает по правилам доступа). Количество персональных правил показано рядом с кнопками: «Включено вручную / Отключено вручную».
Включённые группы и персональные списки запоминаются между сеансами.
Рандомная озвучка
Команда !tts random n включает режим, в котором озвучиваются случайные сообщения тех зрителей, которым авто-озвучка не включена. Это удобно, чтобы «подсвечивать» живой чат, не читая его целиком.
- С момента включения страница копит сообщения в пул (до 100 штук).
- Каждые n секунд (минимум 1) из накопленных выбирается одно случайное сообщение и ставится в очередь.
- После выбора пул очищается — копить начинается заново.
Сообщения зрителей с включённой авто-озвучкой в пул не попадают (иначе они прозвучали бы дважды). К рандому применяются анти-спам и ограничение очереди; лимит на одного зрителя не применяется. Режим не сохраняется между перезагрузками.
Настройки: озвучка
Открываются кнопкой «Настройки» в шапке. Все изменения сохраняются сразу.
| Параметр | По умолчанию | Описание |
|---|---|---|
| Громкость | 100% | Громкость озвучки и предпрослушки; меняется на лету, даже во время звучания. |
| Эффект голоса | Без эффекта | Аудиоэффект сервера для всех сообщений и предпрослушки (список ниже). |
| Макс. символов | 400 | От 10 до 500. Слишком длинные сообщения пропускаются целиком, а не обрезаются. Считается после очистки текста. |
| Пауза между сообщениями | 4 с | От 0 до 30 секунд. Соблюдается всегда, даже если новое сообщение пришло во время паузы. |
| Готовить следующее заранее | Вкл | Пока играет текущее сообщение, следующее уже синтезируется — паузы между репликами короче. |
| Лимит на одного зрителя | Выкл, 10 с | Не чаще одного сообщения от зрителя за N секунд (1–600). Касается и авто-озвучки, и !tts. Модераторов и стримера не ограничивает. |
Эффекты голоса
Список загружается с сервера, поэтому он всегда актуален:
Настройки: фильтры чата
| Фильтр | По умолчанию | Что делает |
|---|---|---|
| Игнорировать ботов | Вкл | Не читает и не показывает в списке сообщения известных ботов: Nightbot, StreamElements, Streamlabs, Moobot, Fossabot, WizeBot, Own3d, DeepBot, CoeBot, RevloBot, CommanderRoot, SoundAlerts, KofiStreamBot, Blerp, Streamholics и других. |
| Не зачитывать смайлы Twitch | Вкл | Вырезает смайлы Twitch из текста («Kappa привет Kappa» → «привет»). Сообщение из одних смайлов не озвучивается. |
| Сжимать повторы | Вкл | Буква, повторённая больше трёх раз, сокращается до трёх («аааааааа» → «ааа»); слово, повторённое три раза подряд и больше, — до двух («лол лол лол лол» → «лол лол»). |
| Не зачитывать @упоминания | Выкл | Убирает слова вида @ник. |
| Анти-спам | Выкл | Не озвучивает повторно одинаковый текст в течение 30 секунд. Регистр, пробелы, знаки препинания и растянутые буквы различиями не считаются («Привет, ЧАТ!!!» и «привеет чат» — одно и то же). Работает для авто-озвучки и random, но не для явной команды !tts. |
| Запрещённые слова | Выкл | Сообщение, содержащее любое слово или фразу из списка (без учёта регистра, как часть текста), не озвучивается. Действует на всё: авто-озвучку, random и !tts, в том числе у модераторов. |
| Игнорируемые зрители | пусто | Логины по одному на строку. Сообщения и команды этих зрителей игнорируются. Тот же список меняется кнопкой в колонке «Зрители». |
Ограничения. Смайлы сторонних расширений (7TV, BTTV, FFZ) в данных Twitch отсутствуют, поэтому не вырезаются: добавьте их названия в «Запрещённые слова». В командах !tts вырезаются только смайлы, которые уже встречались в чате за этот сеанс.
Как обрабатывается сообщение
Порядок важен: он объясняет, почему то или иное сообщение не прозвучало.
- Боты и игнор. Известные боты (если фильтр включён) и игнорируемые зрители отбрасываются.
- Подходит ли сообщение. Оно должно попасть под авто-озвучку (группа или персональное правило) либо под random. Иначе оно игнорируется.
- Очистка текста: смайлы → ссылки и адреса сайтов → @упоминания → повторы → лишние пробелы.
- Пустое после очистки или начинающееся с
!— пропускается. - Длина больше лимита — пропускается.
- Запрещённые слова — пропускается.
- Очередь уже содержит 100 сообщений — пропускается.
- Авто-озвучка: анти-спам → лимит на зрителя → проверка токена → голос зрителя → в очередь.
Для остальных при включённом random сообщение попадает в пул для случайного выбора.
Для команды !tts порядок почти тот же: шаг 1 действует так же, вместо шага 2 проверяются права доступа (стример и модераторы проходят всегда), анти-спам не применяется, а лимит на одного зрителя — применяется.
Очередь, паузы и ошибки
- Сообщения озвучиваются по одному, в порядке поступления; в очереди помещается до 100.
- Скип прерывает текущее сообщение и сразу запускает следующее. Если сейчас пауза между сообщениями, «Скип» пропускает паузу.
- Очистить очередь останавливает звук и удаляет всё ожидающее (то же делает
!tts clear).
Что происходит при ошибках
| Ситуация | Поведение |
|---|---|
| Ошибка сервера (5xx) или сбой сети | Сообщение пробуется до 3 раз, затем пропускается с уведомлением. Остальная очередь не блокируется. |
| Ошибка запроса (4xx, например неподходящий текст) | Сообщение пропускается сразу. |
| 429 — слишком много запросов | Страница ждёт время, указанное сервером, и повторяет запрос. |
| 401 — токен недействителен | Очередь очищается и остановлена, пока не будет сохранён новый токен. |
| Браузер запретил автовоспроизведение | Сообщение возвращается в начало очереди; кликните по странице или нажмите клавишу — озвучка продолжится. |
Уведомления об ошибках исчезают через 7 секунд или по кнопке закрытия.
OBS и автоподключение
Чтобы страница подключалась к каналу сама, включите «Подключаться к каналу при открытии страницы» в настройках либо задайте параметры в адресе:
/?channel=имя_канала&autoconnect=1подключиться к каналу сразу/?channel=имя_каналатолько подставить канал/?autoconnect=0отключить автоподключение на этот разТокен через адрес не передаётся, это небезопасно.
Использование в OBS
- Добавьте страницу как источник «Браузер» (или как пользовательскую док-панель браузера).
- Чтобы озвучка шла отдельной дорожкой в аудиомикшере, в свойствах источника «Браузер» включите «Управлять звуком через OBS».
- В обычной вкладке или доке звук воспроизводится на системное устройство вывода, как у любой веб-страницы.
OBS хранит данные отдельно от вашего браузера. Токен и настройки, введённые в Chrome, в OBS не появятся. Введите токен прямо в OBS (ПКМ по источнику → «Взаимодействовать») или перенесите настройки через резервную копию.
Резервная копия
Раздел «Резервная копия» в настройках сохраняет и загружает JSON-файл. Он нужен, чтобы перенести настройки на другой компьютер или браузер либо не потерять их при очистке данных.
| Входит в файл | Не входит |
|---|---|
| Все настройки и фильтры, игнор-лист, запрещённые слова, голоса зрителей, включённые группы авто-озвучки и персональные списки | API-токен, история, очередь, режим random, права доступа !open |
Импорт заменяет текущие настройки и голоса после подтверждения. Некорректные значения в файле отбрасываются или приводятся к допустимым, повреждённый файл страница не применяет.
Данные и приватность
Что и где хранится
| Данные | Где | Сохраняется |
|---|---|---|
| API-токен | Ваш браузер | Да |
| Настройки и фильтры, игнор-лист, запрещённые слова | Ваш браузер | Да |
| Голоса зрителей | Ваш браузер | Да |
| Группы авто-озвучки и персональные списки | Ваш браузер | Да |
| Последний канал, раскрытые категории голосов | Ваш браузер | Да |
| Свои загруженные голоса | Сервер /N/TTS (по вашему токену) | Да |
История, очередь, список зрителей, random, права !open | Память страницы | Нет |
Данные браузера не синхронизируются между устройствами и пропадут при очистке данных сайта и в режиме инкогнито. Для переноса используйте резервную копию.
Куда отправляются запросы
- Чат Twitch — анонимное подключение только на чтение. Библиотека ComfyJS (версия 1.1.29) загружается с cdn.jsdelivr.net и защищена контрольной суммой (SRI).
- API озвучки /N/TTS — через зеркало
nttsfuckrkn.fdev.team(основной домен может быть недоступен из-за блокировок). Туда уходят текст озвучиваемого сообщения, ID голоса, выбранный эффект и ваш токен в заголовке.
Больше страница никуда ничего не отправляет: собственного сервера у неё нет.
Решение проблем
Сообщения не озвучиваются
Пройдите по списку сверху вниз:
- Статус «Подключено», канал указан верно.
- Чип токена зелёный Токен ✓.
- В колонке «Голоса» отображается число голосов (они загрузились).
- Включена нужная группа авто-озвучки (Vip / Mods / Все) или зрителю открыт доступ к
!tts. - Сообщение не отсеяно: лимит символов, запрещённые слова, анти-спам, лимит на зрителя, игнор зрителя или бота, сообщение из одних смайлов и ссылок. См. «Как обрабатывается сообщение».
- Плитка «В очереди» показывает число > 0, но звука нет — проверьте автовоспроизведение (ниже) и громкость.
«Кликните в любом месте страницы…»
Браузер не разрешает звук, пока вы не взаимодействовали со страницей. Кликните по странице или нажмите любую клавишу: сообщение, которое ждало, начнёт звучать. В источнике OBS обычно это не требуется.
«Сервер отклонил токен (401)»
Токен неверный или истёк. Скопируйте актуальный из профиля /N/TTS и сохраните его в настройках: очередь запустится заново.
Голоса не загрузились
Нажмите «Повторить». Если не помогло, проверьте интернет, VPN и блокировщики для nttsfuckrkn.fdev.team, а также попробуйте ввести токен в настройках: запрос с токеном может пройти, даже если анонимный не проходит.
Настройки пропали на другом компьютере или в OBS
Настройки хранятся в конкретном браузере. Перенесите их через «Резервную копию».
Зрителя не видно в списке или у нескольких зрителей один голос
Известное ограничение: ключом зрителя служит имя, очищенное до латиницы, цифр и _. Если отображаемое имя состоит из других символов, оно не распознаётся; если часть — из латиницы или цифр, ключ строится только из них (например, «Игрок123» превращается в «123»).
Читаются смайлы
Сторонние смайлы (7TV, BTTV, FFZ) страница отличить от слов не может. Добавьте их названия в «Запрещённые слова».
API /N/TTS
Страница работает с публичным API сервиса. Полная официальная документация — на ntts.fdev.team/docs. Ниже — что используется страницей.
| Запрос | Токен | Зачем |
|---|---|---|
GET /api/v1/tts/speakers | не нужен | Список голосов (и своих, если передан токен) |
GET /api/v1/tts/effects | не нужен | Список эффектов |
GET /api/v1/tts ?speaker=&text=&ext=wav&effect= | нужен | Синтез речи (звук wav) |
POST /api/v1/tts/speakers | нужен | Создание голоса: форма с полями audio и speaker_name |
DELETE /api/v1/tts/speakers/{id} | нужен | Удаление своего голоса |
Токен передаётся в заголовке Authorization: Bearer …. Страница обращается к зеркалу API: в адресах выше основной домен заменён на nttsfuckrkn.fdev.team.
Клавиатура и доступность
| Клавиша | Действие |
|---|---|
| Tab / Shift+Tab | Перемещение по элементам; в открытой панели настроек фокус не уходит за её пределы |
| Enter | Подключиться (в поле канала), сохранить токен (в поле токена) |
| Esc | Закрыть панель выбора голоса или настроек |
| / | На этой странице — перейти к поиску по документации |
Все кнопки и поля имеют подписи для скринридеров, фокус виден, ошибки объявляются автоматически, а контраст текста не ниже 4,5:1. Анимации отключаются, если в системе включено уменьшение движения.
Что нового
| Версия | Изменения |
|---|---|
| v8 | Добавлена эта документация и кнопка «Документация» на странице озвучки. |
| v7 | Новый интерфейс (шапка, плитки состояния, панель настроек, вкладки на телефоне); история с повтором; «Скип»; фильтры (смайлы, повторы, упоминания, запрещённые слова, игнор-лист, умный анти-спам, лимит на зрителя); предзагрузка и настраиваемая пауза; автоподключение и параметры адреса; резервная копия; транслитерация ID голоса. Исправлено: зависание очереди при ошибке сервера, повторная озвучка одного сообщения, потеря поиска, одновременная предпрослушка, обработка неверного токена, защита от недоступного localStorage; ComfyJS закреплён с контрольной суммой. |
| v6 | Настоящий случайный выбор в random; отдельное поле ID голоса и проверка занятости. |
| v5 | Эффекты голоса; список голосов без токена; описания голосов; громкость; игнор ботов; анти-спам; настраиваемый лимит символов. |
| v4 | «Сейчас звучит»; предпрослушка голоса; бейджи доступа; кнопка остановки очереди; адаптивная вёрстка; автоскрытие ошибок. |
| v3 | Кнопки групп авто-озвучки; выбор голоса зрителю из списка; список всех зрителей чата. |