一、使用场景
·你画我猜:可以实时拉取房间内某个用户的音频进行实时识别,转换成文本之后回调给客户的业务服务器,进行业务逻辑判断
·语音审核:和业务关联比较多的语音审核,可以采取该接口将数据流投递到语音识别接口进行语音识别,然后进行关键词过滤。
·实时字幕:可以通过该接口实时识别房间音频数据,形成文本,在前端做呈现。
二、架构原理
具体流程如下:
三、应用优势
·实时返回:可以将 trtc 房间的语音数据实时识别返回,快速高效。
·流程简单:深度融合 trtc 和 asr,数据流完全打通,不需要复杂接入流程。
·使用灵活:数据返回给业务服务器之后,可以和业务逻辑实时关联。
四、注意事项
·一般情况下,语音识别的处理时间较长是由于部署函数时开启了 异步执行。
·目前识别的结果将下发至业务服务器。暂不支持 websocket 的形式,无法下发至客户端。
·默认的鉴权形式是 应用鉴权,测试时可更改为 无鉴权。
五、1. 开通服务
你需要开启腾讯云语音识别服务,操作详情见 开通语音识别服务。
六、2. 部署函数服务
1. 登录 Serverless 应用控制台。
2. 单击新建应用,进入“新建应用”页面。如下:
3. 选择直播房间实时语音识别服务,并进行基础配置。如下:
·应用名:自定义名称。
·地域:根据实际情况进行选择。
·密钥信息:你可在 API密钥管理 中查看腾讯云账号密钥信息。
4. 单击完成即可。已创建的应用详情界面如下:
5. 单击云函数 > 函数名称进入函数详情页,在“触发管理”中获取访问路径。
七、3. 语音识别启动接口
proto: HTTPSMethod: POSTURL: https://service-xxx-xxxx.sh.apigw.tencentcs.com/release/asr_speech
请求参数:
| 参数 | 类型 | 必填 | 说明 |
| SdkAppId | Int | 是 | 应用 ID,用于区分不同 TRTC 应用。 |
| RoomId | Int | 否 | 整型房间号 ID,用于在一个 TRTC 应用中唯一标识一个房间。 |
| StrRoomId | String | 否 | 字符串房间号 ID,RoomId 与 StrRoomId 必须配置一项,如果 RoomId 与 StrRoomId 同时配置,使用 RoomId。 |
| UserId | String | 是 | 录制用户 ID,用于在一个 TRTC 应用中唯一标识一个用户。 |
| UserSig | String | 是 | 录制用户签名,用于对一个用户进行登录鉴权认证。 |
| Callback | String | 否 | 录制结束后的回调地址,并使用 POST 方式进行回调。 |
请求示例:
{ "SdkAppId": 1400000000, "RoomId": 43474, "UserId": "user_55952145", "UserSig": "eJwtzNEKgkAUBNBxxxxxxx", "Callback": "https:xxxxxxxx.com/post/xxx"}
八、识别结果回调接口
回调参数说明:
| 参数 | 类型 | 必填 | 说明 |
| SdkAppId | Int | 是 | 应用 ID。 |
| RoomId | int | 是 | 整型房间 ID。 |
| UserId | String | 是 | 识别的用户 ID。 |
| StrRoomId | String | 是 | 字符串房间 ID。 |
| Result | Array | 是 | 语音识别结果 [{},{},{},{}] |
| Status | String | 是 | 当前用户语言识别状态,normal/finished |
Result 为数组类型,元素封装为 JSON 对象,封装格式如下:
| 参数名称 | 类型 | 必选 | 描述 |
| Voice | String | 是 | 当前一句话文本结果,编码为 UTF8。 |
| Index | Integer | 是 | 当前一句话结果在整个音频流中的序号,从 0 开始逐句递增。 |
| StartTime | Integer | 是 | 当前一句话结果在整个音频流中的起始时间。 |
| EndTime | Integer | 是 | 当前一句话结果在整个音频流中的结束时间。 |
| Message | String | 是 | 识别任务的执行结果。例如,识别结束,识别中,识别失败等。 |
结果示例:
{ "RequestID": "95941e2c85898384a95b81c2a5******", "SdkAppId": 1400000000, "RoomId": 43474, "UserId": "user_55952145", "Status": "recognizing/finished", "Result": [{ "Voice": "实时语音识别", "Index": 0, "StartTime": 0, "EndTime": 1024, "Message": "success" }]}