php srs api,文档中心

语音识别

简介

HI,您好,欢迎使用腾讯AI开放平台语音识别API接口服务。

本文档主要针对需要集成HTTP API的技术研发工程师,详细描述语音识别能力相关的技术内容。

如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

官方交流一群:581197347

官方交流二群:705874401

官方交流三群:415349651

联系邮箱:aicamp@tencent.com

接口能力

接口名称

接口描述

API地址

语音识别-echo版

对音频进行语音识别,并返回语音的文字内容

https://api.ai.qq.com/fcgi-bin/aai/aai_asr

语音识别-流式版(AI Lab)

对音频进行流式识别,轻松实现边录音边识别

https://api.ai.qq.com/fcgi-bin/aai/aai_asrs

语音识别-流式版(WeChat AI)

对音频进行流式识别,轻松实现边录音边识别

https://api.ai.qq.com/fcgi-bin/aai/aai_wxasrs

更多更强大的接口能力正在开发中,并逐步开放,敬请期待!

协议须知

调用方集成语音识别API时,请遵循以下规则。

规则

描述

传输方式

HTTPS

请求方法

POST

语音参数

必须符合16k或8K采样率、16bit采样位数、单声道

语音格式

PCM、WAV、AMR、 SILK

字符编码

统一采用UTF-8编码

响应格式

统一采用JSON格式

接口鉴权

签名机制,详情请阅接口鉴权

一、语音识别-echo版

1. 接口描述

语音识别-echo版接口提供在线识别语音的能力,对整段音频进行识别,识别完成后,将返回语音的文字内容。

请注意单次请求中,语音时长上限15秒。

只支持中文普通话语音识别,后续开放更多语种的识别能力。

2. 请求参数

参数名称

是否必选

数据类型

数据约束

示例数据

描述

app_id

int

正整数

1000001

应用标识(AppId)

time_stamp

int

正整数

1493468759

请求时间戳(秒级)

nonce_str

string

非空且长度上限32字节

fa577ce340859f9fe

随机字符串

sign

string

非空且长度固定32字节

签名信息,详见接口鉴权

format

int

正整数

2

语音压缩格式编码,定义见下文描述

speech

string

语音数据的Base64编码,非空且长度上限8MB

待识别语音(时长上限15s)

rate

int

正整数

16000

语音采样率编码,定义见下文描述,(不传)默认即16KHz

语音压缩格式编码

格式名称

格式编码

PCM

1

WAV

2

AMR

3

SILK

4

语音采样率编码

采样率

编码

8KHz

8000

16KHz

16000

3. 响应参数

参数名称

是否必选

数据类型

描述

ret

int

返回码; 0表示成功,非0表示出错

msg

string

返回信息;ret非0时表示出错时错误原因

data

object

返回数据;ret为0时有意义

+ format

int

API请求中的格式编码

+ rate

int

API请求中的采样率编码

+ text

string

语音识别结果(UTF-8编码)

4. 请求限制

单用户单接口的QPS(每秒请求次数)上限如下,如需更多请联系QQ客服反馈。

未认证用户

个人认证用户

企业认证用户

1

2

10

5. 参考示例

假设示例请求数据如下。

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

2

仅供参考

rate

16000

仅供参考

speech

实时计算base64

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例语音文件存储路径为:/path/to/speech。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '2',

'rate' => '16000',

'speech' => $base64,

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_asr';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 2,

"rate": 16000,

"text": "今天天气怎么样"

}

}

二、语音识别-流式版(AI Lab)

1. 接口描述

语音识别-流式版接口提供流式识别语音的能力,可以轻松实现边录音边识别。

只支持中文普通话语音识别,后续开放更多语种的识别能力。

2. 请求参数

参数名称

是否必选

数据类型

数据约束

示例数据

描述

app_id

int

正整数

1000001

应用标识(AppId)

time_stamp

int

正整数

1493468759

请求时间戳(秒级)

