2014-10-14 3 views
1

내 코드는 한 언어로 된 텍스트를 말하고 다른 언어로 전환합니다 (필요한 경우). 문제는 첫 번째 문장 만 사용된다는 것입니다. 하나 이상의 언어로 더 많은 문장을 말할 필요가 있습니다. 다른 언어가 필요하며 새로운 초기화가 필요합니다. 첫 번째 문장이 매우 짧은 경우 두 번째 문장을 읽는 경우가 있습니다. 세 번째는 결코 말하지 않는다. 제안 사항?AVSpeechSynthesizer를 사용하여 다른 언어로 문장 추가

- (void) StartMyProgramm { 
SpeakTextPrefix = @"This is the first Line"; 
SpeakTextTitle = @"De Titel van het boek is"; 
SpeakTextSuffix = @"Wie komme ich hier wieder raus"; 
if (![SpeakTextPrefix isEqual: @""]) { 
    [self speakText:SpeakTextPrefix]; 

} else if (![SpeakTextTitle isEqual: @""]) { 
    [self speakText:SpeakTextTitle]; 

} else if (![SpeakTextSuffix isEqual: @""]) { 
    [self speakText:SpeakTextSuffix]; 

} 
} 
- (void) speakText:(NSString *)textToSpeak { 
if (![textToSpeak isEqual: @""]) { 
    //Recognize Language 
    NSArray *tagschemes = [NSArray arrayWithObjects:NSLinguisticTagSchemeLanguage, nil]; 
    NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes:tagschemes options:0]; 
    [tagger setString:textToSpeak]; 
    NSString *language = [tagger tagAtIndex:0 scheme:NSLinguisticTagSchemeLanguage tokenRange:NULL sentenceRange:NULL];   
    //Speak 
    AVSpeechSynthesisVoice *voice = nil; 
    AVSpeechUtterance *utterance = nil; 
    voice = [AVSpeechSynthesisVoice voiceWithLanguage:language]; 
    utterance = [[AVSpeechUtterance alloc] initWithString:textToSpeak]; 
    utterance.voice = voice; 
    utterance.rate = 0.3; 
    utterance.pitchMultiplier = 0.8; 
    [self.synthesizer speakUtterance:utterance]; 
} 
} 
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance { 
if (![SpeakTextTitle isEqual: @""]) { 
    [self speakText:SpeakTextTitle]; 
    SpeakTextTitle = @""; 
} else if (![SpeakTextSuffix isEqual: @""]) { 
    [self speakText:SpeakTextSuffix]; 
    SpeakTextSuffix = @""; 
} else { 
    //do something else 
} 
} 
+0

동일한 문제가있었습니다. 이 질문에서 논의 된 해결 방법 (비어있는 말투를 먼저 말하십시오)이 저에게 효과적이었습니다. http://stackoverflow.com/questions/24197952/avspeechsynthesizer-with-ios8 – chr

+0

Tnx, 좋은 생각, 시도해 볼게요! –

답변

1

같은 일이 생깁니다. 나는 iOS 8 SDK의 버그라고 생각합니다.

실제로 preUtteranceDelay을 0.05 (또는 그 이상) 속성을 AVSpeechUtterance으로 설정하여 문제를 해결했습니다.

+0

Tnx 나는 이것을 묶을 것이다! –

+0

Pre-and PostUtterance Delay (1.0에서 둘 다)를 이미 시도했지만 도움을받지 못했습니다 .--) Apple이이 오류를 해결할 수 있기를 바랍니다! –