AVSpeechSynthesizer 文本轉聲音

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)
繼續(xù):synthesizer.continueSpeaking()
其中調用stopSpeaking會interrupt current speech and clear the queue.
當我們調用這些方法時,在遵循了代理的情況下,會觸發(fā)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提供了朗讀開始,結束,暫停,繼續(xù),取消,以及朗讀進度的回調方法,如果我們需要在朗讀過程中進行一些處理我們可以在func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance)代理方法中進行操作。

至此,我們就掌握了AVSpeechSynthesizer文本轉聲音這些基本功能了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容