实时音视频 一句话识别(新)

音频格式支持 wav、pcm、ogg-opus、mp3、m4a。请求方法为 HTTP POST,Content-Type 为 application/json; charset=utf-8。

相关产品
实时音视频 产品页,含版本规格、价格与购买入口。

一、接口描述

本接口用于对60秒之内的短音频文件进行识别。

注意:说明:

二、前提条件

需要准备两个凭证:SDKAppID 与 SecretKey。

参数 获取位置 说明
SDKAppID TRTC 控制台 > 应用管理 TRTC 应用 ID,v3 的唯一客户维度。
SecretKey TRTC 控制台 > 应用概览 > SDK 密钥 用于生成 UserSig,不会传输到网络。

三、接口要求

内容 说明
语言种类 支持中文普通话、中文方言、英语,以及日语、韩语、法语等小语种。
支持行业 通用。
音频属性 采样率:16000Hz(pcm 格式例外,可通过 input_sample_rate 参数支持 8000Hz,详见输入参数说明);采样精度:16bits;声道:单声道(mono)。
音频格式 wav、pcm、ogg-opus、mp3、m4a。
请求协议 https 协议。
请求地址 国内站 https://asr.cloud-rtc.com/v3/transcribe。鉴权信息通过请求 body 的 auth 块传入,URL 不携带 query 参数。
响应格式 JSON,扁平结构。
数据发送 支持本地语音文件上传和语音 URL 上传两种请求方式,音频时长不能超过60s,音频文件大小不能超过3MB。
并发限制 默认单账号限制并发数为30次每秒。

注意:说明:

注意:同一 SDKAppID 下,直接接入 ASR、AI 对话、AI 转录/翻译等所有实时语音识别场景共享该并发池,即各类型的并发路数合计不超过账号上限。一句话识别与录音文件识别独立计算,不占用实时识别并发额度。如你有更多并发需求,请 联系我们。

六、请求格式

客户端发起 HTTP POST 请求,请求 URL 为:https://asr.cloud-rtc.com/v3/transcribe。

请求 body 为对称结构,格式为 json:

{ "auth": {"sdkappid": "1400000001", "usersig": "eJw…", "request_id": "req-uuid"}, "params": {"engine_model_type": "bigmodel", "language": "zh", "source_type": 1, "voice_format": "wav", "data": "xxxxxxxx", "data_len": 8}}

注意:说明:

注意:v3 不再使用 X-TRTC-SdkAppId / X-TRTC-UserSig 请求 header,也不再在 URL 上携带 AppId / RequestId。鉴权信息全部位于 body 的 auth 块内。

七、请求参数(auth)

每次 HTTP 请求是一个独立事务,request_id 既是单次请求 ID、也是签名 identifier。

参数名 必填 类型 描述
sdkappid 是 String TRTC 应用 ID,获取方式见 应用基本信息。SDK 自动填写。示例值:1400000001。
usersig 是 String TRTC 签名,计算及使用请参见 用户鉴权,其中的 UserID 等于本次请求的 request_id。
request_id 是 String 全局请求唯一 ID(uuid),该参数用来生成请求 UserSig。SDK 每次请求自动生成,响应原样回显。SDK 不支持自定义。

签名规则

1. 未调用 credential.SetUserSig() 时,SDK 使用 SDKAppID + SecretKey 本地生成签名,有效期86400秒,且每次请求都重新生成,长跑服务无需自行管理过期。

2. 调用 credential.SetUserSig(sig) 传入固定签名后,SDK 不再生成也不再刷新。服务端使用当前 identifier(离线为 request_id)验签,因此签名必须用同一个 identifier 签发。

3. 签名与站点绑定。SetSite(common.SiteIntl) 决定 host 与验签集群,国际站凭证不可用于国内站,反之亦然。

4. SecretKey 不会传输到网络,签名只用于服务端验签。

八、输入参数(params)

一句话识别的请求消息体,格式为 json。