nonce_str

string

非空且长度上限32字节

fa577ce340859f9fe

随机字符串

sign

string

非空且长度固定32字节

签名信息,详见接口鉴权

format

int

正整数

2

音频压缩格式编码,定义见下文描述

rate

int

正整数

16000

音频采样率编码,定义见下文描述

seq

int

正整数

0

语音分片所在语音流的偏移量(字节)

len

int

正整数

0

语音分片长度(字节)

end

int

正整数

0

是否结束分片标识,定义见下文描述

speech_id

string

非空且长度上限64B,同一应用内每段语音流标识需唯一,同一段语音流内的语音分片标识需一致

语音唯一标识

speech_chunk

string

语音分片数据的Base64编码,非空且长度上限8MB,建议分片单次请求时长200-300ms,分片规则见下文描述

待识别语音分片

语音压缩格式编码

格式名称

格式编码

PCM

1

WAV

2

AMR

3

SILK

4

语音采样率编码

采样率

编码

8KHz

8000

16KHz

16000

是否结束分片标识

标识

说明

0

中间分片

1

结束分片

分片规则

语音压缩格式

分片规则说明

PCM

支持按字节或者时间切片

WAV

支持按字节或者时间切片

AMR

仅支持按帧切片,第一个分片需包含AMR头标识(#!AMR\n),每个分片至少包含一个AMR帧,一个分片允许包含多个AMR帧

SILK

仅支持按帧切片,第一个分片需包含SILK头标识(#!SILK_V3),每个分片至少包含一个SILK帧,一个分片允许包含多个SILK帧

3. 响应参数

参数名称

是否必选

数据类型

描述

ret

int

返回码; 0表示成功,非0表示出错

msg

string

返回信息;ret非0时表示出错时错误原因

data

object

返回数据;ret为0时有意义

+ format

int

API请求中的格式编码

+ rate

int

API请求中的采样率编码

+ seq

int

API请求中的语音分片所在语音流的偏移量

+ len

int

API请求中的语音分片长度

+ end

int

API请求中的是否结束分片标识

+ speech_id

string

API请求中的语音唯一标识

+ speech_text

string

截止当前语音流的语音识别结果(UTF-8编码)

4. 请求限制

单用户单接口的QPS(每秒请求次数)上限如下,如需更多请联系QQ客服反馈。

未认证用户

个人认证用户

企业认证用户

1

2

10

5. 参考示例

假设示例请求数据如下(使用PCM格式),注意同一个语音的不同分片请求中,语音唯一标识是不变的。

本示例预先将PCM语音文件按字节切成3个语音分片,分别存储在:/path/to/speech1、/path/to/speech2、/path/to/speech3中。在实际应用中,开发者可自行选择切片方式。

第一个分片

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

1

仅供参考

rate

16000

仅供参考

seq

0

仅供参考

len

实时计算

end

0

仅供参考

speech_id

id

仅供参考

speech_chunk

实时计算base64

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例第一个语音分片文件存储路径为:/path/to/speech1。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech1';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '1',

'rate' => '16000',

'seq' => '0',

'len' => strlen($data),

'end' => '0',

'speech_id' => 'id',

'speech_chunk' => $base64,

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_asrs';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 1,

"rate": 16000,

"seq": 0,

"len": 1024,

"end": 0,

"speech_id": "id",

"speech_text": ""

}

}

第二个分片

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

1

仅供参考

rate

16000

仅供参考

seq

上一个分片的seq+上一个分片的len

len

实时计算

end

0

仅供参考

speech_id

id

仅供参考

speech_chunk

实时计算base64

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例第二个语音分片文件存储路径为:/path/to/speech2。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech2';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '1',

'rate' => '16000',

'seq' => '1024',

'len' => strlen($data),

'end' => '0',

'speech_id' => 'id',

'speech_chunk' => $base64,

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_asrs';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 1,

"rate": 16000,

"seq": 1024,

