AVSpeechSynthesizer可在模拟器上运行,但不在设备上运行

时间:2014-06-07 03:45:56

标签: objective-c ios7 avspeechsynthesizer

我一直在努力学习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必须正常工作,因为它正在进行代理电话,但我无法弄清楚为什么我听不到它。音量上升,没有其他应用播放音频。

2 个答案:

答案 0 :(得分:7)

手机是否处于静音模式?这也使合成器静音。

答案 1 :(得分:2)

由于手机的Mute模式,它无效。要在iOS 7中启用“静音”,您必须执行以下步骤:

  • 转到Setting选项
  • 转到Accessibility
  • 转到AssistiveTouch
  • 从开关按钮
  • 打开AssistiveTouch选项
  • 然后移动辅助图标将出现在您的设备屏幕上。
  • 触摸它以展开更多选项
  • 从那里选择Device并触摸Un mute选项。

现在运行该项目并希望它能够正常工作。

P.S:(在iOS 8.0中,此代码不起作用,因为对于一个意外的错误,从iOS8.1中删除它并且它现在可以正常工作) 希望它有效。 :)