简介
快商通声纹识别通过 REST API 的方式给开发者提供一个通用的 HTTP 接口。
声纹识别
快商通声纹识别提供3种文本类型模型。
文本无关(ti: text-independent): 声纹注册、声纹验证、声纹辨认,语音内容所读文本不同。
文本相关(td: text-dependent): 声纹注册、声纹验证、声纹辨认,语音内容所读文本一致(例如注册与验证,辨认所用语音文本皆为“芝麻开门”)。
随机动态口令(rd: random-digit):声纹注册、声纹验证、声纹辨认,语音内容所读文本为8位随机数字串。
文本无关
文本无关(ti: text-independent):声纹注册、声纹验证、声纹辨认,语音内容所读文本不同。文本无关对语音有时长要求,在注册场景,需要有效时长大于30秒的语音,而且验证和辨认场景,需要有效时长大于15秒的语音。文本无关适用于交谈对话,或按照一定范文朗读产生的长语音。
文本相关
文本相关(td: text-dependent): 声纹注册、声纹验证、声纹辨认,语音内容所读文本一致(例如注册与验证,辨认所用语音文本皆为“芝麻开门”)。在注册场景需要朗读3遍以上相同文本内容的语音用来注册声纹模型。
随机动态口令
随机动态口令(rd: random-digit):声纹注册、声纹验证、声纹辨认,语音内容所读文本为8位随机数字串。在注册场景需要朗读3遍以上8位随机数字串文本内容的语音用来注册声纹模型。
语音格式
格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、mp3(压缩格式)。推荐wav。采样率 :8000或16000 固定值。 编码:16bit 位深。
接口说明
快商通声纹识别接口url为:https://vpr.kuaishang.cn,在调用 /kst/enroll 注册声纹模型前,需先调用 /kst/upload 上传N段语音(N>=1)。
上传注册语音
<a id=上传注册语音> </a>
基本信息
Path: /kst/upload
Method: POST
接口描述:
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | multipart/form-data | 是 |
Query
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
type | 是 | ti | 文本类型: ti 文本无关,td 文本相关,rd 随机动态口令 |
node | 是 | icbc | 一个声纹库节点,即一组说话人集合 |
spkid | 是 | 56789 | 一个声纹库节点中的说话人模型标识id |
wavtype | 是 | wav | 上传的语音文件格式,支持 wav, mp3, pcm |
channel | 是 | 0 | 表示待处理的声道 0:左声道;1:右声道。如果单声道语音文件,则必须取0 |
replaydetect | 否 | true | 是否开启防录音冒充检测功能 |
snrdetect | 否 | false | 是否开启信噪比检测功能 |
asrdetect | 否 | false | 是否开启随机数字串文本内容识别 |
step | 是 | 1 | 注册语音需多条语音上传, step表示上传的第step条语音, step >=1 |
text | 否 | 12345678 | 当前上传语音文件的随机数字串文本内容 |
Body
参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
file | file | 是 |
返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> asr_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">内容识别结果是否通过</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码,不为0代表上传注册语音失败</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr><tr key=0-3><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> replay_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">防录音冒充检测结果是否通过</span></td><td key=5></td></tr><tr key=0-4><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> replay_score</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">防录音冒充检测得分</span></td><td key=5></td></tr><tr key=0-5><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> asr</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">内容语音识别</span></td><td key=5></td></tr><tr key=0-6><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> snr</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">信噪比检测得分</span></td><td key=5></td></tr><tr key=0-7><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> snr_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">信噪比检测结果是否通过</span></td><td key=5></td></tr><tr key=0-8><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> aid</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">本条操作音频id(可忽略)</span></td><td key=5></td></tr>
</tbody>
</table>
声纹注册
<a id=声纹注册> </a>
基本信息
Path: /kst/enroll
Method: POST
接口描述:
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | multipart/form-data | 是 |
Query
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
type | 是 | ti | 文本类型: ti 文本无关,td 文本相关,rd 随机动态口令 |
node | 是 | icbc | 一个声纹库节点,即一组说话人集合 |
spkid | 是 | 56789 | 一个声纹库节点中的说话人模型标识id |
wavtype | 是 | wav | mp3 |
channel | 是 | 0 | 表示待处理的声道 0:左声道;1:右声道。如果单声道语音文件,则必须取0 |
asrdetect | 否 | true | 是否开启文本内容识别(仅文本相关引擎有效) |
replaydetect | 否 | false | 是否开启防录音冒充检测功能 |
text | 否 | 您好中国工商银行 | 语音文本内容(用于文本相关语音文本内容识别的结果判断) |
Body
参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
file | file | 是 |
返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> aid</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">本次注册所用音频id(可忽略)</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码,不为0代表注册失败</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr>
</tbody>
</table>
1:1声纹验证
<a id=1:1声纹验证> </a>
基本信息
Path: /kst/verify
Method: POST
接口描述:
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | multipart/form-data | 是 |
Query
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
type | 是 | ti | 文本类型: ti 文本无关,td 文本相关,rd 随机动态口令 |
node | 是 | icbc | 一个声纹库节点,即一组说话人集合 |
spkid | 是 | 56789 | 一个声纹库节点中的说话人模型标识id |
wavtype | 是 | wav | 上传的语音文件格式,支持 wav, mp3, pcm |
channel | 是 | 0 | 表示待处理的声道 0:左声道;1:右声道。如果单声道语音文件,则必须取0 |
replaydetect | 否 | true | 是否开启防录音冒充检测功能 |
snrdetect | 否 | false | 是否开启信噪比检测功能 |
asrdetect | 否 | false | 是否开启文本内容识别(仅文本相关引擎有效) |
text | 否 | 您好中国工商银行 | 语音文本内容(用于文本相关语音文本内容识别的结果判断) |
Body
参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
file | file | 是 |
返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> asr_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">语音识别内容结果是否通过</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> asr</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">语音识别内容</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码,不为0代表1:1验证失败</span></td><td key=5></td></tr><tr key=0-3><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr><tr key=0-4><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> replay_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">防录音冒充检测结果是否通过</span></td><td key=5></td></tr><tr key=0-5><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> replay_score</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">防录音冒充检测得分</span></td><td key=5></td></tr><tr key=0-6><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">声纹验证结果是否通过</span></td><td key=5></td></tr><tr key=0-7><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> score</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">声纹验证得分</span></td><td key=5></td></tr><tr key=0-8><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> nscore</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">声纹验证归一化得分</span></td><td key=5></td></tr><tr key=0-9><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> snr</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">信噪比检测得分</span></td><td key=5></td></tr><tr key=0-10><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> snr_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">信噪比检测结果是否通过</span></td><td key=5></td></tr><tr key=0-11><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> aid</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">本次操作音频id(可忽略)</span></td><td key=5></td></tr>
</tbody>
</table>
1:N声纹辨认
<a id=1:N声纹辨认> </a>
基本信息
Path: /kst/identify
Method: POST
接口描述:
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | multipart/form-data | 是 |
Query
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
type | 是 | ti | 文本类型: ti 文本无关,td 文本相关,rd 随机动态口令 |
node | 是 | icbc | 一个声纹库节点,即一组说话人集合 |
topn | 是 | 1 | 1:N声纹辨认返回top N结果 |
wavtype | 是 | wav | 上传的语音文件格式,支持 wav, mp3, pcm |
channel | 是 | 0 | 表示待处理的声道 0:左声道;1:右声道。如果单声道语音文件,则必须取0 |
replaydetect | 否 | true | 是否开启防录音冒充检测功能 |
snrdetect | 否 | false | 是否开启信噪比检测功能 |
asrdetect | 否 | false | 是否开启文本内容识别(仅文本相关引擎有效) |
text | 否 | 您好中国工商银行 | 语音文本内容(用于文本相关语音文本内容识别的结果判断) |
Body
参数名称 | 参数类型 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
file | file | 是 |
返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> asr_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">语音识别内容结果是否通过</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> asr</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">语音识别内容</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> candidates</span></td><td key=1><span>object []</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">topN候选人列表, 根据得分从高到低排序</span></td><td key=5><p key=3><span style="font-weight: '700'">item 类型: </span><span>object</span></p></td></tr><tr key=0-2-0><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> node</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">声纹库节点</span></td><td key=5></td></tr><tr key=0-2-1><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> spkid</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">说话人唯一标识id</span></td><td key=5></td></tr><tr key=0-2-2><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> score</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">1:N声纹辨认得分</span></td><td key=5></td></tr><tr key=0-2-3><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> nscore</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">1:N声纹辨认归一化得分</span></td><td key=5></td></tr><tr key=0-2-4><td key=0><span style="padding-left: 20px"><span style="color: #8c8a8a">├─</span> result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">1:N声纹辨认结果是否通过</span></td><td key=5></td></tr><tr key=0-3><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码,不为0代表1:N辨认失败</span></td><td key=5></td></tr><tr key=0-4><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr><tr key=0-5><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> replay_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">防录音冒充检测结果是否通过</span></td><td key=5></td></tr><tr key=0-6><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> replay_score</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">防录音冒充检测得分</span></td><td key=5></td></tr><tr key=0-7><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> snr</span></td><td key=1><span>number</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">信噪比检测得分</span></td><td key=5></td></tr><tr key=0-8><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> snr_result</span></td><td key=1><span>boolean</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">信噪比检测结果是否通过</span></td><td key=5></td></tr><tr key=0-9><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> aid</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">本次操作音频id(可忽略)</span></td><td key=5></td></tr>
</tbody>
</table>
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> aid</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">本次注册所用音频id(可忽略)</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码,不为0代表注册失败</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr>
</tbody>
</table>
声纹删除
<a id=声纹删除> </a>
基本信息
Path: /kst/delete
Method: POST
接口描述:
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/x-www-form-urlencoded | 是 |
Query
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
node | 是 | icbc | 一个声纹库节点,即一组说话人集合 |
spkid | 是 | 56789 | 一个声纹库节点中的说话人模型标识id |
type | 是 | ti | 文本类型: ti 文本无关,td 文本相关,rd 随机动态口令 |
返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码,不为0代表删除失败</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr>
</tbody>
</table>
生成8位随机动态口令
<a id=生成8位随机动态口令> </a>
基本信息
Path: /kst/rd/text
Method: GET
接口描述:
请求参数
返回数据
<table>
<thead class="ant-table-thead">
<tr>
<th key=name>名称</th><th key=type>类型</th><th key=required>是否必须</th><th key=default>默认值</th><th key=desc>备注</th><th key=sub>其他信息</th>
</tr>
</thead><tbody className="ant-table-tbody"><tr key=0-0><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> code</span></td><td key=1><span>number</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误码</span></td><td key=5></td></tr><tr key=0-1><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> msg</span></td><td key=1><span>string</span></td><td key=2>必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">错误信息</span></td><td key=5></td></tr><tr key=0-2><td key=0><span style="padding-left: 0px"><span style="color: #8c8a8a"></span> text</span></td><td key=1><span>string</span></td><td key=2>非必须</td><td key=3></td><td key=4><span style="white-space: pre-wrap">8位随机数字串</span></td><td key=5></td></tr>
</tbody>
</table>
网友评论