Текст в речь
Узнайте, как преобразовать текст в живую речь.
Обзор
Аудио API предоставляет конечную точку для преобразования текста в речь (TTS) на основе нашей модели. Доступно 6 встроенных голосов, которые можно использовать для:
- Озвучивания текстового сообщения в блоге
- Создания аудио на нескольких языках
- Выдачи аудио в реальном времени через потоковое воспроизведение
Пример голоса "alloy":
Обратите внимание, что в соответствии с нашими политиками использования вам необходимо предупредить пользователей о том, что голос TTS, который они слышат, сгенерирован ИИ, а не человеком.
Быстрое начало
Конечная точка для речи требует трех ключевых входных данных: модель, текст для преобразования в аудио и голос, который нужно использовать для генерации звука. Простой запрос может выглядеть следующим образом:
from pathlib import Path
from openai import OpenAI
client = OpenAI()
speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Сегодня замечательный день, чтобы создать что-то, что полюбят люди!"
)
response.stream_to_file(speech_file_path)
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Сегодня замечательный день, чтобы создать что-то, что полюбят люди!",
"voice": "alloy"
}' \
--output speech.mp3
import fs from "fs";
import path from "path";
import OpenAI from "openai";
const openai = new OpenAI();
const speechFile = path.resolve("./speech.mp3");
async function main() {
const mp3 = await openai.audio.speech.create({
model: "tts-1",
voice: "alloy",
input: "Сегодня замечательный день, чтобы создать что-то, что полюбят люди!",
});
console.log(speechFile);
const buffer = Buffer.from(await mp3.arrayBuffer());
await fs.promises.writeFile(speechFile, buffer);
}
main();
По умолчанию конечная точка формирует MP3-файл, но также может быть настроена для вывода в другие поддерживаемые форматы.
Качество звука
Для приложений в реальном времени стандартная модель tts-1
обеспечивает наименьшую задержку, но с меньшим качеством по сравнению с tts-1-hd
. В некоторых ситуациях генерируемое аудио может содержать больше статических звуков при использовании tts-1
, чем при использовании tts-1-hd
. Однако в некоторых случаях различия могут быть незаметными в зависимости от вашего устройства прослушивания и восприятия.
Опции голосов
Экспериментируйте с различными голосами (alloy
, echo
, fable
, onyx
, nova
и shimmer
), чтобы найти голос, который соответствует вашему желаемому тону и аудитории. Текущие голоса оптимизированы для английского языка.
Потоковое воспроизведение аудио в реальном времени
API речи предоставляет поддержку потоковой передачи звука в реальном времени с использованием кодировки передачи чанков. Это позволяет воспроизводить аудио до завершения формирования и доступности полного файла.
from openai import OpenAI
client = OpenAI()
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Привет, мир! Это тест потоковой передачи.",
)
response.stream_to_file("output.mp3")
Поддерживаемые форматы вывода
По умолчанию ответ формируется в формате "mp3", но также возможны форматы "opus", "aac", "flac" и "pcm".
- Opus: Для потоковой передачи и связи через интернет с низкой задержкой.
- AAC: Для цифрового сжатия аудио, предпочитаемого YouTube, Android, iOS.
- FLAC: Для без потерь сжатия аудио, популярного среди аудиофилов для архивации.
- WAV: Несжатое аудио WAV, подходящее для приложений с низкой задержкой, чтобы избежать нагрузки на декодирование.
- PCM: Похож на WAV, но содержит сырые образцы в 24кГц (16-битный, low-endian), без заголовка.
Поддерживаемые языки
Модель TTS обычно следует за моделью Whisper в плане поддержки языков. Whisper поддерживает следующие языки и демонстрирует хорошую работу, несмотря на то что текущие голоса оптимизированы для английского:
Африкаанс, Арабский, Армянский, Азербайджанский, Белорусский, Боснийский, Болгарский, Каталанский, Китайский, Хорватский, Чешский, Датский, Нидерландский, Английский, Эстонский, Финский, Французский, Галисийский, Немецкий, Греческий, Иврит, Хинди, Венгерский, Исландский, Индонезийский, Итальянский, Японский, Каннада, Казахский, Корейский, Латвийский, Литовский, Македонский, Малайский, Маратхи, Маори, Непальский, Норвежский, Персидский, Польский, Португальский, Румынский, Русский, Сербский, Словацкий, Словенский, Испанский, Суахили, Шведский, Тагальский, Тамильский, Тайский, Турецкий, Украинский, Урду, Вьетнамский и Валлийский.
Вы можете сгенерировать звучащие аудиофайлы на этих языках, предоставляя входной текст на языке по вашему выбору.
Часто задаваемые вопросы
Как я могу контролировать диапазон эмоций в созданном аудио?
Прямого механизма для контроля эмоционального диапазона сгенерированного аудио нет. Различные факторы, такие как капитализация или грамматика, могут повлиять на полученный звук, но внутренние тесты показали смешанные результаты.
Могу ли я создать собственную копию своего голоса?
Нет, это не поддерживается.
Обладаю ли я правами на созданные аудиофайлы?
Да, как и в случае с другими выходными данными от нашего API, человек, который их создал, обладает правами на них. Тем не менее, вы обязаны информировать конечных пользователей, что они слушают аудио, сгенерированное ИИ, а не настоящий человеческий голос.