Skip to content

Генерация аудио

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

Вы можете использовать эти аудио возможности, чтобы:

  • Создавать голосовое резюме текста (текст на входе, аудио на выходе).
  • Проводить анализ настроения записи (аудио на входе, текст на выходе).
  • Взаимодействовать с моделью с переходом от речи к речи (аудио на входе, аудио на выходе).
  • OpenAI также предоставляет другие модели для простого преобразования речи в текст и текста в речь. Когда для вашей задачи нужны эти конверсии (а не динамическое содержание от модели), модели TTS и STT будут более производительными и экономичными.

Быстрый старт

Чтобы сгенерировать аудио или использовать его в качестве входных данных, вы можете обратиться к окончанию для завершения чата в REST API, как показано в примерах ниже. Вы можете использовать REST API через выбранного клиента HTTP или использовать один из официальных SDK OpenAI для предпочитаемого языка программирования.

Создание правдоподобного голосового ответа на запрос

js
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" }
);
python
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)
bash
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:

json
{
  "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, как показано в примере ниже:

bash
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.

Создано при поддержке AITUNNEL