2013-09-21 10 views
19

gram około z AVSpeechSynthesizer i zawsze się tych błędów:AVSpeechSynthesizer błąd AudioSession

ERROR:  >aqsrv> 65: Exception caught in (null) - error -66634 
ERROR:  AVAudioSessionUtilities.h:88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') failed with error: '?ytp' 

mojego kodu jest:

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]; 

Czy ktoś wie jak to naprawić te błędy?

+0

Widzę to tylko w Symulatorach iOS - nie na urządzeniu. Czy widzisz to samo? –

+2

Jestem również ciekawy, czy jest to wyjątek tylko symulator. Miałem inne wyjątki przy użyciu AVFoundation w symulatorze. – bollhav

+0

O tak, prawda, to samo tutaj! – h345k34cr

Odpowiedz

9

Mam powyższy kod do pracy na symulatorze z minimalnymi poprawkami.

  1. [[self text] text] kawałek kodu może być źle (co jest gdzie błąd Exception caught in (null) będzie pochodzić z). Poniższy kod pracował dla mnie.

    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]; 
    

    A kiedy mówię "pracował", mam na myśli słyszałem głos wypowiadający moje zdanie testowe w moim symulatorze.

    zrobiłem jeszcze zobaczyć to ostrzeżenie:

    2013-09-21 11:37:56.454 Speech[5550:3a03] 11:37:56.454 ERROR: AVAudioSessionUtilities.h:88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') failed with error: '?ytp'

  2. Xcode 5 wydaje się mieć kawał wolnym czasie stara się pracować z tradycyjnym #import <AVFoundation/AVFoundation.h> z tym kodem SpeechSynthesis, wszystko wydawało się przyspieszyć trochę podczas korzystania z nowego @import AVFoundation;.

+0

Mój głos przemówił już. Właśnie zastanawiałem się, dlaczego dostaję ten błąd (s). Czy "@import AVFoundation" działa dla ciebie? Wciąż dostaję tego błędu. – h345k34cr

+0

dodaj średnik po "' @import AVFoundation; '" i powinieneś być w porządku. –

+0

Niestety, nadal otrzymuję komunikat "BŁĄD: AVAudioSessionUtilities.h: 88: GetProperty_DefaultToZero: AudioSessionGetProperty (" disa ") nie powiodło się z powodu błędu: '? Ytp'' – h345k34cr

2

Otrzymuję dokładnie ten sam dziennik błędów w Symulatorze, ale nie mam problemu z kodem w Symulatorze lub urządzeniu iPhone 5, jak wskazano w innym miejscu. Różnica może polegać na tym, że nie używam żadnego z tych 6 opcjonalnych AVSpeechSythesizerDelegates, w związku z czym nie uwzględniłem tego w protokole mojej klasy. W związku z tym, aby pomóc w śledzeniu błędu, można go wypróbować bez. Tu jest mój kodu testu, który jest logicznie takie same, minus delegat i dowolny podział przechowywania 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]; 
} 

Jak widać, nie używam ARC, ale nie sądzę, że sprawia, że różnica. (Zamieszczone również na forum programistów)

+0

Cóż, mój kod też działa dobrze. ale te dzienniki błędów są denerwujące sprawia, że ​​myślę, że coś jest nie tak. – h345k34cr

4

Te błędy widzę też (używając ARC, ale nie gwintowanych), ale tylko na symulatorze, a nie na prawdziwym urządzeniu.

Pracuję przy założeniu, że są ograniczeniem symulatora i można je bezpiecznie zignorować - wszystko inne działa dobrze.

Ali

0

Nie mogę w to uwierzyć, ale w rzeczywistości okazało się, że rozwiązanie tego problemu: jeśli nie masz podłączone słuchawki lub dowolnego źródła dźwięku wyjściowego, AVPlayer nie będzie działać i będzie ona drukować:

ERROR:  >aqsrv> 65: Exception caught in (null) - error -66634 
Powiązane problemy