参数名 必填 类型 描述
engine_model_type 是 String 语音识别 2.0(推荐)bigmodel:大模型引擎,支持实时说话人分离。语音识别 1.0基础版引擎:8k_zh。标准版引擎:可配置 8k_zh_large、16k_zh_large 或 16k_zh_en。高级版引擎:小语种 ASR 引擎,传参是“16k_具体语种 code”,例如 16k_vi(越南语)。
language 否 String 语音识别 2.0(推荐)bigmodel 支持 zh(中文普通话、中文方言和中英混)、en(英语)、yue(粤语)和小语种。中文方言:安徽、东北、福建、甘肃、贵州、河北、河南、湖北、湖南、江西、宁夏、山东、陕西、山西、四川、天津、云南、浙江、粤语(香港口音)、粤语(广东口音)、吴语、闽南语。小语种:ar(阿拉伯语)、de(德语)、fr(法语)、es(西班牙语)、pt(葡萄牙语)、id(印尼语)、it(意大利语)、ko(韩语)、ru(俄语)、th(泰语)、vi(越南语)、ja(日语)、tr(土耳其语)、hi(印地语)、ms(马来语)、nl(荷兰语)、sv(瑞典语)、da(丹麦语)、fi(芬兰语)、pl(波兰语)、cs(捷克语)、fa(波斯语)、el(希腊语)、ro(罗马尼亚语)、hu(匈牙利语)、mk(马其顿语)。语音识别 1.0基础版:8k_zh 支持中文普通话和中文方言。标准版:8k_zh_large、16k_zh_large 支持中文普通话和中文方言;16k_zh_en 支持中文普通话、中文方言、英语和中英混。高级版:vi(越南语)、ja(日语)、ko(韩语)、id(印度尼西亚语)、th(泰语)、pt(葡萄牙语)、tr(土耳其语)、ar(阿拉伯语)、es(西班牙语)、hi(印地语)、fr(法语)、ms(马来语)、fil(菲律宾语)、de(德语)、it(意大利语)、ru(俄语)、sv(瑞典语)、da(丹麦语)、no(挪威语)。如果你有更多语言需求,请 联系我们 评估。说明:当 engine_model_type 配置为 bigmodel,不填写 language 字段时,模型会自动识别语种;使用 SDK 时建议显式指定。
source_type 是 Integer 语音数据来源:0 语音 URL。1 语音数据(post body)。
voice_format 是 String 识别音频的音频格式,支持 wav、pcm、ogg-opus、mp3、m4a。
url 否 String 语音的 URL 地址,需要公网环境浏览器可下载。当 source_type 值为0时须填写该字段,为1时不填。音频时长不能超过60s,音频文件大小不能超过3MB。
data 否 String 语音数据,当 source_type 值为1(本地语音数据上传)时必须填写,当 source_type 值为0(语音 URL 上传)可不写。必须使用 Base64 编码(采用 Python 语言时注意读取文件应该为 string 而不是 byte,以 byte 格式读取后要 decode()。编码后的数据不可带有回车换行符)。音频时长不能超过60s,音频文件大小不能超过3MB(Base64 编码后)。
data_len 否 Integer 数据长度,单位为字节。当 source_type 值为1(本地语音数据上传)时必须填写,当 source_type 值为0(语音 URL 上传)可不写(此数据长度为数据未进行 Base64 编码时的数据长度)。
noise_threshold 否 Float 噪音参数阈值,取值范围:[0.0, 4.0]。对于一些音频片段,取值越大,判定为噪音情况越大;取值越小,判定为人声情况越大。
word_info 否 Integer 是否显示词级别时间戳:0 不显示。1 显示,不包含标点时间戳。2 显示,包含标点时间戳。默认值为 0。
filter_dirty 否 Integer 是否过滤脏词(中文普通话):0 不过滤脏词。1 过滤脏词。2 将脏词替换为 *。默认值为 0。
filter_modal 否 Integer 是否过滤语气词(中文普通话):0 不过滤语气词。1 部分过滤。2 严格过滤。默认值为 0。
filter_punc 否 Integer 是否过滤标点符号(中文普通话):0 不过滤。1 过滤句末标点。2 过滤所有标点。默认值为 0。
convert_num_mode 否 Integer 是否进行阿拉伯数字智能转换:0 不转换,直接输出中文数字。1 根据场景智能转换为阿拉伯数字。3 数学模式。默认值为 1。
hotword_id 否 String 热词表 ID,SDKAppID 维度。需先在控制台创建热词表。
hotword_list 否 String 临时热词表:该参数用于提升识别准确率。单个热词限制:“热词|权重”,单个热词不超过30个字符(最多10个汉字),权重 [1-11] 或者 100,例如 “腾讯云|5” 或 “ASR|11”;临时热词表限制:多个热词用英文逗号分割,最多支持128个热词,例如 “腾讯云|10,语音识别|5,ASR|11”。注意:热词权重设置为11时,当前热词将升级为超级热词,建议仅将重要且必须生效的热词设置到11,设置过多权重为11的热词将影响整体字准率。热词权重设置为100时,当前热词开启热词增强同音替换功能。举例:热词配置“蜜制|100”时,与“蜜制”同拼音(mizhi)的“秘制”的识别结果会被强制替换成“蜜制”。因此建议客户根据自己的实际情况开启该功能。建议仅将重要且必须生效的热词设置到100,设置过多权重为100的热词将影响整体字准率。热词不能包含空格。
customization_id 否 String 自学习模型 ID。
input_sample_rate 否 Integer 支持 pcm 格式的8000音频在与引擎采样率不匹配的情况下升采样到16000后识别,能有效提升识别准确率。仅支持:8000。如传入8000,则 pcm 音频采样率为8000,当引擎选用 16k_zh 时,该8000采样率的 pcm 音频可以在 16k_zh 引擎下正常识别。注意:此参数仅适用于 pcm 格式音频,不传入值将维持默认状态,即默认调用的引擎采样率等于 pcm 音频采样率。
needvad 否 Integer 三态字段:不传走服务端默认;0 关闭 vad。1 开启 vad。
vad_silence_time 否 Integer 三态字段:不传走服务端默认(800)。语音断句检测阈值,单位 ms,取值范围240-2000。
speaker_diarization 否 Integer 说话人分离:0 不开启。1 开启说话人分离(匿名聚类)。3 开启说话人分离基础上增加角色认证。默认值 0。
speaker_number 否 Integer 说话人数量提示,0 表示自动检测。
context 否 Object 识别上下文:{"text":"背景文本","terms":["术语"],"general":[{"key":"domain","value":"Meeting"}]}。

