2013-09-21 62 views
19

Tôi đang chơi xung quanh với AVSpeechSynthesizer và luôn nhận được các lỗi này:AVSpeechSynthesizer lỗi AudioSession

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

Mã của tôi là:

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

Có ai biết làm thế nào để sửa chữa các lỗi này?

+0

Tôi chỉ thấy điều này trong Trình mô phỏng iOS - không có trên thiết bị. Bạn có thấy giống nhau không? –

+2

Tôi cũng tò mò nếu đây chỉ là một ngoại lệ giả lập. Tôi đã có ngoại lệ khác bằng cách sử dụng AVFoundation trong trình mô phỏng. – bollhav

+0

Ồ vâng, đúng, cùng ở đây! – h345k34cr

Trả lời

9

Tôi đã nhận được mã ở trên để hoạt động trên trình mô phỏng với các chỉnh sửa tối thiểu.

  1. Bit [[self text] text] mã của bạn có thể là sai (đó là nơi mà các lỗi Exception caught in (null) sẽ đến từ). Mã dưới đây đã làm việc cho tôi.

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

    Và khi tôi nói "làm việc", tôi có nghĩa là tôi đã nghe thấy giọng nói phát ra câu kiểm tra của tôi trong trình mô phỏng của tôi.

    tôi vẫn thấy cảnh báo này:

    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 dường như có một heck của một thời gian chậm cố gắng để làm việc với các truyền thống #import <AVFoundation/AVFoundation.h> với mã SpeechSynthesis này, mọi thứ dường như để tăng tốc độ khá một chút khi sử dụng @import AVFoundation; mới.

+0

Giọng nói của tôi đã hoàn thành. Tôi chỉ tự hỏi tại sao tôi nhận được (các) lỗi này. '@portport AVFoundation' có hoạt động cho bạn không? Tôi vẫn gặp lỗi với điều đó. – h345k34cr

+0

thêm dấu chấm phẩy sau "' @import AVFoundation; '" và bạn sẽ không sao. –

+0

thật không may, tôi vẫn nhận được 'LRI: AVAudioSessionUtilities.h: 88: GetProperty_DefaultToZero: AudioSessionGetProperty ('disa') không thành công với lỗi: '? Ytp'' – h345k34cr

2

Tôi nhận được chính xác cùng nhật ký lỗi trong Trình mô phỏng nhưng tôi không gặp vấn đề với mã trong Trình mô phỏng hoặc trên thiết bị iPhone 5 như bạn đã chỉ ra ở nơi khác. Sự khác biệt có thể là tôi không sử dụng bất kỳ của 6 tùy chọn AVSpeechSythesizerDelegates và do đó, tôi đã không bao gồm nó trong giao thức lớp học của tôi. Do đó, để giúp theo dõi lỗi của bạn, bạn có thể thử nó mà không cần. Đây là mã thử nghiệm của tôi, đó là một cách logic giống như bạn, trừ các đại biểu và bất kỳ phân bổ lưu trữ 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]; 
} 

Như bạn thấy, tôi không sử dụng ARC nhưng tôi không nghĩ rằng làm cho Sự khác biệt. (Cũng được đăng trong Diễn đàn của Nhà phát triển)

+0

tốt, mã của tôi cũng hoạt động tốt. nhưng các bản ghi lỗi này gây phiền nhiễu khiến tôi nghĩ rằng có điều gì đó sai. – h345k34cr

4

Tôi cũng thấy các lỗi này (sử dụng ARC nhưng không được chỉ định luồng) nhưng chỉ trên trình mô phỏng, chứ không phải trên thiết bị thực.

Tôi đang làm việc trên giả định rằng chúng là giới hạn giả lập và có thể được bỏ qua một cách an toàn - mọi thứ khác có vẻ hoạt động tốt.

Ali

0

Tôi không thể tin điều đó, nhưng tôi thực sự tìm thấy giải pháp cho việc này: nếu bạn không có tai nghe cắm hoặc bất kỳ nguồn âm thanh đầu ra, AVPlayer sẽ không làm việc và nó sẽ in:

ERROR:  >aqsrv> 65: Exception caught in (null) - error -66634