INTEGRITY Документация

Транскрипция

RealtimeKit предлагает два режима транскрибации на основе Cloudflare Workers AI:

Режим Модель Время обработки Сценарий использования
В реальном времени Deepgram Nova-3 Во время встречи Субтитры в реальном времени для участников
После встречи Whisper Large v3 Turbo После завершения встречи Файлы транскрипта и вебхуки

RealtimeKit обрабатывает аудиопоток каждого участника отдельно. Это помогает идентифицировать каждого спикера в итоговом транскрипте.

Мы рекомендуем перейти на план Workers Paid, чтобы избежать ограничений на обработку в Workers AI на плане Free. Подробнее см. в Тарификация и лимиты тарифного плана Free.

Транскрипция в реальном времени

Транскрипция в реальном времени передаёт аудио участников потоком в Deepgram Nova-3 на Workers AI и отправляет события транскрипта участникам встречи во время встречи.

Включите транскрибацию в реальном времени

Вы можете включить транскрибирование в реальном времени для участников, задав permissions.transcription_enabled: true у участника в пресет. Это позволяет решать, чье аудио будет транскрибироваться. Например, можно транскрибировать аудио выступающего, не транскрибируя аудио аудитории.

Чтобы обновить существующий пресет, используйте API для обновления пресета:

curl -X PATCH "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/presets/$PRESET_ID" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "permissions": {
      "transcription_enabled": true
    }
  }'

Чтобы создать пресет, см. Справочник по API для создания пресета.

RealtimeKit транскрибирует аудио только для участников, которые присоединяются с пресетом, у которого есть permissions.transcription_enabled: true.

Во время встречи RealtimeKit передаёт обновления стенограммы в клиентский SDK потоком. Чтобы получить доступ к существующим стенограммам из meeting.ai.transcripts или прослушивайте новые события транскрипции с помощью meeting.ai.on("transcript", ...), см. Получение транскриптов в реальном времени.

Настройка параметров транскрипции

Пресет определяет, чьё аудио транскрибируется. Конфигурация встречи определяет, как RealtimeKit транскрибирует это аудио. Используйте ai_config.transcription чтобы установить язык речи, улучшить распознавание пользовательских терминов и настроить фильтрацию нецензурной лексики для конкретной встречи.

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/meetings" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Weekly product review",
    "ai_config": {
      "transcription": {
        "language": "en-US",
        "keywords": ["RealtimeKit", "Cloudflare"],
        "profanity_filter": false
      }
    }
  }'
Опция Тип По умолчанию Описание
language string en-US Код языка для транскрибирования
keywords string[] [] Термины для улучшения распознавания (имена, жаргон)
profanity_filter boolean false Фильтрация нецензурной лексики

Поддерживаемые языки для транскрипции в реальном времени

Транскрипция в реальном времени работает на основе Deepgram Nova-3 на Workers AI.

Nova-3 в Workers AI поддерживает для транскрипции следующие языки:

Язык Код(ы)
Английский en, en-US, en-AU, en-GB, en-IN, en-NZ
Испанский es, es-419
Французский fr, fr-CA
немецкий de, de-CH
хинди hi
русский ru
Португальский pt, pt-BR, pt-PT
Японский ja
Итальянский it
Нидерландский nl

Используйте multi для автоматического определения языка среди всех перечисленных выше языков.

Если язык не указан, модель по умолчанию использует en-US. Для наилучшей точности явно укажите код языка, соответствующий вашему аудио.

Получение транскриптов в реальном времени

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

Клиентский SDK

// Get transcript entries already received by the client.
const transcripts = meeting.ai.transcripts;

// Listen for transcript updates during the meeting.
meeting.ai.on("transcript", (transcript) => {
	if (transcript.isPartialTranscript) {
		updateLiveCaption(transcript.peerId, transcript.transcript);
		return;
	}

	appendFinalTranscript(transcript);
});

Payload транскрипта

