【问题标题】:AVSpeechUtterance maximum volume really quiet and rate really fastAVSpeechUtterance 最大音量非常安静,速度非常快
【发布时间】:2013-12-26 00:06:56
【问题描述】:

我正在尝试向我的应用程序添加语音提示,并在 iOS 7 中测试 AVSpeechUtterance,但默认语速非常快。最低语速更容易理解。但是最大音量值 1 太安静了!我在我的 iPhone 4 上测试了它,音量一直调高。一定有问题,否则这将如何使用。

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
            NSString *mystring = [NSString stringWithFormat:@"Talk String Here %@",myObject.name];
            AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:mystring];
            [utterance setRate:AVSpeechUtteranceMinimumSpeechRate];
            [utterance setVolume:1];
            [synthesizer speakUtterance:utterance];

【问题讨论】:

  • 您找到解决方案了吗?我遇到了同样的问题,就是音量。
  • 不,我没有,但我也没有一直在努力。似乎没有好的解决方案。
  • 我在下面发布了对我有用的内容 (stackoverflow.com/a/28922543/2578205)。也许这会有所帮助?
  • @Glavin001 您是否找到有关音量的任何解决方案?我被困在这里非常糟糕。没有找到任何灵魂

标签: ios ios7 text-to-speech


【解决方案1】:

这对我有用(Swift 3.0)

let audioSession = AVAudioSession.sharedInstance()  
do {
  try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: AVAudioSessionCategoryOptions.defaultToSpeaker)  
} catch {   
  print("audioSession properties weren't set because of an error.")   
}

【讨论】:

    【解决方案2】:

    @tmr 的帖子here 为我解决了这个问题:

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord  
                           withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker
                                           error:nil];
    

    【讨论】:

    • 你为我节省了很多时间!!谢谢!
    • 它对我有用,但是当我将耳机连接到 iPhone 时,耳机只有一侧有声音,另一侧没有声音。有什么线索吗?
    【解决方案3】:

    对于 Swift 5,你可以试试这个(在合成器初始化之前添加):

            let audioSession = AVAudioSession.sharedInstance()
            try? audioSession.setCategory(AVAudioSession.Category.playAndRecord, mode: AVAudioSession.Mode.default, options: AVAudioSession.CategoryOptions.defaultToSpeaker)
            try? audioSession.setMode(AVAudioSession.Mode.spokenAudio)
    

    【讨论】:

      【解决方案4】:

      iOS 8 与 iOS 9 不同:

      AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:utteranceString];
      if([iOSVersionDetector isiOS9OrHigher])
          utterance.rate = AVSpeechUtteranceDefaultSpeechRate;
      else
          utterance.rate = 0.1f;
      

      【讨论】:

        【解决方案5】:

        对于 Swift 3 做(修复音量问题)

        let audioSession = AVAudioSession.sharedInstance()
        try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: AVAudioSessionCategoryOptions.defaultToSpeaker)
        

        【讨论】:

          【解决方案6】:

          我的问题已解决,将模式设置为 AVAudioSessionModeDefaultAVAudioSessionModeSpokenAudio

          let audioSession = AVAudioSession.sharedInstance()
          try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .defaultToSpeaker)
          try audioSession.setMode(AVAudioSessionModeSpokenAudio)
          

          【讨论】:

            【解决方案7】:

            速率只是一个浮点值,为方便起见提供了常量。 尝试使用 [utterance setRate:AVSpeechUtteranceMaximumSpeechRate*.25];

            【讨论】:

            • rate 已经是一个浮点值,范围为 0.0 到 1.0,AVSpeechUtteranceMinimumSpeechRate = 0.0 和 AVSpeechUtteranceMaximumSpeechRate = 1.0。因为AVSpeechUtteranceMinimumSpeechRate 是 0.0,所以乘以任何数字又是 0.0。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-01
            • 2012-03-07
            • 2022-01-02
            • 2013-05-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多