跳转到内容
搜索文档

转录

最后更新 查看 MarkdownAgent 设置

RealtimeKit 提供两种由 Cloudflare Workers AI 支持的转录模式:

模式 模型 处理时间 使用场景
实时 Deepgram Nova-3 会议期间 为参会者提供实时字幕
会后 Whisper Large v3 Turbo 会议结束后 转录文件Webhook

RealtimeKit 分别处理每个参与者的音频流。这有助于在最终转录文本中识别每个发言者。

我们建议升级到 Workers Paid 计划,以避免 Free 计划中的 Workers AI 处理限制。在计费和 Free 计划限制中了解更多信息。

实时转录

实时转录将参与者的音频流式传输到 Workers AI 上的 Deepgram Nova-3,并在会议期间向会议参与者发送转录事件

开启实时转录

您可以通过在参与者的预设(preset)中设置 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 过滤冒犯性语言

实时支持的语言

实时转录由 Workers AI 上的 Deepgram Nova-3 提供支持。

Workers AI 上的 Nova-3 支持以下转录语言:

语言 代码
英语 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 发送临时(interim)和最终(final)转录更新。将临时更新用于实时字幕,将最终更新用于转录历史记录或保存的 UI 状态。

客户端 SDK

// 获取客户端已收到的转录条目。
const transcripts = meeting.ai.transcripts;

// 监听会议期间的转录更新。
meeting.ai.on("transcript", (transcript) => {
	if (transcript.isPartialTranscript) {
		updateLiveCaption(transcript.peerId, transcript.transcript);
		return;
	}

	appendFinalTranscript(transcript);
});

转录负载

{
	"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。如果他们重新加入,该 ID 会改变。
userId 持久参与者 ID
customParticipantId 添加参与者时设置的参与者标识符
transcript 转录的文本
isPartialTranscript 对于临时更新为 true,对于最终更新为 false
timestamp 以毫秒为单位的 Unix 时间戳

会后转录

会后转录在会议结束后使用 Workers AI 上的 Whisper Large v3 Turbo 生成转录文本,并通过 WebhookREST 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
波兰语 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 Web 视频字幕(<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 完成会后转录处理后,您可以通过 Webhook 接收转录下载 URL,或使用 REST API 获取它。对于异步后端工作流,请使用 Webhook;当您需要检索特定会话的转录时,请使用 REST API。

Webhook

RealtimeKit Webhook 中配置 meeting.transcript 事件:

{
	"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 天。请在 Webhook 或 REST API 返回的 URL 过期时间之前下载或复制转录文件。

计费和 Free 计划限制

RealtimeKit 的默认转录功能会记录每个参与者的音频轨道,并使用 Workers AI 对其进行处理。Workers AI 的使用费将根据音频模型定价记入您的 Cloudflare 账户,该定价按参与者的音频分钟数计算,而非会议时长。

在 Workers Free 计划中,Workers AI 每天包含 10,000 个 Neurons。要每天使用超过 10,000 个 Neurons,请升级到 Workers Paid 计划。Workers Paid 包含相同的每日 10,000 个免费 Neurons,超出后的使用量按每 1,000 个 Neurons $0.011 计费。

您可以在 Cloudflare 仪表板的 **Manage account(管理账户)**下升级到 Workers Paid 计划。

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 会在会议结束后分别处理每个参与者的音频,创建最终的转录文件,并通过 Webhook 或 REST API 提供这些文件。

这篇文档对您有帮助吗?