美文网首页
百度语音SDK(离在线语音识别2(识别模式及识别错误设置))

百度语音SDK(离在线语音识别2(识别模式及识别错误设置))

作者: An_Jun | 来源:发表于2017-07-01 11:48 被阅读313次

    1.demo自带的document文件(详细的参数设置及api讲解)

    2.重要参数讲解(doc中)

    2.1设置语音识别模式TBDV oiceRecognitionProperty(18种不同的识别垂类)

    BOOL res= [[BDVoiceRecognitionClientsharedInstance]setPropertyList: @[]];

    用处:如果贵公司搜索业务是属于18种类型中的某一种,可以采用,否则慎用。

    原理:若设置了某一类(如地图),百度会现在你设置的地图类词库中优先搜索,若搜索到就匹配转义,若没有,继续去大词库做循环查找。

    结果:若公司的搜索业务只是一般的关键词,或者不在18中垂直类型里,建议不设置(可以不设置默认就是输入EVoiceRecognitionPropertyInput),否则会导致识别时间稍长和准确率偏低(已踩坑)。

    2.2当前支持3种不同的识别语言:普通话、粤语和美式英文,(可以不设置默认)为普通话,取值参见BDVoiceRecognitionClient.h中的枚举类型。

    [[BDVoiceRecognitionClientsharedInstance]setLanguage:];

    2.3录音开始提示音和结束提示音(在开始语音识别前,配置 示音的开关)

    具体见doc图片文件

    a.引入提示音 文件

    b.打开播放 提示音的开关

    2.4其他设置

    禁用标点符号,(可以不设置)默认为不禁用。

    [[BDVoiceRecognitionClientsharedInstance]disablePuncs:YES];

    设置是否对语音进行端点检测,(可以不设置)默认开启。如进行端点检测,SDK会自动判断说话是否结束,从而停止录音;否则,需要调用speakFinish显式结束识别录音。

    [[BDVoiceRecognitionClientsharedInstance]setNeedVadFlag:YES];

    设置是否对上传的语音进行压缩,(可以不设置)默认开启。压缩语音会节约手机流量,但是会消耗CPU资源。

    [[BDVoiceRecognitionClientsharedInstance]setNeedCompressFlag:YES];

    设置在线识别的响应等待时间,如果超时,触发同步离线识别。

    [[BDVoiceRecognitionClientsharedInstance]setOnlineWaitTime:5];

    3.重要API讲解(doc中)

    3.1开始语音识别需要配置参数,具体配置可参考开发包头文件中的说明。开发者信息ApiKey

    和SecretKey为必须配置项,其余可选。设置方式如下:

    [[BDVoiceRecognitionClientsharedInstance]setApiKey:@"apiKey "withSecretKey:@”se

    cretKey”];

    3.2开始语音API(设置自己为代理,也就可以任意耍了 转义 错误 网络情况)

    [BDVoiceRecognitionClientsharedInstance]startVoiceRecognition:self];

    3.3启动语音识别:此操作将会启动录音,预处理和网络通讯三个模块的工作(3个都是可选协议方法)。

    a.启动语音(接收语音识别的结果):这里建议采用demo中的方式

    //开始语音识别功能,之前必须实现MVoiceRecognitionClientDelegate协议中的-(void)VoiceRecognitionClientWorkStatus:(int)aStatus obj:(id)aObj方法

    感兴趣的同学可以打断点调试每个方法的执行顺序,一方面加深代理方法的调用顺序,另一方面可以在某个具体的枚举方法中实现自己需要的某些效果。

    ps:

    intstartStatus = -1;

    startStatus = [[BDVoiceRecognitionClientsharedInstance]startVoiceRecognition:self];

    if(startStatus !=EVoiceRecognitionStartWorking)//创建失败则报告错误

    {

    NSString*statusString = [NSStringstringWithFormat:@"%d",startStatus];

    [selfperformSelector:@selector(firstStartError:)withObject:statusStringafterDelay:0.3];//延迟0.3秒,以便能在出错时正常删除view

    return;

    }

    b.如果应用程序需要监听BDVRClient识别过程中的网络状态,需要实现如下方法,代码如下:

    - (void)VoiceRecognitionClientNetWorkStatus:(int) aStatus{

    switch (aStatus){

    case EVoiceRecognitionClientNetWorkStatusStart:{

    // 底层网络通讯模块通讯开始,用户可以在状态条中显示菊花转等等, 示用户

    break;}

    case EVoiceRecognitionClientNetWorkStatusEnd:{

    //底层网络通讯模块通讯完成,同样此状态可以在UI上给用户 示break;

    }}

    }

    c.BDVRClient识别中发生错误后,如果应用程序需要得到更加详细的错误信息,需要实现如下方法,具体的错误类型说明参考表4(doc文档)。

    - (void)VoiceRecognitionClientErrorStatus:(int) aStatus subStatus:(int)aSubStatus{

    switch (aStatus){

    case EVoiceRecognitionClientErrorStatusClassVDP:{

    //语音数据处理出错switch (aSubStatus){

    case EVoiceRecognitionClientErrorStatusNoSpeech:{

    //用户未说话

    break;}

    //其他case}

    break;}

    case EVoiceRecognitionClientErrorStatusClassRecord:{

    //录音出错

    break;}

    case EVoiceRecognitionClientErrorStatusClassLocalNet:{

    //网络出错break;

    }

    case EVoiceRecognitionClientErrorStatusClassServerNet:{

    //服务器返回错误

    break;}

    相关文章

      网友评论

          本文标题:百度语音SDK(离在线语音识别2(识别模式及识别错误设置))

          本文链接:https://www.haomeiwen.com/subject/wefnqxtx.html