← Cloudflare Realtime / realtime / realtimekit / ai
Транскрипция
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.