永久免费的百度语音转字幕工具使用说明「终于解决」

永久免费的百度语音转字幕工具使用说明「终于解决」主要内容永久免费的百度语音转字幕的工具Linux SDK 安装录制视频:徐志摩《再别康桥》演示将录制的视频分离音频文件用百度语音工具将音频文件软

欢迎大家来到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 . 摆渡船来了 百度内部处理的可能的分词结果: 摆渡船 来 了

以下录音的结果

  1. 原始音频:摆渡船来了 =>识别结果: 摆渡船来了 【保证结果】
  2. 原始音频:摆渡船来了么 =>识别结果: 百度传来了么 【可能结果,不保证】
  3. 原始音频:摆渡船来 => 识别结果: 百度传来 【可能结果,不保证】
  4. 原始音频:百度传来了喜讯 => 识别结果: 摆渡船传来了喜讯 【不保证,词库内的分词优先级高】

接口使用及调用流程

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行代码:

  1. push_params.set_parameter(bds::DATA_CHUNK, audio_buf, 0)
  2. 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

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信