美文网首页
同时使用百度asr和tts sdk时,无法唤醒

同时使用百度asr和tts sdk时,无法唤醒

作者: 字节码 | 来源:发表于2019-04-26 17:43 被阅读0次

    App中同时使用了ASR iOS SDK离线在线语音合成 iOS SDK,主要使用的功能:语音唤醒、语义识别、语音合成。在未集成离线在线语音合成 iOS SDK时可以正常使用唤醒和语音识别功能,一旦集成了离线在线语音合成 iOS SDK,这两个功能无法使用。

    分析步骤:

    • 1.通过在公司的app中调试AVAudioSession的-setActive:error:方法,发觉每次tts播报完成后,就会在百度tts内部的线程中将active设置为NO,导致 ASR iOS SDK无法进行语音录制,所以无法唤醒和语义识别。
    • 2.到现在问题已经很明确了,是AVAudioSession的激活状态被解除了,通过设置离线在线语音合成 iOS SDK的参数问题解决。

    下面是引用自语音合成中的AudioSession

    合成SDK默认会将AudioSession的Category设置为AVAudioSessionCategoryPlayback,并在必要的时候调用setActive:接口对外部音频进行打断及恢复,如果开发者不希望SDK对AudioSession进行操作,可以通过参数配置接口,把BDS_SYNTHESIZER_PARAM_ENABLE_AVSESSION_MGMT对应的value设置为NO,即可屏蔽SDK内部的操作,按照需求,自行配置AudioSession。

    //--------------- 以下参照百度地图tts参数
       // 语速
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(6) forKey:BDS_SYNTHESIZER_PARAM_SPEED];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(0) forKey:BDS_SYNTHESIZER_PARAM_USER_AGENT];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(0) forKey:BDS_SYNTHESIZER_PARAM_ONLINE_TTS_THRESHOLD];
    // 禁用百度sdk的AudioSession
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(NO) forKey:BDS_SYNTHESIZER_PARAM_ENABLE_AVSESSION_MGMT];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(9) forKey:BDS_SYNTHESIZER_PARAM_VOLUME];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(ETTS_AUDIO_TYPE_PCM_8K) forKey:BDS_SYNTHESIZER_PARAM_ETTS_AUDIO_FORMAT];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(1) forKey:BDS_SYNTHESIZER_PARAM_ETTS_DOMAIN_SYNTH];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(1) forKey:21];
       [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(NO) forKey:BDS_SYNTHESIZER_PARAM_AUDIO_SESSION_CATEGORY_OPTIONS];
       //---------------
    

    相关文章

      网友评论

          本文标题:同时使用百度asr和tts sdk时,无法唤醒

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