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;}