AVSpeechSynthesizer 文本转声音

AVSpeechSynthesizer 文本转声音_第1张图片
overview.png

AVSpeechSynthesizer可以在iOS设备上讲文本内容转化为声音,并提供了一系列方法可以控制正在播放的语音内容。先看代码:

        //初始化一个合成器
        let sythesizer = AVSpeechSynthesizer()
        //初始化需要转换的文本
        let utterrance = AVSpeechUtterance.init(string: "这是一段内容,请不要静音,因为等会你会听到这段文字的声音。");
        //设置朗读速率,这里设为默认的
        utterrance.rate = AVSpeechUtteranceDefaultSpeechRate
        //设置朗读语言
        utterrance.voice = AVSpeechSynthesisVoice.init(language: "zh-cn")
        //设置朗读的音量
        utterrance.volume = 0.8
        //开始朗读
        sythesizer.speak(utterrance);

编译以上代码,我们就会听到了。(是不是和Siri女声一样的)
如果在朗读过程中我要暂停或者取消需要怎么做,AVSpeechSynthesizer提供了这些方法。
暂停:synthesizer.pauseSpeaking(at boundary: AVSpeechBoundary)
取消:synthesizer.stopSpeaking(at boundary: AVSpeechBoundary)
继续:synthesizer.continueSpeaking()
其中调用stopSpeaking会interrupt current speech and clear the queue.
当我们调用这些方法时,在遵循了代理的情况下,会触发AVSpeechSynthesizerDelegate中的方法:

 @available(iOS 7.0, *)
    optional public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance)

    @available(iOS 7.0, *)
    optional public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance)

    @available(iOS 7.0, *)
    optional public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didPause utterance: AVSpeechUtterance)

    @available(iOS 7.0, *)
    optional public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didContinue utterance: AVSpeechUtterance)

    @available(iOS 7.0, *)
    optional public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didCancel utterance: AVSpeechUtterance)
    @available(iOS 7.0, *)
    optional public func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance)

AVSpeechSynthesizerDelegate提供了朗读开始,结束,暂停,继续,取消,以及朗读进度的回调方法,如果我们需要在朗读过程中进行一些处理我们可以在func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance)代理方法中进行操作。

至此,我们就掌握了AVSpeechSynthesizer文本转声音这些基本功能了。

你可能感兴趣的:(AVSpeechSynthesizer 文本转声音)