我在我的应用程序中使用AVSpeechSynthesizer。这些是我设置iOS 7TTS的步骤。
#import <AVFoundation/AVFoundation.h>
@interface SpeakViewController : UIViewController <AVSpeechSynthesizerDelegate> {
BOOL speechPaused;
}
@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer;
@end然后在我的.m中:
-(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");
}我已经被困在这里好几天了。任何帮助都是非常感谢的。
发布于 2014-12-08 12:34:16
尝尝这个
-(void)pauseSpeechReading
{
if([synthesize isSpeaking]) {
NSLog(@"Reading paused");
[synthesize pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@""];
[synthesize speakUtterance:utterance];
[synthesize pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
}
}
-(void)resumeSpeechReading
{
NSLog(@"Reading resumed");
[synthesize continueSpeaking];
}https://stackoverflow.com/questions/24972604
复制相似问题