开始实时转录翻译

更新时间不可用

了解如何快速接入实时转录翻译,完成环境准备、参数配置、示例运行和核心流程验证。

实时转录翻译服务可以订阅媒体流的音频内容,并将其实时转写为指定语言的文本。

本文介绍如何使用基本的 RESTful API 方法来启动、停止和查询实时转录翻译服务。

注意

命令行示例仅用于演示目的。在生产环境中,请通过你的应用服务器发送 RESTful API 请求。

技术原理

以下流程图概述了实现实时转录翻译的流程:

该流程包括调用以下 RESTful API 方法:

  1. start:调用该方法加入频道并开始转写。如果请求成功,你会在响应 Body 中收到一个 agent_id,用于标识当前的转写会话。
  2. update:在转写服务运行过程中,使用 update 方法修改转写或翻译语言,或更新启用转写的主播。
  3. query:在 start 后,调用 query 来查询服务状态。
  4. stop:调用该方法停止转写。

前提条件

开始前,请确保你的开发环境满足以下条件:

  • 参考开通服务在声网控制台开通实时转录翻译服务,并复制保存 App ID、临时 Token、客户 ID 和客户密钥,以供后续使用。
  • 可以访问互联网的计算机。如果你的网络环境部署了防火墙,参考应对防火墙限制以正常使用声网服务。
  • 集成并使用声网 实时互动 RTC SDK 搭建一个极简的实时音视频互动 App。
  • 参考实现 HTTP 基本认证获取 Authorization 值。

实现实时转录翻译

本节介绍调用 start、stop、update 和 query 实时转录翻译服务的示例 API 调用。

启用服务

调用 start 开始字幕录制和翻译。

请求成功时,你会在 HTTP 响应 Body 中收到一个 agent_id。此 ID 是转写会话的唯一标识符。

请求示例

以下是启动实时转录翻译的简单请求示例。有关更多功能配置,请参考加密字幕、录制字幕和转写指定主播。

Shell
curl --request post \
  --url https://api.sd-rtn.com/cn/api/speech-to-text/v1/projects/:appid/join \
  --header 'Authorization: Basic <credentials>' \
  --data '
{
  "languages": [
    "en-US"
  ],
  "name": "agora-test",
  "maxIdleTime": 50,
  "rtcConfig": {
    "channelName": "agora-test",
    "subBotUid": "47091",
    "pubBotUid": "88222"
  },
  "translateConfig": {
    "languages": [
      {
        "source": "en-US",
        "target": [
          "ar-SA",
          "id-ID",
          "fr-FR",
          "ja-JP"
        ]
      }
    ]
  },
  "captionConfig": {
    "sliceDuration": 60,
    "storage": {
      "accessKey": "test-oss",
      "secretKey": "test-oss",
      "bucket": "test-oss",
      "vendor": 2,
      "region": 3
    }
  }
}'

注意

  • 字符串用户 ID 仅在 128 主播环境中受支持,计划在不久的将来提供全面支持。
  • pubBotUid 和 subBotUid 是 int 类型的用户 ID,必须不同以避免未知问题。

响应示例

  • 成功

    JSON
    {
      "agent_id": "Agent ID.",
      "create_ts": null,
      "status": "RUNNING"
    }
参数名称类型描述
agent_idString服务的 ID。
create_tsInteger服务创建时的 Unix 时间戳(秒)。
statusString

服务状态:

  • STARTING:服务正在启动。
  • RUNNING:服务正在运行。
  • STOPPING:服务正在退出。
  • STOPPED:服务已成功退出。
  • RECOVERING:服务正在恢复。
  • FAILED:服务退出失败。
表格内容超出当前宽度,可横向滚动查看更多列。
  • 失败

    JSON
    {
      "detail": "Details of the request failure.",
      "reason": "The reason why the request failed."
    }

查询服务状态

调用 query 获取转写会话期间服务的状态。请求成功时,你会在响应 Body 中收到当前状态和相关信息。

请求示例

Shell
curl --request GET \
  --url https://api.sd-rtn.com/cn/api/speech-to-text/v1/projects/:appid/agents/:agentId \
  --header 'Authorization: Basic <credentials>'

响应示例

  • 成功

    JSON
    {
      "message": "Details of the request result.",
      "agent_id": "Agent ID.",
      "create_ts": null,
      "status": "RUNNING"
    }
  • 失败

    JSON
    {
      "message": "Details of the failed request.",
      "agent_id": "Agent ID.",
      "create_ts": null,
      "status": "FAILED"
    }

更新配置

详情请参考更新配置。

停止服务

调用 stop 停止转写。请求成功时,你会在响应 Body 中收到转写会话的状态。

请求示例

Shell
curl --request POST \
  --url https://api.sd-rtn.com/cn/api/speech-to-text/v1/projects/:appid/agents/:agentId/leave \
  --header 'Authorization: Basic <credentials>'

参考信息

示例项目和源代码

你可以查看Demo 体验实时转录翻译并评估其准确性和延迟。

你也可以参考 GitHub 上的示例项目了解字幕和转写的实现方式。如需更多演示代码,请联系 support@agora.io。

REST API 中间件

Agora Go Backend Middleware 是一个开源微服务,它公开了一个 RESTful API,旨在简化与声网的交互。该项目使用 Golang 编写,由 Gin 框架驱动,作为中间件连接使用声网视频 SDK 或视频 SDK 的前端应用与声网的 RESTful API。