"len": 1024,

"end": 0,

"speech_id": "id",

"speech_text": "今天天气"

}

}

最后的分片

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

1

仅供参考

rate

16000

仅供参考

seq

上一个分片的seq+上一个分片的len

len

实时计算

end

1

仅供参考

speech_id

id

仅供参考

speech_chunk

实时计算base64

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例最后的语音分片文件存储路径为:/path/to/speech3。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech3';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '1',

'rate' => '16000',

'seq' => '2048',

'len' => strlen($data),

'end' => '1',

'speech_id' => 'id',

'speech_chunk' => $base64,

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_asrs';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 1,

"rate": 16000,

"seq": 2048,

"len": 1024,

"end": 1,

"speech_id": "id",

"speech_text": "今天天气怎么样"

}

}

三、语音识别-流式版(WeChat AI)

1. 接口描述

语音识别-流式版接口提供流式识别语音的能力,可以轻松实现边录音边识别。

为保证识别的流畅度,语音的分片时长建议200-300ms,单段语音的总时长上限为90s。

只支持中文普通话语音识别,后续开放更多语种的识别能力。

2. 请求参数

参数名称

是否必选

数据类型

数据约束

示例数据

描述

app_id

int

正整数

1000001

应用标识(AppId)

time_stamp

int

正整数

1493468759

请求时间戳(秒级)

nonce_str

string

非空且长度上限32字节

fa577ce340859f9fe

随机字符串

sign

string

非空且长度固定32字节

签名信息,详见接口鉴权

format

int

正整数

2

音频压缩格式编码,定义见下文描述

rate

int

正整数

16000

音频采样率编码,定义见下文描述

bits

int

正整数

16

音频采样位数,定义见下文描述

seq

int

正整数

0

语音分片所在语音流的偏移量(字节)

len

int

正整数

0

语音分片长度(字节)

end

int

正整数

0

是否结束分片标识,定义见下文描述

speech_id

string

非空且长度上限64B,同一应用内每段语音流标识需唯一,同一段语音流内的语音分片标识需一致

语音唯一标识

speech_chunk

string

语音分片数据的Base64编码,非空且时长上限90s,建议时长200-300ms,分片规则见下文描述

待识别语音分片

cont_res

int

正整数

0

是否获取中间识别结果,定义见下文描述

语音压缩格式编码

格式名称

格式编码

PCM

1

WAV

2

AMR

3

SILK

4

SPEEX

5

MP3

8

语音采样率编码

采样率

编码

16KHz

16000

语音采样位数

采样位数

编码

16位

16

是否结束分片标识

标识

说明

0

中间分片

1

结束分片

分片规则

语音压缩格式

分片规则说明

PCM

支持按字节或者时间切片

WAV

支持按字节或者时间切片

AMR

支持按字节或者时间切片

SILK

支持按字节或者时间切片

SPEEX

支持按字节或者时间切片

是否获取中间识别结果

标识

说明

0

不获取

1

获取

3. 响应参数

参数名称

是否必选

数据类型

描述

ret

int

返回码; 0表示成功,非0表示出错

msg

string

返回信息;ret非0时表示出错时错误原因

data

object

返回数据;ret为0时有意义

+ format

int

API请求中的格式编码

+ rate

int

API请求中的采样率编码

+ end

int

API请求中的是否结束分片标识

+ speech_id

string

API请求中的语音唯一标识

+ speech_text

string

截止当前语音流的语音识别结果(UTF-8编码)

+ is_final_res

int

是否是最终结果,分片乱序情况下有用

+ ack

int

期望收到的下一个语音分片的seq

is_final_res 和 ack 用于语音丢包检测,如果中间的某个语音包未到达,后续语音包先到达,后续语音包的 response 中的 ack 是中间丢包的seq。如果该缺失的语音包一直没有收到,尾包的 response 中的 is_final_res 为0

4. 请求限制

