Ошибка AVSpeechSynthesizer AudioSession
Я играю с AVSpeechSynthesizer и всегда получаю следующие ошибки:
ERROR: >aqsrv> 65: Exception caught in (null) - error -66634
ERROR: AVAudioSessionUtilities.h:88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') failed with error: '?ytp'
Мой код:
AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
[synthesizer setDelegate:self];
speechSpeed = AVSpeechUtteranceMinimumSpeechRate;
AVSpeechUtterance *synUtt = [[AVSpeechUtterance alloc] initWithString:[[self text] text]];
[synUtt setRate:speechSpeed];
[synUtt setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:languageCode]];
[synthesizer speakUtterance:synUtt];
Кто-нибудь знает, как исправить эти ошибки?
Ответы
Ответ 1
Я получил код выше для работы с симулятором с минимальными настройками.
-
Бит вашего [[self text] text]
вашего кода может быть неправильным (в котором возникает ошибка Exception caught in (null)
). Следующий код работал у меня.
AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
[synthesizer setDelegate:self]; // set your class to conform to the AVSpeechSynthesizerDelegate protocol
float speechSpeed = AVSpeechUtteranceMinimumSpeechRate;
AVSpeechUtterance *synUtt = [[AVSpeechUtterance alloc] initWithString:@"hello I am testing"];
[synUtt setRate:speechSpeed];
[synUtt setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:[AVSpeechSynthesisVoice currentLanguageCode]]];
[synthesizer speakUtterance:synUtt];
И когда я говорю "работал", я имею в виду, что услышал голос, произносящий мое тестовое предложение в моем симуляторе.
Я все еще видел это предупреждение:
2013-09-21 11: 37: 56.454 Речь [5550: 3a03] 11: 37: 56.454 ОШИБКА: AVAudioSessionUtilities.h: 88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') с ошибкой: '? ytp'
-
У Xcode 5, похоже, стоит медленное время, пытаясь работать с традиционным #import <AVFoundation/AVFoundation.h>
с помощью этого кодекса SpeechSynthesis, казалось, что немного ускорилось при использовании нового @import AVFoundation;
.
Ответ 2
Я также вижу эти ошибки (используя ARC, но не muli threaded), но только на симуляторе, а не на реальном устройстве.
Я работаю над тем, что они являются ограничителем симулятора и могут быть безопасно проигнорированы - все остальное работает нормально.
Али
Ответ 3
Я получаю точно такой же журнал ошибок в Simulator, но у меня нет проблем с кодом в Simulator или на устройстве iPhone 5, как вы указали в другом месте. Разница может заключаться в том, что я не использую ни один из этих 6 дополнительных AVSpeechSythesizerDelegates и, следовательно, я не включил его в свой протокол класса. Следовательно, чтобы отслеживать вашу ошибку, вы можете попробовать ее без нее. Вот мой тестовый код, который логически совпадает с вашим, минус делегат и любое распределение хранилища AVSpeechUtterance:
-(void)tts:(NSString*)text
{
#define MY_SPEECH_RATE 0.1666
#define MY_SPEECH_MPX 1.55
AVSpeechSynthesizer *textToSpeech = [[AVSpeechSynthesizer new]autorelease];
NSString *language = [AVSpeechSynthesisVoice currentLanguageCode];
if (language==nil) language = @"en-us";
AVSpeechUtterance *speak = [AVSpeechUtterance speechUtteranceWithString:text];
[speak setRate:MY_SPEECH_RATE];
[speak setPitchMultiplier:MY_SPEECH_MPX];
[speak setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:language]];
[textToSpeech speakUtterance:speak];
}
Как вы можете видеть, я не использую ARC, но я не думаю, что это имеет значение. (Также размещен на форуме разработчиков)
Ответ 4
Я не могу в это поверить, но на самом деле я нашел решение для этого: если у вас нет подключенных наушников или какого-либо источника аудиосигнала, AVPlayer не будет работать, и он напечатает:
ERROR: >aqsrv> 65: Exception caught in (null) - error -66634