0
我在我的應用程序中使用AVSpeechSynthesizer for TTS。這些是我設置iOS 7 TTS的步驟。AVSpeechSynthesizer不暫停
-(void)viewDidLoad
{
speechPaused = NO;
[self playSound];
}
// The sound is playing fine.
-(void) playSound {
speechPaused = NO;
AVSpeechUtterance* utter = [[AVSpeechUtterance alloc] initWithString:_text];
utter.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
[utter setRate:0.2f];
if (!self.synthesizer) {
self.synthesizer = [AVSpeechSynthesizer new];
}
self.synthesizer.delegate = self;
[self.synthesizer speakUtterance:utter];
}
// This is what isn't working
- (void) pauseSpeech {
if (speechPaused == NO) {
[self.synthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
NSLog(@"Pause");
speechPaused = YES;
}
if (self.synthesizer.speaking == NO) {
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:@""];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"];
[self.synthesizer speakUtterance:utterance];
}
}
- (void) playSpeech {
[self.synthesizer continueSpeaking];
speechPaused = NO;
NSLog(@"Play");
}
- (IBAction)pauseSpeech:(id)sender {
[self pauseSpeech];
}
- (IBAction)startSpeech:(id)sender {
[self playSpeech];
}
我還設置了的NSLog這個方法,但它從來沒有被稱爲:
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didPauseSpeechUtterance:(AVSpeechUtterance *)utterance
{
NSLog(@"speechSynthesizer didPauseSpeechUtterance");
}
我一直停留在此的
#import <AVFoundation/AVFoundation.h>
@interface SpeakViewController : UIViewController <AVSpeechSynthesizerDelegate> {
BOOL speechPaused;
}
@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer;
@end
在我的.m
然後天。任何幫助表示讚賞。
是'pauseSpeech'方法曾經叫什麼名字? –