我一直在努力学习AVSpeechSynthesis。该代码在iOS模拟器(iPad和iOS)上运行良好,但文本到语音功能在我的iPad上根本不起作用。这是我的代码。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//Load Model
self.string = @"Hello World";
self.utterance = [[AVSpeechUtterance alloc] initWithString:self.string];
self.utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
self.utterance.rate = (float) 0.25;
//Load UI
self.textLabel.text = self.string;
}
- (IBAction)startSpeaking:(id)sender {
self.speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
if ([self.speechSynthesizer isSpeaking]) {
[self.speechSynthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryWord];
} else {
[self.speechSynthesizer speakUtterance:self.utterance];
}
}
更新:AVSpeechSyntheSizer工作但没有声音 所以我有一个UILabel与UI上的AVSpeechUtterance相同的文本。我实现了AVSpeechSynthesizerDelegate,这样当我点击startSpeaking时:文本标签将当前单词变为红色。所以我知道AVSpeechSynthesizer必须正常工作,因为它正在进行代理电话,但我无法弄清楚为什么我听不到它。音量上升,没有其他应用播放音频。
答案 0 :(得分:7)
手机是否处于静音模式?这也使合成器静音。
答案 1 :(得分:2)
由于手机的Mute
模式,它无效。要在iOS 7中启用“静音”,您必须执行以下步骤:
Setting
选项Accessibility
AssistiveTouch
AssistiveTouch
选项
Device
并触摸Un mute
选项。现在运行该项目并希望它能够正常工作。
P.S:(在iOS 8.0中,此代码不起作用,因为对于一个意外的错误,从iOS8.1中删除它并且它现在可以正常工作) 希望它有效。 :)