2015-10-17 7 views
0

Я могу использовать API AVSpeechSynthesizer для перевода текста в речь, чтобы говорить на японском языке на симуляторе, но он не работает на реальных устройствах, создающих журнал, как показано ниже. Любой совет?AVSpeechSynthesizer не может работать с японцами на реальном устройстве iOS9

AXSpeechAssetDownloader | ошибка | ASAssetQuery выборка ошибка приводит (для com.apple.MobileAsset.MacinTalkVoiceAssets) Error Domain = ASError Code = 21 "Невозможно скопировать информацию активов" UserInfo = {NSDescription = Невозможно скопировать информацию активов}

Вот источник

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

ответ

0

Сначала вы должны проверить настройки> accessibilty> включена речь> выбор речи или нет, просто включите его в КСН 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]; 
Смежные вопросы