NUISDK提供更小的工具包和更完善的状态管理。为满足不同用户需求,NUISDK既能提供全链路的语音能力,同时可做原子能力SDK进行使用,并保持接口的统一。
访问类型
说明
URL
外网访问(默认上海地域)
所有服务器均可使用外网访问URL(SDK中默认设置了外网访问URL)。
ECS内网访问
使用阿里云上海、北京、深圳ECS(即ECS地域为华东2(上海)、华北2(北京)、华南1(深圳)),可使用内网访问URL。ECS的经典网络不能访问AnyTunnel,即不能在内网访问语音服务;如果希望使用AnyTunnel,需要创建专有网络在其内部访问。
下图展示iOSSDK、AndroidSDK的交互流程。
服务端的响应除了音频流之外,都会在返回信息的header包含本次识别任务的task_id参数,是本次请求的唯一标识。
初始化参数如下。
参数
类型
是否必选
workspace
String
是
工作目录路径,SDK从该路径读取配置文件。
app_key
token
请确保该Token可以使用并在有效期内。
Token可以在初始化时设置,也可通过参数设置进行更新。
device_id
设备标识,唯一表示一台设备(如Mac地址/SN/UniquePsuedoID)。
debug_path
否
debug目录,当初始化SDK时的save_log参数取值为true时,该目录用于保存中间音频文件。
save_wav
当初始化SDK时的save_log参数取值为true时,该参数生效。表示是否保存音频debug,该数据保存在debug目录中,需要确保debug_path有效可写。
客户端发起一句话识别请求前需要进行参数设置,各参数由SDK中setParams接口以JSON格式设置,该参数只需设置一次。各参数含义如下。
如果需要更新,则进行设置。
service_type
Int
需要请求的语音服务类型,一句话识别为“0”。
direct_ip
支持客户端自行DNS解析后传入IP进行访问。
nls_config
JsonObject
参数nls_config配置如下。
sr_format
音频编码格式,支持OPUS编码和PCM原始音频。默认值:OPUS。
如果使用8000Hz采样率,则只支持PCM格式。
sample_rate
Integer
音频采样率,默认值:16000Hz。根据音频采样率在管控台对应项目中配置支持该采样率及场景的模型。
enable_intermediate_result
Boolean
是否返回中间识别结果,默认值:False。
enable_punctuation_prediction
是否在后处理中添加标点,默认值:False。
enable_inverse_text_normalization
ITN(逆文本inversetextnormalization)中文数字转换阿拉伯数字。设置为True时,中文数字将转为阿拉伯数字输出,默认值:False。
customization_id
自学习模型ID。
vocabulary_id
定制泛热词ID。
enable_voice_detection
是否启动语音检测。开启后能够识别出一段音频中有效语音的开始和结束,剔除噪音数据。默认值:False(不开启)。
max_start_silence
max_end_silence
当enable_voice_detection设置为true时,该参数生效。表示允许的最大结束静音时长。单位:毫秒,取值范围:200ms~6000ms。超出时长服务端会发送RecognitionCompleted事件,结束本次识别(需要注意的是后续的语音不会继续进行识别)。
extend_config
若需要设置交互协议支持但是接口说明中未说明的参数,可通过此万能设置接口进行配置。具体设置方法请见代码示例。
客户端循环发送语音数据,持续接收识别结果。
客户端发送停止一句话识别请求,通知服务端语音数据发送结束,停止语音识别,服务端返回最终识别结果:
{"header":{"namespace":"SpeechRecognizer","name":"RecognitionCompleted","status":20000000,"message_id":"10490c992aef44eaa4246614838f****","task_id":"4c3502c7a5ce4ac3bdc488749ce4****","status_text":"Gateway:SUCCESS:Success."},"payload":{"result":"北京的天气。"}}header对象参数说明:
namespace
消息所属的命名空间。
name
消息名称。RecognitionCompleted表示识别完成。
status
状态码。表示请求是否成功,见服务状态码。
message_id
本次消息的ID,由SDK自动生成。
task_id
任务全局唯一ID,请记录该值,便于排查问题。
status_text
状态消息。
payload对象参数说明:
result
一句话识别最终结果。
状态码
状态消息
原因
解决方案
40000000
默认的客户端错误码,对应了多个错误消息。
用户使用了不合理的参数或者调用逻辑。
请参考官网文档示例代码进行对比测试验证。
40000001
Thetoken'xxx'hasexpired;
Thetoken'xxx'isinvalid
40000002
Gateway:MESSAGE_INVALID:Can'tprocessmessageinstate'FAILED'!
无效或者错误的报文消息。
40000003
PARAMETER_INVALID;
Failedtodecodeurlparams
用户传递的参数有误,一般常见于RESTful接口调用。
40000005
Gateway:TOO_MANY_REQUESTS:Toomanyrequests!
并发请求过多。
如果是试用版调用,建议您升级为商用版本以增大并发。
如果已是商用版,可购买并发资源包,扩充您的并发额度。
40000009
Invalidwavheader!
错误的消息头。
如果您发送的是WAV语音文件,且设置format为wav,请注意检查该语音文件的WAV头是否正确,否则可能会被服务端拒绝。
Toolargewavheader!
传输的语音WAV头不合法。
40000010
Gateway:FREE_TRIAL_EXPIRED:Thefreetrialhasexpired!
试用期已结束,并且未开通商用版、或账号欠费。
40010001
Gateway:NAMESPACE_NOT_FOUND:RESTfulurlpathillegal
不支持的接口或参数。
请检查调用时传递的参数内容是否和官网文档要求的一致,并结合错误信息对比排查,设置为正确的参数。
比如您是否通过curl命令执行RESTful接口请求,拼接的URL是否合法。
40010003
Gateway:DIRECTIVE_INVALID:[xxx]
客户端侧通用错误码。
表示客户端传递了不正确的参数或指令,在不同的接口上有对应的详细报错信息,请参考对应文档进行正确设置。
40010004
Gateway:CLIENT_DISCONNECT:Clientdisconnectedbeforetaskfinished!
在请求处理完成前客户端主动结束。
无,或者请在服务端响应完成后再关闭链接。
40010005
Gateway:TASK_STATE_ERROR:Gotstopdirectivewhiletaskisstopping!
客户端发送了当前不支持的消息指令。
40020105
Meta:APPKEY_NOT_EXIST:Appkeynotexist!
使用了不存在的Appkey。
40020106
Meta:APPKEY_UID_MISMATCH:Appkeyandusermismatch!
调用时传递的Appkey和Token并非同一个账号UID所创建,导致不匹配。
请检查是否存在两个账号混用的情况,避免使用账号A名下的Appkey和账号B名下生成的Token搭配使用。
403
Forbidden
使用的Token无效,例如Token不存在或者已过期。
请设置正确的Token。Token存在有效期限制,请及时在过期前获取新的Token。
41000003
MetaInfodoesn'thaveendpointinfo
无法获取该Appkey的路由信息。
41010101
UNSUPPORTED_SAMPLE_RATE
不支持的采样率格式。
当前实时语音识别只支持8000Hz和16000Hz两种采样率格式的音频。
41040201
Realtime:GET_CLIENT_DATA_TIMEOUT:Clientdatadoesnotsendcontinuously!
获取客户端发送的数据超时失败。
客户端在调用实时语音识别时请保持实时速率发送,发送完成后及时关闭链接。
50000000
GRPC_ERROR:Grpcerror!
受机器负载、网络等因素导致的异常,通常为偶发出现。
一般重试调用即可恢复。
50000001
52010001
Gateway:CLIENT_ERROR:Emptyaudiodata!
没有音频数据。
建议参考公共云示例代码,请求时发送音频数据。
40000004
Gateway:IDLE_TIMEOUT:Websocketsessionisidlefortoolongtime
请在建立链接后和服务端保持交互,比如持续发送语音流,您可以在采集音频的同时进行发送,发送结束后及时关闭链接。
40010002
Gateway:DIRECTIVE_NOT_SUPPORTED:Directive'SpeechRecognizer.EnhanceRecognition'isnotsupported!
发送了服务端不支持的消息指令。
Gateway:DIRECTIVE_INVALID:Toomanyitemsfor‘vocabulary'!(173)
热词数量设置过多。
请参考API进行正确设置。
41010104
TOO_LONG_SPEECH
发送的语音时长超过限制,仅在一句话识别接口上出现。
一句话语音识别支持60s以内的音频,如果超过60s,建议调用实时语音识别接口。