美文网首页
AV Foundation ⑤ 语音合成(AVSpeechSyn

AV Foundation ⑤ 语音合成(AVSpeechSyn

作者: _涼城 | 来源:发表于2022-06-01 14:11 被阅读0次

    语音合成

        在 iOS 中可以使用 AV Foundation提供的 AVSpeechSynthesizer 实现文本转语音(语音合成)功能,这个类用来播放一个或多个语言内容,这些语音内容都是 AVSpeechUtterance 的类的实例。

    AVSpeechSynthesizer

        AVSpeechSynthesizer 主要负责从文本话语中生成合成语音并能够监视或控制正在进行的语音的对象。

        要说出一些文本,可以创建一个包含文本的 AVSpeechUtterance 实例并将其传递给 AVSpeechSynthesizer 实例,通过 speakUtterance: 进行播放。AVSpeechSynthesizer 会维护一个队列,如果当前没有任务执行就会立刻开始合成,如果当前正在执行合成任务,则会将其添加到队列中,并按照接收到的顺序合成它们。

        语音开始后,您可以使用AVSpeechSynthesizer 实例来暂停或停止语音。暂停后,可以从暂停点恢复语音或完全停止语音并删除队列中所有剩余的话语。可以通过 speakingpaused 检查当前的状态,通过 id <AVSpeechSynthesizerDelegate> delegate 接收合成过程中的事件节点。

    AVSpeechUtterance

        AVSpeechUtterance 封装用于语音合成的文本和影响语音的参数的对象:

    • rate 速率
    • pitchMultiplier 音调
    • volume 音量
    • postUtteranceDelay 播放下一句时间隔时间

    AVSpeechSynthesisVoice

        在语音合成中区分语音的主要因素是语言区域设置质量。创建一个AVSpeechSynthesisVoice 实例以选择适合文本和语言的语音,并将其设置为 AVSpeechUtterance实例上的 voice属性值。

    实现

    AVSpeechSynthesizer *speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
    AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:@"Hello world!"];
    //速率
    utterance.rate = 0.4f;
    //声调
    utterance.pitchMultiplier = 0.8f;
    //音量
    utterance.volume = 1.0f;
    utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
    utterance.postUtteranceDelay = 0.1f;
    [speechSynthesizer speakUtterance:utterance];
    

    相关文章

      网友评论

          本文标题:AV Foundation ⑤ 语音合成(AVSpeechSyn

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