单用户单接口的QPS(每秒请求次数)上限如下,如需更多请联系QQ客服反馈。

未认证用户

个人认证用户

企业认证用户

1

2

10

5. 参考示例

假设示例请求数据如下(使用PCM格式),注意同一个语音的不同分片请求中,语音唯一标识是不变的。具体调用方式见SDK及文档。

本示例预先将PCM语音文件按字节切成3个语音分片,分别存储在:/path/to/speech1、/path/to/speech2、/path/to/speech3中。在实际应用中,开发者可自行选择切片方式。

第一个分片

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

1

仅供参考

rate

16000

仅供参考

bits

16

仅供参考

seq

0

仅供参考

len

实时计算

end

0

仅供参考

speech_id

id

仅供参考

speech_chunk

实时计算base64

cont_res

1

仅供参考

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例第一个语音分片文件存储路径为:/path/to/speech1。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech1';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '1',

'rate' => '16000',

'bits' => '16',

'seq' => '0',

'len' => strlen($data),

'end' => '1',

'speech_id' => 'id',

'speech_chunk' => $base64,

'cont_res' => '1',

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_wxasrs';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 1,

"rate": 16000,

"end": 0,

"speech_id": "id",

"speech_text": "",

"is_final_res": 0,

"ack": 1024

}

}

第二个分片

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

1

仅供参考

rate

16000

仅供参考

bits

16

仅供参考

seq

上一个分片的seq+上一个分片的len

len

实时计算

end

0

仅供参考

speech_id

id

仅供参考

speech_chunk

实时计算base64

cont_res

1

仅供参考

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例第二个语音分片文件存储路径为:/path/to/speech2。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech2';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '1',

'rate' => '16000',

'bits' => '16',

'seq' => '1024',

'len' => strlen($data),

'end' => '1',

'speech_id' => 'id',

'speech_chunk' => $base64,

'cont_res' => '1',

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_wxasrs';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 1,

"rate": 16000,

"end": 0,

"speech_id": "id",

"speech_text": "今天天气",

"is_final_res": 0,

"ack": 2048

}

}

最后的分片

参数名称

参数数据

描述

app_id

1000001

仅供参考

format

1

仅供参考

rate

16000

仅供参考

bits

16

仅供参考

seq

上一个分片的seq+上一个分片的len

len

实时计算

end

0

仅供参考

speech_id

id

仅供参考

speech_chunk

实时计算base64

cont_res

1

仅供参考

time_stamp

实时计算

nonce_str

实时计算

sign

实时计算

假设应用密钥为:a95eceb1ac8c24ee28b70f7dbba912bf,示例最后的语音分片文件存储路径为:/path/to/speech3。

下面使用PHP实现该HTTP API调用,其中getReqSign、doHttpPost可以从接口鉴权获取。

// 语音base64编码

$path = '/path/to/speech3';

$data = file_get_contents($path);

$base64 = base64_encode($data);

// 设置请求数据

$appkey = 'a95eceb1ac8c24ee28b70f7dbba912bf';

$params = array(

'app_id' => '1000001',

'format' => '1',

'rate' => '16000',

'bits' => '16',

'seq' => '2048',

'len' => strlen($data),

'end' => '1',

'speech_id' => 'id',

'speech_chunk' => $base64,

'cont_res' => '1',

'time_stamp' => strval(time()),

'nonce_str' => strval(rand()),

'sign' => '',

);

$params['sign'] = getReqSign($params, $appkey);

// 执行API调用

$url = 'https://api.ai.qq.com/fcgi-bin/aai/aai_wxasrs';

$response = doHttpPost($url, $params);

echo $response;

上述echo $response的输出结果即API的响应结果(注意使用UTF-8编码):

{

"ret": 0,

"msg": "ok",

"data": {

"format": 1,

"rate": 16000,

"end": 1,

"speech_id": "id",

"speech_text": "今天天气怎么样",

"is_final_res": 1,

"ack": 3072

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值