AVSpeechSynthesizer不能iOS9

问题描述:

的真实设备上与日本工作,我可以使用AVSpeechSynthesizer API文本到语音说日语在模拟器上但它不工作在如下生产日志的实际设备。有什么建议?AVSpeechSynthesizer不能iOS9

AXSpeechAssetDownloader |错误| ASAssetQuery错误撷取结果 (对于com.apple.MobileAsset.MacinTalkVoiceAssets)错误域= ASError 代码= 21 “无法复制资产信息” 的UserInfo = {NSDescription =无法复制资产信息}

这里是源

AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:speechStr]; 
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"ja-JP"]; 
[self.synthesizer speakUtterance:utterance] 

首先你要检查设置>平易>启用或不讲话>语音选择,只是使其能够在IOS 9或greater.then, 这是我工作的代码,如果它会帮助你然后。

NSMutableString *mutableString = [self.utteranceString mutableCopy]; 
    // CFStringTransform((__bridge CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, NO); 
    //CFStringTransform((__bridge CFMutableStringRef)mutableString, NULL, kCFStringTransformStripCombiningMarks, NO); 

    AVAudioSessionCategoryPlayback error:&setCategoryErr]; 
    AVSpeechUtterance *synUtt = [[AVSpeechUtterance alloc] initWithString:self.utteranceString]; 
    [synUtt setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:@"ja-JP"]; 
    self.speechSynthesizer = [[AVSpeechSynthesizer alloc] init]; 
    self.speechSynthesizer.delegate = self; 
    // set your class to conform to the AVSpeechSynthesizerDelegate protocol 
     float speechSpeed = 0.5f; 
     [synUtt setRate:speechSpeed]; 
     UInt32 doChangeDefaultRoute = 1; 

    UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; 
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 
    [synUtt setVolume:1.0]; 
    [self.speechSynthesizer speakUtterance:synUtt];