19

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

これらのエラーを修正する方法を知っている人はいますか?

4

4 に答える 4

9

最小限の調整でシミュレーターで動作するように上記のコードを取得しました。

  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 Speech[5550:3a03] 11:37:56.454 エラー: AVAudioSessionUtilities.h:88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') がエラーで失敗しました: '?ytp'

  2. Xcode 5#import <AVFoundation/AVFoundation.h>では、この SpeechSynthesis コードを使用して従来のコードを操作しようとすると、非常に時間がかかるように見えますが、新しい@import AVFoundation;.

于 2013-09-21T18:40:45.237 に答える
2

シミュレーターでもまったく同じエラー ログが表示されますが、他の場所で指摘されているように、シミュレーターまたは 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 を使用していませんが、それが違いを生むとは思いません。(開発者フォーラムにも投稿されています)

于 2013-10-04T02:40:59.960 に答える
0

信じられませんが、実際にこれに対する解決策を見つけました。ヘッドホンが接続されていないか、オーディオ出力ソースがない場合、AVPlayer は機能せず、出力されます。

ERROR:     >aqsrv> 65: Exception caught in (null) - error -66634
于 2015-08-11T13:44:41.860 に答える