美文网首页
AVSpeechSynthesizer 文本转声音

AVSpeechSynthesizer 文本转声音

作者: 狗娃_ | 来源:发表于2017-03-08 10:59 被阅读0次
    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 文本转声音

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