欢迎大家来到IT世界,在知识的湖畔探索吧!
主要内容
- 永久免费的百度语音转字幕的工具Linux SDK 安装
- 录制视频:徐志摩《再别康桥》
- 演示将录制的视频分离音频文件
- 用百度语音工具将音频文件软字幕srt格式文件
- 最重要的一点是永久免费,识别率97%
- [说明]本人普通话说的差,识别率低些是正常的,普通话说的好的,基本没问题
概述
本文档是百度AI开放平台Linux SDK (C++)BDSpeechSDK 3.x 的用户指南。描述了在线语音识别相关接口的使用说明
ASR 自动语音识别技术(Automatic Speech Recognition), 将人的语音转换为文本。
- LinuxSDK 仅支持在线语音识别,固定长语音模式。
- LinuxSDK内部采用流式接口,即边读取语音流边处理。 该流式方式同Android iOS SDK, 区别于Rest Api需要上传完整录音文件。
再次提醒: BDSpeechSDK的功能只有不限音频流时长的在线识别功能,并可以返回服务器端语义。没有任何离线功能,没有离线识别及唤醒词功能。
SDK 支持 普通话,英语,四川话和粤语
版本历史
库标识版本,sdk->get_sdk_version()发布时间libBDSpeechSDK.a md5值09a7b48a3a-201805023.0.0.9a7b48a3a2018-05-163974ca4d43dedff8d56b8830f2b17983
编译运行环境
目前仅支持 x64 Linux 操作系统。
目前支持运行centos 4-7 版本,及Ubuntu 14.04, 使用g++ 4.8.2版本。 其它Linux及g++版本暂时未做测试,请自行尝试编译,如果有报错请反馈。
如果使用g++ 5.x以上版本编译,需要开启-D_GLIBCXX_USE_CX11ABI=0,SDK可以正常使用,但可能导致您自己的部分新特性的代码不能编译。
线程限制
SDK限制为10个识别线程,但可以跑多个进程。
输入音频流
输入音频流的音频格式为pcm, 单声道,16bits, 小端序。采样率16k。
实时传输的一个16k采样率的音频流需要32kb/s的网速,10个并发音频流需要320K/s ,请确保与百度服务器之间的网络稳定。
开启压缩传输后会降低传输的数据量,但是音频质量会有损失。
- 开启EVR_AUDIO_COMPRESSION_BV32有损压缩,压缩为原始大小的1/8;(默认,不推荐)
- 开启EVR_AUDIO_COMPRESSION_AMR有损压缩,压缩为原始大小的1/16;
输出
SDK 输出的结果为识别音频的文字。如果开始语义理解后,进一步在识别音频的文字的基础上可以获取简单的语义解析结果。复杂的语义解析及智能问答可以参见ai.baidu.com上文本处理类的接口。
耗时
如果您用的是实时音频,没有影响。如果您用的是录音文件,请sleep与原始音频相同的时间,否则结果无法预期。即从音频开始进行计算到获取最终结果,识别整体耗时都是略多于原始音频的时长。
测试SDK
如果您需要测试SDK,请至sample目录。
- sample/asr 目录下main.cpp 直接展示如何使用SDK, 运行build.sh 执行
- sample/asrDemo2, 对SDK做了进一步封装,简化调用。运行run/build.sh 执行。asrDemo2 同时也是Clion的项目,可以直接导入运行。
- sample/asrDemo-srt, 在asrDemo2,一个完整的添加视频文件字幕的程序,请读sample/asrDemo-srt/Readme.md文件后,再进行测试。
目录结构
BDSpeechSDK中包含extern, include, lib, sample, resources五个目录。 如果您需要测试SDK,请至sample目录。
- extern包含需要的第三方库和头文件
- include包含需要引入的头文件
- BDSpeechSDK.hpp包含sdk可用接口
- BDSSDKMessage.hpp 包含给sdk发送的消息的结构定义
- ASR/bds_ASRDefines.hpp 包含sdk相关参数取值的定义,错误分类,对应错误码
- ASR/bds_asr_key_definitions.hpp 包含sdk相关参数的定义
- lib 包含需要引入的SDK库文件
- resources 包含sdk VAD 算法需要的模型文件
- sample 目录下有3个示例
g++ 安装
Centos 5 或 6 上如果没有g++程序,请按以下代码安装:
yum install gcc-c++ g++ --version
欢迎大家来到IT世界,在知识的湖畔探索吧!
默认是 4.4.7 版本
升级至4.8.2
欢迎大家来到IT世界,在知识的湖畔探索吧!wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils devtoolset-2-build devtoolset-2-gdb devtoolset-2-libstdc++-devel devtoolset-2-runtime
如果网速过慢的话,可以手动下载 下面的rpm文件本地安装
devtoolset-2-binutils-2.23.52.0.1-10.el6.x86_64.rpm devtoolset-2-build-2.1-4.el6.noarch.rpm devtoolset-2-gcc-4.8.2-15.el6.x86_64.rpm devtoolset-2-gcc-c++-4.8.2-15.el6.x86_64.rpm devtoolset-2-gdb-7.6.1-47.el6.x86_64.rpm devtoolset-2-libstdc++-devel-4.8.2-15.el6.x86_64.rpm devtoolset-2-runtime-2.1-4.el6.noarch.rpm # 如果网速过慢的话,可以手动下载上述rpm文件 # 链接:https://pan.baidu.com/s/1qZk6wVy 密码:zjew # yum localinstall *.rpm mv /usr/bin/gcc /usr/bin/gcc-4.4.7 mv /usr/bin/g++ /usr/bin/g++-4.4.7 mv /usr/bin/c++ /usr/bin/c++-4.4.7 ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc ln -s /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++ ln -s /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++
成功后:
欢迎大家来到IT世界,在知识的湖畔探索吧![root@instance-ah3bznc6 root]# g++ --version g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15) Copyright (C) 2013 Free Software Foundation, Inc.
SDK功能简介
功能简介
功能基本等同于Android iOS SDK的在线部分。BDSpeechSDK没有任何离线功能。
按步骤主要分为语音识别 及 语义理解。
- 在线语音识别: 将录音转为文字。目前在线识别支持普通话,英语,四川话及粤语
- 在线语义理解: 将语音识别出的文字,进行分词及找出意图。仅支持普通话
###识别模型及语言
百度语音提供2种识别模型
- 搜索模型: 效果同百度搜索的语音输入。适合于短语识别。
- 输入法模型:效果同百度输入法的语音输入。适合于长句识别。
- 普通话搜索模型同时能识别简单的常用英语语句,效果同手机百度。
SDK 支持 普通话,英语,四川话及粤语
识别模型和输入法模型及语言由ASR_PARAM_KEY_PRODUCT_ID控制
###静音断句及时长设置
SDK根据静音时长判断一句话有没有结束。SDK检测到静音时长超过这个时间后,就认为一句话结束,句子该切分了。
静音时长可以单独设置,建议值 200ms – 3000ms。参见ASR_PARAM_KEY_MAX_SPEECH_PAUSE参数
自定义词库
自定义词库适合短句,保证词库中一模一样的短句可以被识别出,词库中的分词优先级较高。 自定义词库仅对搜索模型生效。最好在1万行以内。
副作用:如果用户的测试集中包含大量非自定义词表的query,整体上准确率下降。
举例:
词库定义了1个短句: 1 . 摆渡船来了 百度内部处理的可能的分词结果: 摆渡船 来 了
以下录音的结果
- 原始音频:摆渡船来了 =>识别结果: 摆渡船来了 【保证结果】
- 原始音频:摆渡船来了么 =>识别结果: 百度传来了么 【可能结果,不保证】
- 原始音频:摆渡船来 => 识别结果: 百度传来 【可能结果,不保证】
- 原始音频:百度传来了喜讯 => 识别结果: 摆渡船传来了喜讯 【不保证,词库内的分词优先级高】
接口使用及调用流程
BDSSDKMessage
BDSSDKMessage 包可以认为是命令的参数,由一个标明意向的name,及其它参数组成,然后通过post函数传递命令。
name说明ASR_CMD_CONFIG设置配置参数ASR_CMD_START设置启动参数ASR_CMD_PUSH_AUDIO传递音频数据ASR_CMD_STOP停止当前当前音频流输入ASR_CMD_CANCEL取消当前的整个识别过程
识别调用流程
获取实例
每次识别一个音频流,都需要从获取实例到释放实例完整地执行一遍。即get_instance每个音频流获取一次,不要复用。
get_instance最多可以保持10个实例,即最多同时识别10个音频。
std::string err_msg; bds::BDSpeechSDK* sdk = bds::BDSpeechSDK::get_instance(bds::SDK_TYPE_ASR, err_msg);
设置回调监听器
设置结果的回调函数。注意回调产生在SDK内部的线程中。
void asr_output_callback(bds::BDSSDKMessage& message, void* user_arg); sdk->set_event_listener(&asr_output_callback, (void*)& thread_seq); // 此例中 thread_seq会作为user_arg参数,传入asr_output_callback回调。
设置SDK配置参数
bds::BDSSDKMessage cfg_params; cfg_params.name = bds::ASR_CMD_CONFIG; cfg_params.set_parameter(bds::COMMON_PARAM_KEY_DEBUG_LOG_LEVEL, sdk_log_level); .... bool is_success =sdk->post(cfg_params, err_msg); // is_success表示设置是否成功,具体错误见err_msg
cfg_params.set_parameter中可以设置的参数列表请见“参数列表:输入配置参数”一节
设置SDK 启动参数
这里只需要填写ASR_PARAM_KEY_APP参数,填写您自定义的应用名称即可,方便百度服务端联调及统计。
bds::BDSSDKMessage start_params; start_params.name = bds::ASR_CMD_START; start_params.set_parameter(bds::ASR_PARAM_KEY_APP, "AIPtest"); .... bool is_success =sdk->post(start_params, err_msg); // is_success表示设置是否成功,具体错误见err_msg
cfg_params.set_parameter中可以的参数列表说明请见“参数列表:输入启动参数”一节
传递音频数据
音频流的音频格式为raw,或者是pcm文件输入流。单声道,16bits, 小端序。
bds::BDSSDKMessage push_params; push_params.name = bds::ASR_CMD_PUSH_AUDIO; push_params.set_parameter(bds::DATA_CHUNK, audio_buf, (int)read_cnt); // read_cnt=320 //如果实时音频,此处不需要sleep。如果是文件流,此处需要 sleep , sleep的时长为音频时长。 //即服务端处理一段音频需要等同于音频原始时长的耗时,不能上传过快,否则服务端行为不能预期。 .... bool is_success =sdk->post(push_params, err_msg); // is_success表示设置是否成功,具体错误见err_msg
每次传递音频的大小可以根据需要来,建议320字节 。
两次音频数据调用请在10s内完成。否则有异常出现。
停止或者暂停流程
停止音频流输入
告诉SDK 音频流已经输入完毕,不再有后续音频。 需要调用以下2行代码:
- push_params.set_parameter(bds::DATA_CHUNK, audio_buf, 0)
- sdk->post(stop_params, err_msg));
push_params.set_parameter(bds::DATA_CHUNK, audio_buf, 0); bds::BDSSDKMessage stop_params; stop_params.name = bds::ASR_CMD_STOP; bool is_success = sdk->post(stop_params, err_msg)); // is_success表示设置是否成功,具体错误见err_msg
取消识别
告诉SDK 本次识别取消,即用户不再需要识别结果。
bds::BDSSDKMessage cancel_params; cancel_params.name = bds::ASR_CMD_CANCEL; bool is_success = sdk->post(cancel_params, err_msg)); // is_success表示设置是否成功,具体错误见err_msg
在设置的event_listener输出回调中,SDK返回EvoiceRecognitionClientWorkStatusCancel事件
释放资源
bds::BDSpeechSDK::release_instance(sdk);
与get_instance 对应 SDK不是处于空闲状态(见下面的空闲状态定义),调用 bds::BDSpeechSDK::release_instance可能引起程序出core。
清理所有线程池
所有识别结束,不需要发起新的识别。
SDK空闲时才能执行
bds::BDSpeechSDK::do_cleanup();
其它
SDK空闲状态定义
SDK空闲是指 没有开始识别或者实例产生了以下3个回调后:
- EVoiceRecognitionClientWorkStatusLongSpeechEnd // 长语音识别过程正常结束
- EVoiceRecognitionClientWorkStatusError // 发生错误
- EVoiceRecognitionClientWorkStatusCancel // 用户手动取消当前识别
本次识别的最后一点数据发完之后,并且post了长度为0的数据,并且post了stop命令后,最长(通常都不会超过)12s,sdk就会产生上述3个回调。
不建议用户发送ASR_CMD_CANCEL命令来强制结束识别,如果有需要,也可以这样做;但在没收到上述三个回调状态时,即不是空闲状态调用 bds::BDSpeechSDK::release_instance可能引起程序出core。
设置日志
默认日志根据您设置的日志级别输出到stderr中,可以自行指定日志文件。 注意需要在引擎空闲的时候,如一开始执行。 日志需要设置 COMMON_PARAM_KEY_DEBUG_LOG_LEVEL = EVRDebugLogLevelTrace 开启
BDSpeechSDK::open_log_file(const char *logFileName, int fileSize = 0);
- logFileName 日志的路径
- fileSize 日志文件的最大size, 实际size为 fileSize *512k
- 如果日志文件大于size, SDK会自动将当前日志文件重命名为xxx.bak文件(并删除历史xxx.bak),并新建一个日志文件xxx。所以这样只能最多同时保留两个日志文件。
- 您可以根据fileSize参数定期运行一个cron任务,备份xxx.bak文件
BDSpeechSDK::close_log_file();
close_log_file函数与open_log_file配对使用。在引擎空闲的时候,如全部结束后执行。
统计日志格式
开启日志并且日志级别在EVRDebugLogLevelInformation以上。 Sdk日志里带有统计信息,以Statistics开头(s大写),如下示例:
[INFO]-[2017-12-08 15:08:28.598][bds_EventManagerAsr.cpp:307]Statistics info, sn[e89f9705-2ca9-43bb-9790-0328a69ab1f4], sn_cost[11245]ms, response_cost[1085]ms, hard_delay[16]ms, recv_interval:[11229]ms, now:[1512716908598612], recv_first_pack_time:[1512716897352635], recv_last_pack_time:[1512716908582388], audio_len[10.620000]s
其中, 一个sn代表一句话的识别标志logId
- audio_len: 该句话的音频长度
- sn_cost :产生这个sn到这个sn对应的语音识别结束耗时, 可近似当作sdk识别该句话的总耗时;
- recv_interval :为sdk从用户侧接收这句话总的间隔时间, 即recv_first_pack_time和recv_last_pack_time之差
- response_cost:响应时间,为sdk收到用户post来的该句话的第一个包到第一次给出用户识别结果(可能是部分结果)的耗时;
- hard_delay :硬延时,类似response_cost,但是是计算最后一个包的。sdk收到用户post来的该句话的最后一个包到给出用户最终识别结果(可能报错信息)的耗时;
- recv_first_pack_time和recv_last_pack_time:sdk用户post来的该句话的第一包和最后一包的时间点,实际用户每次传递多少数据可能有所不同,且传来时还未分句,但不影响,sdk会回做标记,并计算出每句话的首尾包是哪次传来的,以及传过来的时间点。 通常sn_cost 应该略大于recv_interval,而recv_interval应该近似等于audio_len(时间上),即一句的识别时间和该句话的音频长度相当(略长出几十到几百ms),如果觉得sdk识别慢,请先关注这几个时间,以排查问题在大概哪一侧。
参数列表
输入参数列表
PRODUCT_ID
根据您需要的识别语言和模型选择PRODUCT_ID参数
- 搜索模型: 效果同百度搜索的语音输入。适合于短语识别。
- 输入法模型:效果同百度输入法的语音输入。适合于长句识别。
语义解析: 自然语言文本是用户意图的表述,语义解析的目的就是将文本分词并解析成意图表示。语义解析仅支持普通话搜索模型。 在线语义详细说明请查看“语义理解协议”文档
PID语言模型是否有标点在线语义备注1536普通话搜索模型无标点不支持默认PID15362普通话搜索模型加强标点(逗号、句号、问号、感叹号)不支持15363普通话搜索模型无标点支持1537普通话输入法模型有标点(逗号)不支持15372普通话输入法模型加强标点(逗号、句号、问号、感叹号)不支持15373普通话输入法模型加强标点(逗号、句号、问号、感叹号)支持1737英语有标点(逗号)不支持1637粤语有标点(逗号)不支持16372粤语加强标点(逗号、句号、问号、感叹号)不支持1837四川话有标点(逗号)不支持1936普通话远场模型有标点(逗号)不支持19362普通话远场模型加强标点(逗号、句号、问号、感叹号)不支持19363普通话远场模型加强标点(逗号、句号、问号、感叹号)支持
BDSSDKMessage
BDSSDKMessage 包可以认为是用户向SDK发送命令。由一个标明意向的name,及该name相关的参数组成,然后通过post函数传递命令。
name说明参数ASR_CMD_CONFIG设置配置参数见本节的“ASR_CMD_CONFIG 输入参数”ASR_CMD_START设置启动参数见本节的“ASR_CMD_START” 输入参数”ASR_CMD_PUSH_AUDIO传递音频数据见本节的“ASR_CMD_PUSH_AUDIO” 输入参数”ASR_CMD_STOP停止当前音频流输入无ASR_CMD_CANCEL取消当前的整个识别过程无
BDSSDKMessage params; params.name=ASR_CMD_CONFIG; // 这里设置name params.set_parameter(xxxx, yyyyy);// 根据文档或者demo,设置参数 bool is_success =sdk->post(params, err_msg)); // 发送这个命令
ASR_CMD_CONFIG 参数
bool 表示 int =0 (关闭)和 =1 (开启) 的值
参数名参数类型 / 值必填选填常用程度说明ASR_PARAM_KEY_APP_IDstring必填常用您在网站上申请的应用appIdASR_PARAM_KEY_API_KEYstring必填常用您在网站上申请的应用appKeyASR_PARAM_KEY_PRODUCT_IDint必填常用根据需要识别的语言,及模型选择一个PID值,中文搜索模型是1536。具体值见上一个表格,PRODUCT_ID。ASR_PARAM_KEY
_MAX_SPEECH_PAUSEfloat选填常用默认值70帧(=700ms)。VAD检测xxx帧 静音后认为一句话结束。 一帧 = 10msASR_PARAM_KEY_SAVE_AUDIO_ENABLEbool选填常用默认关闭,用于保存识别过程中的音频数据ASR_PARAM_KEY_SAVE_AUDIO_PATHstring选填常用保存音频文件路径,ASR_PARAM_KEY_SAVE_AUDIO_ENABLE开启后生效,默认路径为程序启动目录下的sdk_save_audio.d里。音频文件以单次识别为分割,文件以日期命名,精确到微秒,后缀为.pcmCOMMON_PARAM
_KEY_DEBUG_LOG_LEVELTBDVoiceRecognition
DebugLogLevel选填常用设置日志级别,日志可以使用open_log_file保存到文件中EVRDebugLogLevelOff默认不常用关闭日志,仅测试是使用EVRDebugLogLevelTrace常用开启所有日志, 反馈请开启这个级别日志ASR_PARAM_KEY
_COMPRESSION_TYPETBDVoiceRecognition
AudioCompressionType选填不常用SDK内部传输到百度服务端的音频流压缩格式,仅仅在与百度服务端通讯带宽不够的情况下设置。注意此处不是输入格式。输入格式见ASR_PARAM_KEY_SAMPLE_RATE。EVR_AUDIO
_COMPRESSION_PCM推荐常用不压缩,以原始音频pcm格式上传。EVR_AUDIO
_COMPRESSION_BV32默认不常用BV有损压缩格式传输,8倍压缩EVR_AUDIO
_COMPRESSION_AMR不常用AMR有损压缩格式传输,16倍压缩ASR_PARAM_KEY_SAMPLE_RATEBDVoiceRecognition
RecordSampleRateFlags选填固定值原始音频的采样率。输入音频流的音频格式为raw,或者是pcm文件输入流。单声道,16bits, 小端序EVoiceRecognition
RecordSampleRate16K默认常用16000的采样率,推荐ASR_PARAM_KEY
_DISABLE_PUNCTUATIONbool选填固定值固定值1,仅当不需要标点时将其设置为0ASR_PARAM_KEY
_CHUNK_ENABLEbool必填固定值固定值1ASR_PARAM_KEY
_MFE_DNN_DAT_FILEstring必填固定值固定值为bds_easr_mfe_dnn.dat文件的路径ASR_PARAM_KEY
_MFE_CMVN_DAT_FILEstring必填固定值固定值为bds_easr_mfe_cmvn.dat文件的路径
ASR_CMD_START 参数
参数名参数类型 / 值必填说明ASR_PARAM_KEY_APPstring必填您自己应用的名称, 英文字母数字及下划线ASR_PARAM_KEY_PLATFORMstring必填固定值 “Linux”ASR_PARAM_KEY_SDK_VERSIONstring必填固定值 “sdk3.0″, 该值随版本而定,具体参见demo
ASR_CMD_PUSH_AUDIO参数
传输方式见:”接口使用及调用流程:传递音频数据“一节。
参数名参数类型 / 值必填说明DATA_CHUNK二进制 及其长度是传入音频流二进制数组及长度,长度为0表示音频流结束
识别结果回调
设置结果的回调函数
void asr_output_callback(bds::BDSSDKMessage& message, void* user_arg); sdk->set_event_listener(&asr_output_callback, (void*)& thread_seq); // 此例中 thread_seq会作为user_arg参数,传入asr_output_callback回调。
BDSSDKMessage 参数
asr_output_callback 中的BDSSDKMessage message参数解析如下: message.name 必定为bds::asr_callback_name message.get_parameter(bds::CALLBACK_ASR_STATUS, status) 获取status,根据status值有如下表格
status含义参数EVoiceRecognitionClientWorkStatusStartWorkIng引擎准备完毕无EVoiceRecognitionClientWorkStatusFlushData临时结果CALLBACK_ASR_RESULT, 具体见下面表格EVoiceRecognitionClientWorkStatusFinish最终结果CALLBACK_ASR_RESULT, 具体见下面表格EVoiceRecognitionClientWorkStatusLongSpeechEnd开启长语音模式时(默认开启),整个音频流识别结束。该事件表示音频流识别结束。无EVoiceRecognitionClientWorkStatusChunkNlu语义理解结果DATA_CHUNK, 具体见下面表格EVoiceRecognitionClientWorkStatusError识别出错具体见下面EVoiceRecognitionClientWorkStatusError表格EVoiceRecognitionClientWorkStatusCancel用户手动取消的回调无
CALLBACK_ASR_RESULT 参数
用于EVoiceRecognitionClientWorkStatusFlushData 及 EVoiceRecognitionClientWorkStatusFinish
std::string json_result; message.get_parameter(bds::CALLBACK_ASR_RESULT,json_result);
json_result 为json字符串,解析后有如下参数:
key类型说明results_recognitionstring array识别结果数组,可能有多个,请取第一个为识别结果origin_result[“sn”]string代表一句话识别的logIdorigin_result[“sn_start_time”]string该识别结果对应的音频开始时间origin_result[“sn_end_time”]string该识别结果对应的音频结束时间
EVoiceRecognitionClientWorkStatusChunkNlu 参数
const char* buf; int len = 0; message.get_parameter(bds::DATA_CHUNK, buf, len); // std::string result(buf, len); // 转为string
具体解析的json解析结果请参见”语义理解协议“ 文档
EVoiceRecognitionClientWorkStatusError 参数
key类型说明CALLBACK_ERROR_CODEint错误码CALLBACK_ERROR_DOMAINint错误领域CALLBACK_ERROR_DESCstring错误描述CALLBACK_ERROR_SERIAL_NUMstring代表一句话识别的logId
如果初步反馈,请将这4个值一起反馈。具体bug反馈请开启EVRDebugLogLevelTrace, 给出完整日志。
错误码
简介
注意把日志开启(EVRDebugLogLevelTrace级别)
EVRClientErrorCodeServerSpeechQualityProblem错误会被sdk吞掉,: 音频质量有问题。因为即使后端检测到音频质量问题,识别仍可继续,所以用户回调中看不到,只能在日志中能看到。
语音识别错误会被分类,具体见TVoiceRecognitionClientErrorDomain的定义。
错误码
加粗为用户侧发生的常见错误
DOMAINCODE值主要来源描述EVRClientErrorDomainRecord10SDK未知错误EVRClientErrorDomainVAD20SDK语音数据处理VAD过程出错EVRClientErrorCodeVADException1SDK前端库VAD异常EVRClientErrorCodeNoSpeech2用户音频流用户未说话EVRClientErrorCodeShort3用户音频流用户说话声音太短EVRClientErrorDomainOnline30用户/服务端在线识别引擎出错EVRClientErrorCodeOnlineExceptioin1用户/服务端在线识别引擎异常EVRClientErrorCodeOnlineNetworkUnavailable2用户音频流网络不可用EVRClientErrorCodeOnlineTokenFailed3用户获取token失败 ,请检测appId appKey appSecret是否填写正确EVRClientErrorCodeOnlineResolveUrlFailed4用户解析url失败,请检测网络状态EVRClientErrorDomainLocalNetwork31用户连接百度服务端的网络问题,先确认联网是否正常EVRClientErrorCodeLocalTimeout1用户请检测网络状态,请求百度服务器连接超时EVRClientErrorDomainHTTP32用户/服务端HTTP协议错误。或日志中出现http status不等于200而出错,这与通常的http访问一样,先检查网络状况,如果网络状况正常,可反馈EVRClientErrorDomainServer33用户/服务端服务器返回错误 。或日志中出现-300X,均是后端返回的错误,除了-3005外可尝试重试。EVRClientErrorDomainServer-3001服务端后端从SDK读数据失败,可能是sdk检测到后端超时,断开了连接,重试EVRClientErrorCodeServerRecognError-3002服务端识别过程出错EVRClientErrorCodeServerNoFindResult-3003服务端协议参数错误EVRClientErrorCodeServerAppNameUnknownError-3004用户appId appKey appSecret填写错误 或流量超过限制EVRClientErrorCodeServerSpeechQualityProblem-3005用户声音不符合识别要求,通常是语音质量问题或采样率设的不对 。如果确认那块(报错的句子所处的音频位置段)音频没问题,可再检查采样率和别的识别参数有误问题。 音频质量问题,自查对应位置的音频,通常忽略该问题EVRClientErrorCodeServerSpeechTooLong-3006用户语音过长,确认是否开启了本地vad,以及vad门限是否过大-3007SDK/服务端后端检测到sdk传递的数据类型不对,通常不会出现,出现则重试EVRClientErrorCodeServerSpeechParamsUnknow-3008服务端上行参数未知,(可能是gzip解压失败) 后端检测到sdk传递的json参数不对,通常不会出现,出现则重试EVRClientErrorCodeServerSpeechNoUploadLink-3011用户网络上行流建立失败,可能跟网络状况或后端有关,重试-3012用户网络下行流建立失败,可能跟网络状况或后端有关,重试-3013服务端后端错误-3014用户用户自己取消,忽略之EVRClientErrorDomainOffline34服务端未知错误EVRClientErrorCodeRecoderException1SDK未知错误EVRClientErrorCodeRecoderNoPermission2SDK未知错误EVRClientErrorCodeRecoderUnAvailable3SDK未知错误EVRClientErrorCodeInterruption4SDK未知错误EVRClientErrorDomainCommon40其它错误EVRClientErrorCodeServerSpeechNoUploadLink4095SDK识别器忙EVRClientErrorCodeCommonPropertyListInvalid2用户垂类设置有误EVRClientErrorCodeCommonEnqueueError3用户语音数据enqueue失败
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17772.html