> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# GPT-Live голосовий діалог у реальному часі

> OpenAI generation API guide - Ace Data Cloud

GPT-Live підтримує одночасне слухання й мовлення, двосторонні субтитри та фонові завдання. Голосові дзвінки ChatGPT у Studio використовують `gpt-live-1` для обробки мовлення, а складні питання й надалі обробляє поточно вибрана модель чату.

## Підключення

Використовуйте API Token платформи для підключення до `wss://realtime.acedata.cloud/v1/live/sessions`. Для Studio або облікових даних сервісу чату використовуйте `wss://realtime.acedata.cloud/aichat2/live`. Сервер виконує автентифікацію через `Authorization: Bearer <token>`; браузер передає облікові дані через підпротокол WebSocket, щоб уникнути запису в URL:

```javascript theme={null}
const socket = new WebSocket('wss://realtime.acedata.cloud/aichat2/live', [
  'live', `acedata-token.${token}`
]);
socket.onopen = () => socket.send(JSON.stringify({
  type: 'session.start',
  session: {
    model: 'gpt-live-1',
    instructions: '简洁友好地回答，使用用户的语言。复杂问题交给后台处理。',
    audio: { format: { type: 'audio/pcm', rate: 24000 }, output: { voice: 'marin' } },
    delegation: { type: 'client' },
    store: false
  }
}));
```

Після очікування `session.started` безперервно надсилайте `session.input_audio.append`, де `audio` — це Base64 необробленого аудіо PCM із частотою 24 кГц, моно, 16-бітного little-endian, без заголовка файлу WAV. Надсилайте аудіо з фактичною швидкістю семплування, а сегменти тиші також мають залишатися безперервними.

Відтворюйте `session.output_audio.delta.delta` по черзі. Субтитри користувача й асистента надходять відповідно з `session.input_transcript.delta` та `session.output_transcript.delta`; зберігайте кожен `delta`, `start_ms`, `end_ms`; субтитри обох сторін можуть зростати одночасно. У Live немає події завершення кожної голосової відповіді, тому стан «відповідає» слід оновлювати на основі локальної черги відтворення.

## Фонові завдання

Наразі підтримується режим делегування `client`. Після отримання `session.delegation.created` застосунок викликає власний бекенд на основі голосових субтитрів і збереженого контексту та повертає результат через `session.thinking.append` або `session.commentary.append`, передаючи відповідний `delegation_id` і текстовий `content` до 500 токенів. Результати мають надходити із завершених фонових операцій; переривання мовлення не означає, що фонове завдання скасовано.

Делегування керованих Responses, зберігання записів, `session.update`, відновлення сесії або автоматичне перепідключення поки що не підтримуються. Модель фіксована як `gpt-live-1`, аудіо фіксоване як PCM16 із частотою 24 кГц, а голос обирається на початку дзвінка. Старий Realtime API усе ще можна використовувати.

## Тарифікація та завершення дзвінка

Мовлення тарифікується за тривалістю активної сесії: **0.01 Credits/секунду, тобто 0.6 Credits/хвилину**, без округлення вгору до повних хвилин. Час, коли говорить користувач, говорить асистент, триває тиша, обидві сторони мовчать або очікується фонове завдання, тарифікується. Фонова модель або виклики інструментів тарифікуються окремо відповідно до відповідного API. Ціна Credits у доларах залежить від пакета поповнення, орієнтуйтеся на поточну ціну в консолі.

`session.usage.updated.usage.seconds` — це накопичене використання. Наприклад, якщо спочатку отримано 12 секунд, а потім 15 секунд, загалом це 15 секунд. Платформа розраховує лише додану тривалість і не підсумовує повторно знімки.

Під час завершення надішліть `session.close`, продовжуйте отримувати дані до отримання `session.closed`, після чого закрийте з’єднання та звільніть мікрофон. Примусове відключення може призвести до того, що остаточне використання не буде підтверджено, і інтерфейс має чітко про це повідомляти. У разі недостатнього балансу, збою тарифікації або досягнення ліміту сесії з’єднання буде завершено. За замовчуванням один дзвінок може тривати максимум 30 хвилин.

Помилки параметрів повертаються через подію `error`; `error.client_event_id` відповідає невдалій команді. У разі невдалого запуску слід зупинити запис і показати помилку, не перемикаючи автоматично модель і не повторюючи спроби, що створюють нові витрати.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.