注意:说明:

注意:context 的消费方式与引擎能力相关:大模型类引擎可使用 text / terms / general;传统引擎仅把 terms 降级为热词使用。

九、响应格式

响应消息为 json 格式,扁平结构,所有返回字段位于顶层,不再有 Response 外壳。

参数名 类型 描述
code Integer 状态码,0 代表正常,非 0 值表示发生错误。
message String 错误说明。
request_id String 本次请求的 request_id,与请求 auth.request_id 一致。定位问题时需要提供该次请求的 request_id。
result String 识别结果。
audio_duration Integer 请求的音频时长,单位为 ms。
language String 识别语言。
language_b47 String 识别语言标识。
word_size Integer 词时间戳列表的长度。注意:此字段可能返回 null,表示取不到有效值。
word_list Array of Word 词时间戳列表,需 word_info != 0。注意:此字段可能返回 null,表示取不到有效值。

Word 定义为 word_list 数组的元素结构,位于 word_list[] 之内:

名称 类型 描述
word String 词结果。
start_time Integer 词在音频中的开始时间。
end_time Integer 词在音频中的结束时间。

注意:v3 离线接口鉴权失败返回的是 HTTP 200 + body {"code":4002},不是 HTTP 4xx。判断请求成败请以 body 的 code 为准,不要只看 HTTP 状态码。SDK 已处理该情况,code != 0 时会返回携带该 code 的 error。

