Генерация аудио
Узнайте, как создавать аудио по текстовому или аудио запросу. Помимо генерации текста и изображений, некоторые модели позволяют генерировать голосовые ответы на запросы и использовать аудио в качестве входных данных. Аудио входы могут содержать более богатые данные, чем один текст, что позволяет модели воспринимать тон, интонации и другие нюансы.
Вы можете использовать эти аудио возможности, чтобы:
- Создавать голосовое резюме текста (текст на входе, аудио на выходе).
- Проводить анализ настроения записи (аудио на входе, текст на выходе).
- Взаимодействовать с моделью с переходом от речи к речи (аудио на входе, аудио на выходе).
- OpenAI также предоставляет другие модели для простого преобразования речи в текст и текста в речь. Когда для вашей задачи нужны эти конверсии (а не динамическое содержание от модели), модели
TTS
иSTT
будут более производительными и экономичными.
Быстрый старт
Чтобы сгенерировать аудио или использовать его в качестве входных данных, вы можете обратиться к окончанию для завершения чата в REST API, как показано в примерах ниже. Вы можете использовать REST API через выбранного клиента HTTP или использовать один из официальных SDK OpenAI для предпочитаемого языка программирования.
Создание правдоподобного голосового ответа на запрос
import { writeFileSync } from "node:fs";
import OpenAI from "openai";
const openai = new OpenAI();
// Генерация аудио ответа на заданный запрос
const response = await openai.chat.completions.create({
model: "gpt-4o-audio-preview",
modalities: ["text", "audio"],
audio: { voice: "alloy", format: "wav" },
messages: [
{
role: "user",
content: "Является ли золотистый ретривер хорошей семейной собакой?"
}
]
});
// Просмотр возвращенных данных
console.log(response.choices[0]);
// Запись аудио данных в файл
writeFileSync(
"dog.wav",
Buffer.from(response.choices[0].message.audio.data, 'base64'),
{ encoding: "utf-8" }
);
import base64
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o-audio-preview",
modalities=["text", "audio"],
audio={"voice": "alloy", "format": "wav"},
messages=[
{
"role": "user",
"content": "Является ли золотистый ретривер хорошей семейной собакой?"
}
]
)
print(completion.choices[0])
wav_bytes = base64.b64decode(completion.choices[0].message.audio.data)
with open("dog.wav", "wb") as f:
f.write(wav_bytes)
curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-audio-preview",
"modalities": ["text", "audio"],
"audio": { "voice": "alloy", "format": "wav" },
"messages": [
{
"role": "user",
"content": "Является ли золотистый ретривер хорошей семейной собакой?"
}
]
}'
Многократные разговоры
Использование аудио вывода модели в качестве входных данных для многократных разговоров требует сгенерированного идентификатора, который появляется в данных ответа для генерации аудио. Ниже представлен пример структуры данных JSON для сообщения, которые вы можете получить от /chat/completions
:
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"refusal": null,
"audio": {
"id": "audio_abc123",
"expires_at": 1729018505,
"data": "<bytes omitted>",
"transcript": "Да, золотистые ретриверы известны как ..."
}
},
"finish_reason": "stop"
}
Значение message.audio.id
выше обеспечивает идентификатор, который вы можете использовать в сообщении ассистента для нового запроса /chat/completions
, как показано в примере ниже:
curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-audio-preview",
"modalities": ["text", "audio"],
"audio": { "voice": "alloy", "format": "wav" },
"messages": [
{
"role": "user",
"content": "Является ли золотистый ретривер хорошей семейной собакой?"
},
{
"role": "assistant",
"audio": {
"id": "audio_abc123"
}
},
{
"role": "user",
"content": "Почему вы говорите, что они лояльны?"
}
]
}'
Часто задаваемые вопросы
Какие модальности поддерживаются gpt-4o-audio-preview
?
gpt-4o-audio-preview
требует либо аудио вывода, либо аудио входа для использования на данный момент. Поддерживаются следующие комбинации входа и вывода:
- text in → text + audio out
- audio in → text + audio out
- audio in → text out
- text + audio in → text + audio out
- text + audio in → text out
Чем аудио в Chat Completions отличается от Realtime API?
Основная модель GPT-4o audio
одинакова. Realtime API управляет той же моделью с меньшей задержкой.
Как воспринимать аудио ввод в модели с точки зрения токенов?
Мы работаем над улучшением инструментов для освещения этого вопроса, но приблизительно один час аудио входа соответствует 128k токенов, максимальное окно контекста, поддерживаемое этой моделью.
Как я могу контролировать, какие модальности вывода я получаю?
На данный момент модель позволяет использовать модальности = ["text", "audio"] только программным способом. В будущем этот параметр предоставит больше возможностей контроля.
Как осуществляется вызов инструментов/функций?
Вызов инструментов (и функций) работает так же, как и для других моделей в Chat Completions - узнайте больше.
Следующие шаги
Теперь, когда вы знаете, как генерировать аудио выходы и отправлять аудио входы, есть еще несколько техник, которые вам может понадобиться освоить.
Преобразование текста в речь: Используйте специализированную модель для преобразования текста в речь.
Преобразование речи в текст: Используйте специализированную модель для превращения аудиофайлов с речью в текст.
Realtime API: Узнайте, как использовать Realtime API для вызова модели через WebSocket.