Подтвердить что ты не робот

Ошибка 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];

Кто-нибудь знает, как исправить эти ошибки?

4b9b3361

Ответ 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