百度在线语音识别接入经验

由于最近项目需要语音识别,所以去接了一下语音识别的SDK。

分别接了讯飞的语音识别,和百度的。至于优缺点嘛,感觉讯飞的实时识别速度比较快,然后百度的是一次性上传,如果你一次识别的语音太多,就会识别比较慢,特别是在线识别。当然了百度的优点就是可以自己控制语音断点,讯飞的暂时还没有找到这个方法(有找到的麻烦告诉我)。

当然了,最后选择百度的原因在于,讯飞的审核,要求app小于50M。好吧!我的包没法变小了!

进入正题,接入的方法就不说了,按照官方的文档,肯定是可以接上的!

现在说说我遇到的几个坑,主要是IOS下面的

1.语音识别后应用的声音变小了

解决方法:在语音识别之后将Audiosession设置回来,百度语音识别的时候讲Audiosession设置为了录音状态,代码如下:

 //将声音模式调回正常状态
            AVAudioSession *audioSession = [AVAudioSession sharedInstance];
            NSError *err = nil;
            [audioSession setCategory :AVAudioSessionCategoryAmbient error:&err];
            if(err)
            {
                //        NSOSStatusErrorDomain
                NSLog(@"audioSession: %@  code = %d %@", [err domain], [err code], [[err userInfo] description]);
                return;
            }

2.在IOS8之后,使用语音识别之后,整个应用静音。

解决方法:在百度语音中有这样一个接口:

//- - - - - - - - - - - - - - - -功能设置- - - - - - - - - - - - - - - - - - - -
// 定制功能
// 定制语义解析功能请传入key=BDVR_CONFIG_KEY_NEED_NLU,如果开启此功能,将返回带语义的json串,含义详见开发文档说明
#define BDVR_CONFIG_KEY_NEED_NLU @"nlu"
// 定制通讯录识别功能请传入key=BDVR_CONFIG_KEY_ENABLE_CONTACTS,如果开启此功能,将优先返回通讯录识别结果
#define BDVR_CONFIG_KEY_ENABLE_CONTACTS @"enable_contacts"
// 定制SDK是否对AudioSession进行操作,如果外部需要操作AudioSession,应当通过此接口禁止SDK对AudioSession进行操作
#define BDVR_CONFIG_KEY_DISABLE_AUDIO_SESSION_CONTROL @"disable_audio_session_control"
- (void)setConfig:(NSString *)key withFlag:(BOOL)flag;
我们使用最后一个,然后自己控制Audiosession,这样就可以解决这个问题。代码如下:

// 定制SDK是否对AudioSession进行操作,如果外部需要操作AudioSession,应当通过此接口禁止SDK对AudioSession进行操作
    [[BDVoiceRecognitionClient sharedInstance] setConfig:BDVR_CONFIG_KEY_DISABLE_AUDIO_SESSION_CONTROL withFlag:true];

然后,其中还碰到了一些其他的问题,不过都是小事,相信大家都能搞定,这里就不再详细的说了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值