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 网页编程
每月 263 次下载
100KB
2K SLoC
revai
Rev.ai 的完全生成且具有偏见的 API 客户端库。
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/json
或 multipart/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规范版本v1
从Rev.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