2026/02/05 13:09:09
从客户端开启实时转录翻译
实时转录翻译面向频道提供服务,推荐做法是在服务端调用 RESTful API。但在实际业务中,通常由终端用户侧发起开启服务,这需要用户 App 通知业务服务端,再由服务端调用 RESTful API。
如果终端 App 直接调用 RESTful API,需要在 App 内保存客户 ID 和客户密钥,以生成 Base64 编码凭证并填入 HTTP Header。由于在 App 内存储客户 ID 和密钥不安全,声网提供了一种无需在 App 内存储客户 ID 和密钥的 HTTP 认证方式。
前提条件
开始前,清确保你的开发环境满足以下条件:
- 参考开通服务在声网控制台开通实时语音转写服务,并复制保存 App ID、临时 Token、客户 ID 和客户密钥,以供后续使用。
- 可以访问互联网的计算机。如果你的网络环境部署了防火墙,参考应对防火墙限制以正常使用声网服务。
- 集成并使用声网 实时互动 RTC SDK 搭建一个极简的实时音视频互动 App。
使用 RTC Token 认证 REST 请求
为降低终端 App 调用 RESTful API 的安全风险,可以用 RTC Token (AccessToken2) 替代由客户 ID 和密钥生成的 Base64 编码凭证。
步骤如下:
- 参考使用 Token 鉴权生成 RTC Token(需 AccessToken2),例如:
"007eJxTYLj64d/9y/N6FnXGZ4nWvZ9TcL7O2u7XrrCdnPe4p1QIbZ2pwGCaZGppkmxsZGaWZmRibmlkmWRiZmBikGpsZGBkaJyY9KCqIFWAj4FBI/gaMyMDEwMjEIL4PAwlqcUl8aXFqUXxxxxxxxxxxx==" - 将该 Token 替换 HTTP Header 中的
"Authorization"值:"Authorization: agora token="007eJxTYLj64d/9y/N6FnXGZ4nWvZ9TcL7O2u7XrrCdnPe4p1QIbZ2pwGCaZGppkmxsZGaWZmRibmlkmWRiZmBikGpsZGBkaJyY9KCqIFWAj4FBI/gaMyMDEwMjEIL4PAwlqcUl8aXFqUXxxxxxxxxxxx==""。 - 携带该 Header 调用 RESTful API。
示例
-
curl
Shellcurl --location --request POST 'https://api.sd-rtn.com/api/speech-to-text/v1/projects/{appId}/join' \
--header 'Content-Type: Application/json' \
--header 'Authorization: agora token="007eJxTYLj64d/9y/N6FnXGZ4nWvZ9TcL7O2u7XrrCdnPe4p1QIbZ2pwGCaZGppkmxsZGaWZmRibmlkmWRiZmBikGpsZGBkaJyY9KCqIFWAj4FBI/gaMyMDEwMjEIL4PAwlqcUl8aXFqUXxxxxxxxxxxx=="' \
--data '{
"name": "unique-agent-id",
"languages": ["en-US"],
"rtcConfig": {
"channelName": "test-channel",
"subBotUid": "47091",
"pubBotUid": "88222"
}
}' -
有效 Token:
-
响应状态:200 OK
-
响应体:
JSON{
"agent_id": "Agent ID.",
"create_ts": 12345678,
"status": "RUNNING"
}
-
-
过期 Token:
-
响应状态:401 Unauthorized
-
响应体:
-
Token 合法但已过期:
JSON{"message": "Token is expired"} -
Token 生成不正确:
JSON{"message": "Invalid token"}
-
-
注意事项
多个客户端可能会在 1 秒内同时开启实时转录翻译,产生 2 个及以上转写任务并导致重复计费。为避免此问题,请:
- 在客户端侧增加锁。
- 避免同一应用在 1 秒内多次调用 RESTful API。