{
	"id": "1a2b3c4d-5678-90ab-cdef-1234567890ab",
	"name": "Alice",
	"peerId": "4f5g6h7i-8j9k-0lmn-opqr-1234567890st",
	"userId": "uvwxyz-1234-5678-90ab-cdefghijklmn",
	"customParticipantId": "abc123xyz",
	"transcript": "Hello everyone",
	"isPartialTranscript": false,
	"timestamp": 1716700000000
}
Поле Описание
id Уникальный ID записи транскрипта
name Отображаемое имя участника, который говорил
peerId Peer ID участника, который говорил. Изменяется при повторном присоединении.
userId Постоянный ID участника
customParticipantId Идентификатор участника, заданный при его добавлении
transcript Расшифрованный текст
isPartialTranscript true для промежуточных обновлений, false для финальных обновлений
timestamp Временная метка Unix в миллисекундах

Транскрибация после встречи

Транскрибация после встречи создаёт транскрипт после завершения встречи с помощью Whisper Large v3 Turbo на Workers AI и передает его через вебхук или REST API. Чтобы определить говорящих, RealtimeKit обрабатывает аудио каждого участника отдельно перед созданием итоговый транскрипт.

Включите транскрибацию после встречи

Вы можете включить транскрибирование после встречи при её создании. Задайте transcribe_on_end: true чтобы сгенерировать транскрипт после завершения встречи. Чтобы также сгенерировать сводка автоматически после того, как расшифровка станет доступна, задайте summarize_on_end: true.

curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/meetings" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Weekly product review",
    "transcribe_on_end": true,
    "summarize_on_end": true,
    "ai_config": {
      "transcription": {
        "language": "en"
      }
    }
  }'

Используйте ai_config.transcription.language чтобы задать язык транскрипта. Поддерживаемые значения см. в Поддерживаемые языки после встречи. Если transcribe_on_end не задан, RealtimeKit не создаёт итоговую стенограмму встречи.

Поддерживаемые языки после встречи

Транскрибация после встречи поддерживает Whisper Large v3 Turbo коды языков. Не указывайте ai_config.transcription.language чтобы позволить Whisper самостоятельно определить язык речи.

К распространенным кодам языков относятся:

Язык Код Язык Код Язык Код
Английский en Испанский es Французский fr
немецкий de хинди hi Португальский pt
Японский ja Итальянский it Нидерландский nl
русский ru Китайский zh Кантонский yue

Дополнительные коды языков после встречи

Язык Код
африкаанс af
албанский sq
Амхарский am
Арабский ar
Ассамский as
Азербайджанский az
Башкирский ba
Баскский eu
Белорусский be
Бенгальский bn
Боснийский bs
Бретонский br
Болгарский bg
Каталанский ca
хорватский hr
Чешский cs
Датский da
эстонский et
фарерский fo
финский fi
Галисийский gl
Грузинский ka
греческий el
гуджарати gu
гаитянский креольский ht
хауса ha
гавайский haw
иврит he
Венгерский hu
Исландский is
индонезийский id
Яванский jw
Каннада kn
Казахский kk
Кхмерский km
Корейский ko
Лаосский lo
Латинский la
Латышский lv
лингала ln
литовский lt
люксембургский lb
Македонский mk
Малагасийский mg
Малайский ms
Малаялам ml
Мальтийский mt
Маори mi
Маратхи mr
монгольский mn
Мьянма my
непальский ne
норвежский no
нюнорск nn
окситанский oc
Пуштунский ps
Персидский fa
Polish pl
панджаби pa
Румынский ro
санскрит sa
сербский sr
Шона sn
Синдхи sd
Сингальский si
Словацкий sk
Словенский sl
Сомалийский so
сунданский su
суахили sw
шведский sv
тагальский tl
таджикский tg
тамильский ta
татарский tt
телугу te
тайский th
Тибетский bo
туркменский tk
турецкий tr
украинский uk
урду ur
узбекский uz
вьетнамский vi
Валлийский cy
идиш yi
йоруба yo

Форматы вывода

Транскрипты после встречи доступны в нескольких форматах. Используйте CSV или JSON для рабочих процессов приложений и SRT или VTT, если нужны файлы субтитров.

Формат Сценарий использования
CSV Электронные таблицы и анализ данных
JSON Программный доступ
SRT Файлы субтитров видео
VTT Субтитры для веб-видео (<track> элемент)

Примеры

