В этой статье
Если коротко: OpenAI TTS превращает переданный текст в речь через Audio API. Вы указываете модель и голос, а API возвращает аудиоданные, которые можно сохранить, например, в speech.mp3. Это отдельный программный маршрут, а не кнопка «прочитать ответ» в ChatGPT.
Что именно делает OpenAI TTS
Представьте две ситуации.
— Вот готовый ответ. Нажмите значок динамика.
— Возьмите этот текст из базы знаний, озвучьте его и сохраните файл для приложения.
Первая относится к Read aloud в ChatGPT: сервис читает уже сформированный ответ; этот сценарий описан в FAQ ChatGPT для Android. Вторая — к TTS API: вы сами передаёте input, выбираете параметры и получаете аудиовывод. Voice в ChatGPT предназначен для голосового разговора, а Dictation, наоборот, превращает речь пользователя в текст. Названия похожи, но задачи разные.
Если нужно получить файл из собственного текста, используйте endpoint POST /v1/audio/speech в OpenAI Audio API. В запросе задаются model, input и voice; дополнительные параметры уточняют результат — например, формат или скорость.
Если же нужно только слушать ответы ChatGPT, отдельный TTS-запрос может оказаться лишним. Для первого знакомства с API пригодится пример первого запроса к GPT API на Python, а получение ключа разобрано в инструкции про API-ключ OpenAI.
Минимальный запрос через curl
Сначала положите ключ в переменную окружения. В PowerShell:
$env:OPENAI_API_KEY = "ваш_ключ_только_в_локальной_сессии"
В Linux или macOS:
export OPENAI_API_KEY="ваш_ключ_только_в_локальной_сессии"
Не вставляйте ключ в исходный файл, браузерный клиент или публичный репозиторий. Пример ниже не содержит настоящего ключа и не предполагает запуск запроса прямо из статьи.
Для первого прогона возьмите короткую тестовую фразу:
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini-tts",
"voice": "alloy",
"input": "Встреча начинается в десять утра у главного входа",
"response_format": "mp3"
}' \
--output speech.mp3
В Windows PowerShell передайте JSON как байты UTF-8:
$ttsPayload = @{
model = 'gpt-4o-mini-tts'
voice = 'alloy'
input = 'Встреча начинается в десять утра у главного входа'
response_format = 'mp3'
} | ConvertTo-Json
$ttsBytes = [System.Text.Encoding]::UTF8.GetBytes($ttsPayload)
Invoke-RestMethod -Method Post -Uri 'https://api.openai.com/v1/audio/speech' `
-Headers @{ Authorization = "Bearer $env:OPENAI_API_KEY" } `
-ContentType 'application/json; charset=utf-8' -Body $ttsBytes -OutFile 'speech.mp3'
После выполнения в текущем каталоге должен появиться speech.mp3. Откройте его обычным проигрывателем и сравните услышанное с исходной строкой: действительно ли сказано «в десять утра» и упомянут «главный вход». Затем повторите проверку с реальным текстом приложения.
Это не измерение качества модели и не доказательство, что конкретный голос одинаково хорошо произносит русский язык. Это быстрый способ услышать результат и поймать ошибку в имени, числе или термине до интеграции.
Как выбрать модель и голос
В актуальном маршруте документации для управляемого синтеза показана gpt-4o-mini-tts: инструкциями можно задавать акцент, интонацию, темп и тон. В материалах Audio API также встречаются tts-1, ориентированная на меньшую задержку, и tts-1-hd, рассчитанная на более высокое качество относительно tts-1. Перед запуском сверяйте руководство Text to speech: доступность моделей, параметров и голосов может меняться.
С голосом та же история. В запросе передаётся имя, например alloy, но конкретный набор зависит от модели. Встроенные голоса оптимизированы для английского, поэтому русскую речь лучше не оценивать по названию голоса. Сначала прослушайте короткий фрагмент с вашими именами, числами и терминами.
Если важен темп, параметр speed в Audio API поддерживает диапазон от 0.25 до 4.0. Но «быстрее» не всегда означает «понятнее»: для инструкции с адресами и цифрами разумно проверить несколько вариантов на одном и том же тексте. Описание полей и форматов смотрите в справочнике Create speech.
Python и Node.js: тот же маршрут из приложения
Через Python логика не меняется: прочитать OPENAI_API_KEY из окружения, вызвать синтез и записать ответ в файл.
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
with client.audio.speech.with_streaming_response.create(
model="gpt-4o-mini-tts",
voice="alloy",
input="Встреча начинается в десять утра у главного входа",
response_format="mp3",
) as response:
response.stream_to_file("speech.mp3")
В Node.js SDK шаги те же: создать клиент с ключом из process.env.OPENAI_API_KEY, вызвать client.audio.speech.create({ model, voice, input, response_format: "mp3" }), получить бинарный ответ и сохранить его через файловую систему. Для первого прототипа достаточно curl; SDK удобнее подключать, когда появляются обработка ошибок, очередь текстов и правила именования файлов.
Формат, длина текста и проверка результата
По умолчанию API возвращает MP3. В справочнике также указаны opus, aac, flac, wav и pcm — выбирайте формат по тому, что принимает ваш проигрыватель или следующий сервис.
Для одного значения input действует ограничение в 4096 символов. Длинную статью разделите на логические фрагменты, озвучьте отдельно и продумайте склейку. На границах частей проверьте паузы и произношение заголовков, чтобы аудио не звучало как оборванная реплика.
После запроса проверьте:
- Файл действительно создался и имеет ненулевой размер.
- Проигрыватель открывает выбранный формат.
- Время, даты, числа, имена и специальные термины звучат так, как нужно пользователю.
- Длина и скорость подходят для интерфейса.
- При ошибке API приложение показывает текст ошибки, а ключ не попадает в логи и клиентский код.
На публичной странице или в приложении нужно ясно сообщить слушателю, что голос сгенерирован ИИ и не является человеческим. Это часть сценария использования, а не подпись, добавленная после факта.
Нужна ли для TTS подписка ChatGPT
Нет, это разные вещи. Для вызова POST /v1/audio/speech нужен отдельный доступ к OpenAI API и его биллинг. Подписка ChatGPT не превращается автоматически в API-баланс, а каталог цифровых сервисов не заменяет API-ключ.
Если вы смешали эти сценарии и параллельно ищете подписку для доступа к ChatGPT, каталог Amber Market поможет посмотреть актуальные цифровые товары и условия заказа. Для заказа из России доступна оплата через СБП; наличие и условия нужно проверить перед покупкой. Это относится именно к заказу в магазине и не оплачивает прямые вызовы OpenAI Audio API.
Итак, маршрут TTS прямой: храните ключ в окружении, отправляйте model, voice и input на /v1/audio/speech, сохраняйте ответ в нужном формате и прослушивайте короткий тест на реальных именах и числах. Затем встраивайте генерацию в приложение с учётом лимита текста, обработки ошибок и понятного уведомления об ИИ-голосе.
Источники
- Text to speech | OpenAI APIOpenAI Developers
- Audio API reference: Create speechOpenAI Platform
- ChatGPT Android App FAQOpenAI Help Center