#ai-api #api-client #job #rev #opinionated #api-request #generated

revai

Rev.ai API 的完全生成且具有偏见的 API 客户端

13 个不稳定版本 (5 个破坏性更新)

0.7.0 2023 年 7 月 19 日
0.5.0 2023 年 3 月 31 日
0.4.1 2022 年 11 月 18 日
0.3.0 2022 年 6 月 23 日
0.1.0 2021 年 1 月 20 日

#535 in 网页编程

Download history 16/week @ 2024-03-29

每月 263 次下载

MIT 许可证

100KB
2K SLoC

revai

Rev.ai 的完全生成且具有偏见的 API 客户端库。

docs.rs

API 详细信息

Rev.ai 通过 RESTful API 提供高质量的语音文本识别。所有公共方法和对象在此处均有文档说明,供开发者参考。对于实时语音转文本解决方案,请使用 Rev.ai 的 流式 API

基本端点

此版本 API 的基本 URL 为

https://api.rev.ai/speechtotext/v1

本文档中描述的所有端点均相对于此基本 URL。

快速入门

遵循 入门清单

获取您的访问令牌

您可以在您的账户的 设置页面 上生成您的 访问令牌。此访问令牌只需生成一次,永不过期。您可以重新生成令牌,但这将使之前的令牌失效。

提交文件

要将音频文件提交给 Rev.ai 进行转录

curl -X POST "https://api.rev.ai/speechtotext/v1/jobs" -H "Authorization: Bearer $REV_ACCESS_TOKEN" -H "Content-Type: application/json" -d "{\"media_url\":\"https://www.rev.ai/FTC_Sample_1.mp3\",\"metadata\":\"This is a sample submit jobs option\"}"

您将收到如下响应

{
  "id": "Umx5c6F7pH7r",
  "created_on": "2018-09-15T05:14:38.13",
  "name": "sample.mp3",
  "metadata": "This is a sample submit jobs option for multipart",
  "status": "in_progress"
}

id(在这种情况下为 Umx5c6F7pH7r)将允许您检索您的转录内容。

获取您的转录内容

一旦转录任务的 status 变为 transcribed,您可以通过运行以下命令以 JSON 格式检索转录内容

curl -X GET "https://api.rev.ai/speechtotext/v1/jobs/{id}/transcript" -H "Authorization: Bearer $REV_ACCESS_TOKEN" -H "Accept: application/vnd.rev.transcript.v1.0+json"

或者您也可以通过运行以下命令获取纯文本版本

curl -X GET "https://api.rev.ai/speechtotext/v1/jobs/{id}/transcript" -H "Authorization: Bearer $REV_ACCESS_TOKEN" -H "Accept: text/plain"

您可以通过定期查询任务来轮询您任务的 status

curl -X GET https://api.rev.ai/speechtotext/v1/jobs/{id} -H "Authorization: Bearer $REV_ACCESS_TOKEN"

注意:在生产服务器中不建议使用轮询。相反,使用 webhooks 异步接收转录任务完成后通知。

如果您有任何其他问题,请联系我们 [email protected]

提交文件

可以使用两种 POST 请求格式来提交文件: application/jsonmultipart/form-data

JSON

这是文件提交的首选方法。使用 media_url 属性为 Rev.ai 服务器提供直接下载 URL。此方法支持使用预签名 URL。如 YouTube 等平台托管的视频链接无效,因为它们不是直接下载链接。

关于预签名 URL 的重要说明:签名 URL 通常有一个可配置的过期时间。为确保 Rev.ai 服务器可以访问链接,请确保过期时间设置为 2 小时或更长时间。如果您计划重新发送相同的文件,请确保生成新的预签名 URL。

FormData

用于将本地文件发送到 Rev.ai 服务器。这允许客户直接从主机机器发送文件。此格式有一些限制,请参阅 Async API 限制部分 以获取更多详情。

处理时间与分块

通常,尤其是对于较短的文件,您的转录内容将在 5 分钟或更短的时间内准备好。通常,较长音频的处理时间不超过 15 分钟。如果您需要更快的处理时间,请联系 [email protected]

分块是将音频文件分解为更小段的过程。Rev.ai 使用此方法来减少 3 分钟以上长度的音频的处理时间。

Webhooks

