RU ▾
API текста без цензуры для TTS-пайплайновhttps://api.ttsapihub.com/v1

Базовый URL TTS API: что это и что вводить

Базовый URL — это общая начальная часть адреса каждого эндпоинта. На этой странице объясняется, что туда нужно вводить для этого сервиса, который является текстовым LLM API, а не эндпоинтом для синтеза речи, и как его настроить в популярных инструментах.

Обновлено

Свечение блоков путей, разбивающихся на эндпоинты, иллюстрирует, как базовый URL ведет к маршрутам API

Ключевые моменты

  • Базовый URL для этого API — https://api.ttsapihub.com/v1; пути, такие как /chat/completions, добавляются после него.
  • Несмотря на название сайта, этот эндпоинт выдает только текст. Эндпоинта для синтеза речи или аудио нет.
  • Большинству инструментов, совместимых с OpenAI, нужны только три значения: базовый URL, API-ключ и ID модели uncensored.
  • Две распространенные ошибки — удвоение /v1 и вставка полного пути /chat/completions в поле базового URL.

Базовый URL и один важный нюанс

Если вы попали сюда по запросу «tts api base url», проверьте одну деталь перед копированием: сервис за этим сайтом — это API текстовой языковой модели, а не синтезатор речи. Базовый URL — https://api.ttsapihub.com/v1, он поддерживает POST /v1/chat/completions и GET /v1/models. Маршрута /audio/speech нет, списка голосов и вывода аудио тоже нет.

Это важно, потому что многие инструменты называют настройки обобщенно. Поле с названием базовый URL в клиенте работает одинаково, отвечает ли сервер текстом или звуком. Если ваша цель — превращение текста в аудио, этот эндпоинт не подойдет. Если же цель — генерация текста, который позже прочтет инструмент синтеза речи (для сценариев, диалогов или черновиков повествования), он отлично подойдет. На сайте есть чек-лист конвейера TTS, куда стоит заглянуть, когда вы планируете такой рабочий процесс, а в документации быстрого старта перечислены все параметры запроса.

Остальная часть этой страницы применима к любому клиенту, совместимому с OpenAI, поэтому она полезна, даже если вы здесь только чтобы узнать, как работают базовые URL.

Что на самом деле такое базовый URL

Адрес API состоит из двух частей. Первая часть идентифицирует сервис и версию его интерфейса. Вторая часть называет действие. Библиотека клиента объединяет их за вас. В SDK OpenAI эти части выглядят так:

ЧастьЗначение
Базовый URLhttps://api.ttsapihub.com/v1
Путь, добавляемый SDK для чата/chat/completions
Полный адрес, который вызываетсяhttps://api.ttsapihub.com/v1/chat/completions
Путь для списка моделей/models

Поскольку SDK добавляет путь, вы передаете ему только первую часть. В этом весь смысл перехода на другого провайдера с изменением одной строки: формат запроса общий, поэтому переместить нужно только место, куда отправляются запросы. Также меняется ключ, так как каждый сервис выдает свой собственный. И меняется идентификатор модели, потому что каждый сервис называет свои модели по-своему. Для этого API идентификатор модели — uncensored.

Две небольшие детали экономят время. Версия, /v1, относится к базовому URL, потому что она обозначает поколение интерфейса; будущий несовместимый интерфейс будет находиться под другой версией, и ваш код не изменится, пока вы не решите перейти на него. Конечный слэш в базовом URL большинство SDK воспринимают, но безопаснее его не указывать, чтобы объединенные пути никогда не содержали двойного слэша.

Аутентификация — это стандартный заголовок bearer: Authorization: Bearer YOUR_KEY. SDK формируют этот заголовок из ключа, который вы передаете, поэтому вы редко пишете его вручную, кроме случаев с curl.

Настройка базового URL в коде

Python

Официальный пакет openai принимает аргумент base_url. Это полностью рабочий вызов:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.ttsapihub.com/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a two-line scene opening."}],
)
print(resp.choices[0].message.content)

Node

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.ttsapihub.com/v1",
  apiKey: process.env.API_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Write a two-line scene opening." }],
});
console.log(resp.choices[0].message.content);

curl

С помощью curl вы пишете полный адрес самостоятельно, поэтому путь включен:

curl https://api.ttsapihub.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "uncensored", "messages": [{"role": "user", "content": "Say hello."}]}'

Переменные окружения

Недавние версии официальных SDK OpenAI считывают OPENAI_BASE_URL и OPENAI_API_KEY из окружения, если вы не передаете их в коде. Это удобно, когда вы хотите указать существующему программному обеспечению новый эндпоинт без его редактирования. Установите их в своей оболочке или диспетчере процессов, затем запустите программу как обычно. Проверьте документацию версии вашего SDK, если они не подхватываются.