十、示例

用户通过 source_type=1 请求一句话识别,请求如下:

请求网址:

https://asr.cloud-rtc.com/v3/transcribe

请求 body:

{ "auth": { "sdkappid": "1400188366", "usersig": "eJw…", "request_id": "2f5e8263-a23b-4e65-be22-6b7c19bd4064" }, "params": { "engine_model_type": "bigmodel", "language": "zh", "source_type": 1, "voice_format": "wav", "data": "xxxxxxxx", "data_len": 8, "word_info": 1 }}

响应结果:

{ "code": 0, "message": "success", "request_id": "2f5e8263-a23b-4e65-be22-6b7c19bd4064", "result": "我们能接受的范围内。", "audio_duration": 1840, "language": "zh", "word_size": 3, "word_list": [ {"word": "我们", "start_time": 120, "end_time": 480}, {"word": "能接受的", "start_time": 480, "end_time": 1200}, {"word": "范围内", "start_time": 1200, "end_time": 1840} ]}

注意:未传 word_info 时,响应中不返回 word_size 与 word_list。

十二、安装

go get github.com/Tencent-RTC/trtc-asr-sdk-go@latest

要求 Go 1.21 及以上。

十三、SDK

·Tencent-RTC SDK for Go:Github

·Tencent-RTC SDK for Python:Github

·Tencent-RTC SDK for nodejs:Github

·Tencent-RTC SDK for Java:Github

·Tencent-RTC SDK for Rust:Github

·Tencent-RTC SDK for cpp:Github

十四、SDK 调用示例

单击查看 Golang 示例。

十五、初始化凭证

import ( v3 "github.com/Tencent-RTC/trtc-asr-sdk-go/asr/v3" "github.com/Tencent-RTC/trtc-asr-sdk-go/common")// 第一个参数是 SDKAppID(如 1400xxxxxx);v3 不需要腾讯云 AppID。credential := v3.NewCredential(sdkAppID, "your-sdk-secret-key")// credential.SetSite(common.SiteIntl) // 国际站;不调用则走国内站

十六、发起一句话识别

recognizer := v3.NewSentenceRecognizer(credential)data, _ := os.ReadFile("audio.pcm")resp, err := recognizer.RecognizeDataWithOptions(data, &v3.TranscribeRequest{ EngineModelType: "bigmodel", VoiceFormat: "pcm", Language: "zh",})if err != nil { log.Fatal(err)}fmt.Println(resp.Result, resp.AudioDuration, resp.WordList)

注意:请确保已通过 import 语句导入所需的包,例如 import ("os", "log", "fmt")。

十七、运行示例

cd examples/v3_sentence_asrgo run main.go bigmodel -f ../test.pcm -word-info 1# 查看所有选项go run main.go -h

十九、v3 全部使用数字错误码,返回在 body 的 code 字段中。

数值 说明
400 音频发送失败、音频为空或请求消息体格式错误。
413 音频超限。
4001 参数不合法,具体详情参考 message。
4002 鉴权失败。请检查 sdkappid、usersig 是否已通过 body 的 auth 块正确传入,以及签名的 identifier 是否等于本次请求的 request_id。
4003 AppID 服务未开通,请在控制台开通服务。
4004 资源包耗尽,请开通后付费或者购买资源包。
4005 账户欠费停止服务,请及时充值。
4006 账号当前调用并发超限。
4007 音频解码失败,请检查上传音频数据格式是否与调用参数一致。
5000 因机器负载过高、网络抖动等导致失败,请重新发起新识别。注意:该问题通常为偶发,少量出现可忽略,发起新识别即可。
5001 同 5000。
5002 同 5000。

20、HTTP 状态码与 code 的对应关系:

HTTP 状态码 场景 code
400 参数错误 4001
200 鉴权失败 4002
429 并发超限 4006
413 请求 body 过大 ——
503 调度失败 5000 / 5001 / 5002
赞 (0)
上一篇 4天前
下一篇 4天前