空指针 EXC_BAD_ACCESS (code=1,address=xxx)
07随风 发布于2017-05 浏览:2195 回复:2
0
收藏

我使用的服务是:百度语音合成

调用的接口是:

int startStatus = [self.recognitionClient startVoiceRecognition:self];

参数设置情况:

 // 设置开发者信息

    [self.recognitionClient setApiKey:BAIDU_APIKEY withSecretKey:BAIDU_SECRETKEY];

    

    LOG(@"语音识别模式  %@",@[[BDVRSConfig sharedInstance].recognitionProperty]);

    // 设置语音识别模式,默认是输入模式

//    [self.recognitionClient setPropertyList:@[[BDVRSConfig sharedInstance].recognitionProperty]];

    [self.recognitionClient setPropertyList:[[BDVRSConfig sharedInstance] propertyList]];

    

    // 设置城市ID,当识别属性包含EVoiceRecognitionPropertyMap时有效

    [self.recognitionClient setCityID: 1];

    

    // 设置是否需要语义理解,只在搜索模式有效

    [self.recognitionClient setConfig:@"nlu" withFlag:[BDVRSConfig sharedInstance].isNeedNLU];

    

    // 开启联系人识别

    //    [self.recognitionClient setConfig:@"enable_contacts" withFlag:YES];

    

    // 设置识别语言

    [self.recognitionClient setLanguage:[BDVRSConfig sharedInstance].recognitionLanguage];

    

    

//    [[BDVoiceRecognitionClient sharedInstance] setNeedVadFlag:YES];

    

    // 是否打开语音音量监听功能,可选

    if ([BDVRSConfig sharedInstance].voiceLevelMeter)

    {

        BOOL res = [self.recognitionClient listenCurrentDBLevelMeter];

        

        if (res == NO)  // 如果监听失败,则恢复开关值

        {

            [BDVRSConfig sharedInstance].voiceLevelMeter = NO;

        }

    }

    else

    {

        [self.recognitionClient cancelListenCurrentDBLevelMeter];

    }

    

    // 设置播放开始说话提示音开关,可选

    [self.recognitionClient setPlayTone:EVoiceRecognitionPlayTonesRecStart isPlay:[BDVRSConfig sharedInstance].playStartMusicSwitch];

    // 设置播放结束说话提示音开关,可选

    [self.recognitionClient setPlayTone:EVoiceRecognitionPlayTonesRecEnd isPlay:[BDVRSConfig sharedInstance].playEndMusicSwitch];

    

    

    // 加载离线识别引擎

    NSString* appCode = BAIDU_APPID;

    NSString* licenseFilePath= [[NSBundle mainBundle] pathForResource:@"bdasr_temp_license" ofType:@"dat"];

    NSString* datFilePath = [[NSBundle mainBundle] pathForResource:@"s_1" ofType:@""];

    NSString* LMDatFilePath = nil;

    if ([[BDVRSConfig sharedInstance].recognitionProperty intValue] == EVoiceRecognitionPropertyMap) {

        LMDatFilePath = [[NSBundle mainBundle] pathForResource:@"s_2_Navi" ofType:@""];

    } else if ([[BDVRSConfig sharedInstance].recognitionProperty intValue] == EVoiceRecognitionPropertyInput) {

        LMDatFilePath = [[NSBundle mainBundle] pathForResource:@"s_2_InputMethod" ofType:@""];

    }

    

    NSDictionary* recogGrammSlot = @{@"$name_CORE" : @"张三\n李四\n",

                                     @"$song_CORE" : @"小苹果\n朋友\n",

                                     @"$app_CORE" : @"QQ\n百度\n微信\n百度地图\n",

                                     @"$artist_CORE" : @"刘德华\n周华健\n"};

    

    int ret = [self.recognitionClient loadOfflineEngine:appCode

                                                                   license:licenseFilePath

                                                                   datFile:datFilePath

                                                                 LMDatFile:LMDatFilePath

                                                                 grammSlot:recogGrammSlot];

    if (0 != ret) {

        LOG(@"load offline engine failed: %d", ret);

        return;

    }

开发平台和机型: ios 

SDK版本号:离在线融合SDK IOS版本 2.0.1

代码或日志截图(上传截图能帮助您更快解决问题):

复现步骤、现象及其他描述:

可以开始识别 但是识别一两次 就会出现这种情况


收藏
点赞
0
个赞
共2条回复 最后由用户已被禁言回复于2022-04
#3chenxiaoyu3回复于2017-05

07随风:


帮忙看下 这个离线引擎这里 出错了

回复07随风:

您好,是使用demo出现的问题吗?可以先下载最新的SDK进行相关测试

0
#207随风回复于2017-05


帮忙看下 这个离线引擎这里 出错了

0
TOP
切换版块