Настройка в редакторах и приложениях

Инструменты, принимающие пользовательский эндпоинт OpenAI, запрашивают те же три значения. Имена различаются, поэтому ищите формулировки, подобные следующим:

  • Cursor: в настройках модели есть возможность переопределить базовый URL OpenAI. Вставьте https://api.ttsapihub.com/v1, добавьте свой ключ и укажите uncensored как пользовательское имя модели. Метки интерфейса меняются между версиями Cursor, поэтому относитесь к этим именам как к руководству.
  • SillyTavern: выберите Chat Completion, затем источник Custom (OpenAI-compatible) и заполните эндпоинт, ключ и модель.
  • Open WebUI и аналогичные интерфейсы чата: добавьте соединение типа OpenAI с базовым URL и ключом.
  • Ваши собственные скрипты: подойдет любой HTTP-клиент, так как интерфейс — это обычный JSON поверх HTTPS.

Некоторые инструменты проверяют соединение, вызывая GET /v1/models. Этот API поддерживает этот маршрут, поэтому проверка проходит. Некоторые инструменты позволяют выбирать только из фиксированного списка; если ваш так делает, ищите поле пользовательской или ручной модели, а не выпадающий список.

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

Ошибки, вызывающие большинство проблем с базовым URL

Почти каждое неудачное первое подключение происходит по одной из этих причин.

  1. Удвоение версии. Базовый URL уже заканчивается на /v1. Если вы добавите еще один, адрес станет /v1/v1/chat/completions, и сервер ответит ошибкой «не найдено».
  2. Вставка полного пути. Поле базового URL требует https://api.ttsapihub.com/v1, а не https://api.ttsapihub.com/v1/chat/completions. SDK добавит путь еще раз.
  3. Использование адреса сайта. Сайт, который вы читаете, — это не хост API. Запросы отправляются на хост api., показанный выше.
  4. Вызов маршрута речи. Путь вроде /audio/speech здесь отсутствует и возвращает ошибку.
  5. Неверное или отсутствующее имя модели. Всегда указывайте uncensored строчными буквами.
  6. Проблемы с ключом. Лишний пробел или отсутствие префикса Bearer в заголовке, созданном вручную, приводят к ошибке аутентификации.

Чтобы отличить проблему с URL от проблемы с ключом, запросите список моделей. Правильный URL и неверный ключ дают ошибку аутентификации. Неверный URL дает ошибку «не найдено», ошибку DNS или HTML-страницу вместо JSON.

curl https://api.ttsapihub.com/v1/models -H "Authorization: Bearer $API_KEY"
# then a minimal chat call with the model ID "uncensored":
curl https://api.ttsapihub.com/v1/chat/completions -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"ping"}],"max_tokens":5}'

Получите ключ и узнайте стоимость

Для работы нужен ключ. Войдите через Google или по email и паролю на странице API-ключ, затем получите пробный баланс $0.50 в один клик. Он действует 7 дней, один раз на человека, карта не нужна. Пробный ключ позволяет 2 параллельных запроса и 60 запросов в минуту, а полный — 8 параллельных и 300 в минуту.

Тарифы: $0,15 за 1M входных токенов и $0,50 за 1M выходных токенов, оплата с предоплаченного баланса, подписки нет. Запрос с 2 000 входными и 500 выходными токенами стоит $0,0003 плюс $0,00025, итого $0,00055. Пополнение от $20 до $500 с бонусами от $50, оплата картой (Visa, Mastercard, Apple Pay, Google Pay) или криптовалютой (USDT на TRC20, USDC на Base). Полная таблица на странице тарифов. Промпты не используются для обучения, модель для законного использования взрослыми, без сексуального контента с участием несовершеннолетних.

Вопросы и ответы

Какой базовый URL у этого API?

Это https://api.ttsapihub.com/v1. Добавляйте пути, такие как /chat/completions, или позвольте SDK добавить их самостоятельно.

Можно ли использовать этот эндпоинт для синтеза речи?

Нет. Он возвращает только текст, без генерации аудио, изображений или видео. Вы можете использовать его, чтобы написать текст, который затем другой инструмент преобразует в речь.

Нужно ли добавлять /chat/completions к базовому URL в SDK?

Нет. SDK добавляют путь самостоятельно. Полный адрес нужен только для чистых HTTP-клиентов, таких как curl.

Какое имя модели нужно указывать?

Отправьте uncensored. Вы можете подтвердить список, который выводит сервер, с помощью GET /v1/models.

Почему мой инструмент выдает ошибку «не найдено» после установки URL?

Самые частые причины — двойной /v1, вставленный полный путь или использование адреса веб-сайта вместо api. host.

Ключ — всего в одной форме от вас

Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.

Получить API-ключ