"1000","peer-123","user-456","cust-789","Alice","Hello everyone"
"3000","peer-234","user-567","cust-890","Bob","Hi Alice"

Строки CSV содержат поля в следующем порядке: время начала в миллисекундах, peer ID, user ID, пользовательский ID участника, имя участника и текст расшифровки.

[
	{
		"startTime": 1000,
		"endTime": 2500,
		"sentence": "Hello everyone",
		"peerData": {
			"id": "peer-123",
			"userId": "user-456",
			"displayName": "Alice",
			"cpi": "cust-789",
			"joinedAt": "2024-08-07T10:15:29.000Z",
			"leftAt": ""
		}
	}
]
1
00:00:01,000 --> 00:00:02,500
Alice: Hello everyone

2
00:00:03,000 --> 00:00:04,500
Bob: Hi Alice

Получение транскриптов после встречи

После того как RealtimeKit завершит обработку расшифровки после встречи, вы можете получить URL для её скачивания через вебхук или запросить его через REST API. Используйте вебхуки для асинхронных серверных процессов, а REST API применяйте, когда нужно получить расшифровку для конкретной сессии.

Вебхук

Настройте meeting.transcript событие в Вебхуки RealtimeKit:

{
	"event": "meeting.transcript",
	"meeting": {
		"id": "bbb8940e-1b97-402a-97d6-2708b7feca41",
		"title": "Weekly sync",
		"endedAt": "2026-06-03T10:30:00.000Z",
		"createdAt": "2026-06-03T10:00:00.000Z",
		"sessionId": "05e57591-d89e-45c9-ae44-08dc1eaad0e0",
		"startedAt": "2026-06-03T10:00:00.000Z",
		"status": "LIVE",
		"organizedBy": {
			"id": "c94c437b-592a-4a39-b9e2-47ef1451e43b",
			"name": "Example organization"
		}
	},
	"transcriptDownloadUrl": "https://example.com/transcript.csv",
	"transcriptDownloadUrlExpiry": "2026-06-10T10:30:00.000Z"
}

REST API

См. Получение полного транскрипта сессии.

curl -X GET "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/realtime/kit/$APP_ID/sessions/$SESSION_ID/transcript" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Доступность транскрипта

Транскрипты доступны в течение 7 дней после завершения встречи. Скачайте или скопируйте файлы стенограммы до истечения срока действия URL-адреса, возвращённого вебхуком или REST API.

Тарификация и лимиты тарифного плана Free

Транскрибация RealtimeKit по умолчанию записывает аудиотрек каждого участника и обрабатывает его с помощью Workers AI. Использование Workers AI оплачивается с вашего аккаунта Cloudflare через тарификация аудиомоделей, который масштабируется по аудиоминутам участников, а не по продолжительности встречи.

На плане Workers Free в Workers AI включено 10,000 Neurons в день. Чтобы использовать более 10,000 Neurons в день, перейдите на план Workers Paid. Workers Paid включает те же 10,000 бесплатных Neurons в день, а дополнительное использование выставляется по цене $0.011 за 1,000 Neurons.

Вы можете перейти на план Workers Paid в панели управления Cloudflare в разделе Управление аккаунтом.

Транскрибация RealtimeKit использует следующие тарифы аудиомоделей Workers AI:

Режим транскрипции Модель Workers AI Neurons за минуту аудио
После встречи @cf/openai/whisper-large-v3-turbo 46.63
В реальном времени @cf/deepgram/nova-3 WebSocket 836.36

Обработка и хранение данных

Транскрибация RealtimeKit представляет собой управляемый процесс транскрибации. Когда транскрибация включена, RealtimeKit обрабатывает аудио участников с помощью Workers AI и сохраняет результаты транскрипта в хранилище, управляемом RealtimeKit.

Для транскрибации в реальном времени RealtimeKit передаёт в Workers AI аудио участников, у которых включена транскрибация, и отправляет обновления транскрипта участникам встречи в ходе встречи.

Для транскрибации после встречи RealtimeKit обрабатывает аудио каждого участника отдельно после завершения встречи, создаёт итоговые файлы транскрипта и предоставляет доступ к ним через вебхук или REST API.