如果提供了可选的 callback_url,当作业成功完成或失败时,API 将向 callback_url 发送以下请求体的 HTTP POST 请求。

示例 Webhook

成功转录作业时

{
  "job": {
    "id": "Umx5c6F7pH7r",
    "status": "transcribed",
    "created_on": "2018-05-05T23:23:22.29Z",
    "callback_url": "https://www.example.com/callback",
    "duration_seconds": 356.24,
    "media_url": "https://www.rev.ai/FTC_Sample_1.mp3"
  }
}

转录作业失败时

{
  "job": {
    "id": "Umx5c6F7pH7r",
    "status": "failed",
    "created_on": "2018-05-05T23:23:22.29Z",
    "callback_url": "https://www.example.com/callback",
    "failure": "download_failure",
    "failure_detail": "Failed to download media file. Please check your url and file type"
  }
}

使用 webhooks 的重要说明:API 将向 callback_url 发送 POST 请求,而不是 GET 请求。请求体是作业详情。您可以通过向 webhook 请求响应 200 状态码来取消订阅 webhook。如果 webhook 调用未收到 200 状态码,Rev.ai 将每 30 分钟重试 callback_url,直到 24 小时过去或我们收到 200 状态码。

对于初始 webhook 测试,您可以使用第三方 webhook 测试工具,例如 https://webhook.site/

Async API 限制

以下默认限制适用于每个用户和每个端点,并由 Rev.ai 支持进行配置。如果您有任何其他问题,请联系我们 [email protected]

  • 每 10 分钟提交 10,000 个转录请求
  • 每 10 分钟处理 500 个转录
  • 对 /jobs 端点的多部分/form-data 请求有 10 个并发限制和 2GB 的文件大小限制
  • 使用 media_url 属性的 /jobs 端点的 POST 请求没有并发限制或文件限制。它们仅受前两点限制

错误处理

API 使用 4xx 和 5xx HTTP 状态码来指示失败。4xx 状态码表示由于请求提供的错误(例如,省略了必需的参数)。5xx 错误表示 Rev.ai 服务器的错误。

当调用请求时发生 4xx 错误时,API 以 HTTP 响应有效载荷的形式响应 问题详情

问题详情信息表示为一个具有以下可选属性的 JSON 对象

属性 描述
type 表示错误类型的URI
标题 类型的人类可读简短描述
详细信息 错误的附加详细信息
状态 错误的HTTP状态码

除了上述属性外,问题详细信息对象可能还会列出帮助调试问题的其他属性。

示例错误

// Bad Submit Job Request
{
  "parameter": {
    "media_url": [
      "The media_url field is required"
    ]
  },
  "type": "https://www.rev.ai/api/v1/errors/invalid-parameters",
  "title": "Your request parameters didn't validate",
  "status": 400
}

// Invalid Transcript State
{
  "allowed_values": [
    "transcribed"
  ],
  "current_value": "in_progress",
  "type": "https://rev.ai/api/v1/errors/invalid-job-state",
  "title": "Job is in invalid state",
  "detail": "Job is in invalid state to obtain the transcript",
  "status": 409
}

重试失败的请求

某些错误可以通过重试请求简单地解决。以下错误代码可能通过连续重试来解决。

状态码 错误
429 请求过多
502 坏网关
503 服务不可用
504 网关超时

注意:除429状态码外,建议将请求的重试次数限制为每个请求最多5次。对于429错误,重试次数可以更高,但如果您注意到持续的限流,请通过[email protected]联系我们。

客户端详细信息

此客户端基于API规范版本v1Rev.ai OpenAPI规范生成。这样,它将随着功能的添加而保持更新。文档和生成此库的代码一起生成,以便轻松使用。

要安装库,请在您的Cargo.toml文件中添加以下内容。

[dependencies]
revai = "0.7.0"

基本示例

典型使用需要初始化一个Client。这需要用户代理字符串和一组凭证。

use revai::Client;

let rev.ai = Client::new(
    String::from("api-key"),
);

或者,库可以在环境中搜索客户端所需的大部分变量

  • REV.AI_API_KEY

然后您可以从环境中创建一个客户端。

use revai::Client;

let rev.ai = Client::new_from_env();

依赖项

16–34MB
~618K SLoC