美文网首页
AVSpeechSynthesizer:文本到语音

AVSpeechSynthesizer:文本到语音

作者: d9541e04136b | 来源:发表于2016-03-30 18:48 被阅读1679次

    原文首发:http://coderzhang.xyz

    AV Foundation中提供了一个AVSpeechSynthesizer类来向app中添加朗诵文本的功能.
    这个类用来播放一个或者多个语音内容,每条语音内容都是一个AVSpeechUtterance对象.
    (快速记忆:一个语音合成器(SpeechSynthesizer)播放需要一段语音内容(SpeechUtterance))

    春天到了,让代码为我们读几句春天的诗句.

    1. 定义一个包含诗句的数组,

      self.verses = @[
      @"最是一年春好处,绝胜烟柳满皇都",
      @"陌上花开,可缓缓归矣",
      @"沾衣欲湿杏花雨,吹面不寒杨柳风",
      @"竹外桃花三两枝,春江水暖鸭先知",
      @"几处早莺争暖树,谁家新燕啄春泥",
      @"乱花渐欲迷人眼,浅草才能没马蹄"
      ];

    2. 初始化一个AVSpeechSynthesizer对象,

       self.synthesizer = [[AVSpeechSynthesizer alloc]init];
      
    3. 给每句诗生成一个对应的AVSpeechUtterance对象,并传递给self.synthesizer进行播放,

       for (int i = 0; i < self.verses.count; i++) {
           AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:self.verses[i]];
           utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];
           utterance.rate = 0.4;
           utterance.pitchMultiplier = 0.8;
           utterance.postUtteranceDelay = 0.1;
           [self.synthesizer speakUtterance:utterance];
      

      }

    (1) voice属性指定了要朗诵的语言类型,中文or英文or其他,下文会给出一个支持的语言列表,

    (2) rate属性指定播放语音时的速率,最小值和最大值分别是AVSpeechUtteranceMinimumSpeechRate和AVSpeechUtteranceMaximumSpeechRate,

    (3) pitchMultiplier属性设置声调,属性值介于0.5(低音调)~2.0(高音调)之间,

    (4) postUtteranceDelay告诉synthesizer本句朗读结束后要延迟多少秒再接着朗读下一秒,对应的属性还有preUtteranceDelay

    此外,AVSpeechSynthesizerDelegate中还提供了一些监听朗读状态的方法.

    swift语言的AVSpeechSynthesizer介绍请戳这里: swift版介绍传送门

    支持的语言列表:

    • Arabic (ar-SA)
    • Chinese (zh-CN, zh-HK, zh-TW)
    • Czech (cs-CZ)
    • Danish (da-DK)
    • Dutch (nl-BE, nl-NL)
    • English (en-AU, en-GB, en-IE, en-US, en-ZA)
    • Finnish (fi-FI)
    • French (fr-CA, fr-FR)
    • German (de-DE)
    • Greek (el-GR)
    • Hebrew (he-IL)
    • Hindi (hi-IN)
    • Hungarian (hu-HU)
    • Indonesian (id-ID)
    • Italian (it-IT)
    • Japanese (ja-JP)
    • Korean (ko-KR)
    • Norwegian (no-NO)
    • Polish (pl-PL)
    • Portuguese (pt-BR, pt-PT)
    • Romanian (ro-RO)
    • Russian (ru-RU)
    • Slovak (sk-SK)
    • Spanish (es-ES, es-MX)
    • Swedish (sv-SE)
    • Thai (th-TH)
    • Turkish (tr-TR)

    相关文章

      网友评论

          本文标题:AVSpeechSynthesizer:文本到语音

          本文链接:https://www.haomeiwen.com/subject/xacelttx.html