Перейти к содержимому

Речь и каталог ​

GET /v1/chat/catalog перечисляет общедоступные модели, голоса и текущие цены на кредиты. В текстовом чате используется POST /v1/chat/completions; речь использует конечные точки, указанные ниже.

Модели и цены ​

Каталог живых моделей · цены в кредит

Загрузка каталога моделей…

Речь в текст ​

POST /v1/chat/transcribe принимает { "audio": "data:audio/webm;base64,..." }. Также поддерживается обычный формат base64 с декодированием до 10 МБ. Возвращает text и language.

Преобразование текста в речь ​

Каталог живых моделей · цены в кредит

Загрузка каталога моделей…

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

POST /v1/chat/speech принимает { "text": "Hello", "voice": "speech-light:af_bella" } (до 2000 символов). Опустите voice для настройки по умолчанию. Используйте voices[].id из каталога; modelId идентифицирует модель и скорость речи. Семейства: «Стандарт речи», «Речь легкая», «Речь Pro» и «Выразительная речь». Модели речи и чата независимы.

Ответ включает в себя audio (URI данных MP3, data:audio/mpeg;base64,...), voice и billing: { model, credits, characters, price, unit: "1000_characters" }. Все голоса, включая Speech Pro, возвращают формат MP3. Назначьте audio src аудиоэлемента или декодируйте base64 после запятой и сохраните его как .mp3. Speech Pro не требует преобразования на стороне клиента; Голосовые идентификаторы и цены на основе символов не изменились. См. пример работоспособного Python.

Потоковая речь ​

Отправьте "stream": true в ту же конечную точку POST /v1/chat/speech. Speech Standard, Speech Light, Speech Pro и Speech Expressive поддерживают потоковую передачу; в каталоге указан speechModels[].streaming. Если пропустить stream или установить для него значение false, сохраняется ответ JSON, указанный выше.

json
{ "text": "Hello. How was your day?", "voice": "speech-pro:Ashley", "stream": true }

Ответ представляет собой непрерывный двоичный поток MP3 с Content-Type: audio/mpeg, а не JSON, base64 или SSE. Прокси-сервер пересылает звук по мере его поступления; Речь Pro постепенно преобразуется в MP3. Это не гарантирует задержку генерации модели. Текст отправляется одним запросом, без автоматического разделения предложений.

Если установлены curl и FFmpeg, этот пример воспроизводит звук по мере его поступления:

bash
curl --fail --no-buffer https://api.coldstart.win/v1/chat/speech \
  -H "Authorization: Bearer $COLDSTART_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello. How was your day?","voice":"speech-pro:Ashley","stream":true}' \
  | ffplay -nodisp -autoexit -f mp3 -i pipe:0

Для клиента голосового вызова постепенно обрабатывайте тело ответа и передайте его постоянному декодеру/плееру MP3. В браузере используйте response.body.getReader() с реализацией потокового воспроизведения; response.blob(), arrayBuffer() и json() ждут весь ответ. Сетевые фрагменты представляют собой произвольные диапазоны байтов, а не отдельные файлы MP3. Отмените выборку/чтение, когда пользователь прерывает или вешает трубку. Воспроизведение в браузере по-прежнему требует обычного взаимодействия с пользователем для разблокировки звука.

Заголовки ответов предоставляют X-Speech-Voice (публичный голосовой идентификатор в кодировке URL), X-Speech-Credits, X-Speech-Characters и X-Speech-Usage-Id. Сумма кредита представляет собой первоначальный дебет; Завершенные запросы используют ту же цену на основе символов, что и непотоковые запросы. Неудачный поток или отключение до того, как сервер завершит обработку, возвращает деньги за запрос и записывает неудачное использование. Отмена после завершения работы сервера не отменяет успешное списание средств.

Перед началом звука ошибки используют обычный статус HTTP и тело ошибки JSON. После начала звука при сбое соединение резко закрывается; отбросьте неполные выходные данные и проверьте историю задач, чтобы узнать окончательный результат выставления счета. Не рассматривайте HTTP 200 или получение первого фрагмента как доказательство успешного завершения. Дополнительные прокси должны отключить буферизацию и сжатие ответов для этого маршрута; API отправляет X-Accel-Buffering: no и Cache-Control: no-store, no-transform.

Если речевой текст явно отклонен политикой содержимого, оба режима ответа возвращают HTTP 400 с кодом ошибки content_policy_violation до начала звука. Плата возвращается. Не повторяйте автоматически тот же текст; пересмотреть его, чтобы он соответствовал политике в отношении контента. Поддержка потоковой передачи не снимает ограничений по контенту.

Речевые запросы независимы; явно передайте желаемый общедоступный голосовой идентификатор. Речевой JSON содержит URI аудиоданных и выставление счетов; потоковая передача возвращает аудиобайты.

Речевые кредиты = количество оплачиваемых символов нормализованного текста × цена модели / 1000, округленное вверх до 8 знаков после запятой. Speech Light, Speech Pro и Speech Expressive учитывают единицы кода UTF-16 в зависимости от выбранной модели: обычные китайские/английские символы считаются за один, а дополнительный символ, например 😀, считается за два. В стандарте речи используются кодовые точки Unicode. speechModels[].characterCounting каталога и billing.character_counting ответа определяют правило подсчета (utf16_code_units или unicode_codepoints); billing.characters — это выставленный счет. Перед синтезом и подсчетом форматирование и ремарки удаляются. За неудавшийся или пустой синтез производится возврат средств. Каждый запрос на синтез оплачивается; воспроизведение возвращенного звука ничего не стоит. Консоль кэширует аудио по сообщениям и голосу для текущего сеанса страницы.

© 2026 ColdStart. Все права защищены.