zoukankan      html  css  js  c++  java
  • 高德语音导航SpeechSynthesizer

    SpeechSynthesizer.swift   -- >类名

     

    import Foundation     ->> 依赖库头文件

    import AVFoundation  ->> 依赖库头文件

     

    final class SpeechSynthesizer: NSObject, AVSpeechSynthesizerDelegate {

        public static let Shared = SpeechSynthesizer()

        

        private var speechSynthesizer: AVSpeechSynthesizer!

        

        private override init(){

            super.init()

            

            buildSpeechSynthesizer()

        }

        

        public func speak(_ aString: String) {

            

            let aUtterance = AVSpeechUtterance(string: aString)

            aUtterance.voice = AVSpeechSynthesisVoice(language: "zh-CN")

            

            //iOS语音合成在iOS8及以下版本系统上语速异常

            let sysVer = (UIDevice.current.systemVersion as NSString).doubleValue

            aUtterance.rate = 0.53;

            if sysVer < 8.0 {

                aUtterance.rate = 0.25//iOS7设置为0.25

            }

            else if sysVer < 9.0 {

                aUtterance.rate = 0.15//iOS8设置为0.15

            }

            if speechSynthesizer.isSpeaking {

                speechSynthesizer.stopSpeaking(at: .word)

            }

            speechSynthesizer.speak(aUtterance)

        }

        

        public func isSpeaking() -> Bool {

            return speechSynthesizer.isSpeaking

        }

        

        public func stopSpeak() {

            speechSynthesizer.stopSpeaking(at: .immediate)

        }

        

        private func buildSpeechSynthesizer() {

     

            do {

    //            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)

                try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)

            } catch {

                print(error.localizedDescription)

            }

            

            speechSynthesizer = AVSpeechSynthesizer()

            speechSynthesizer.delegate = self

        }

        func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {

            do {

                try AVAudioSession.sharedInstance().setActive(false)

            } catch {

                print(error.localizedDescription)

            }

        }

    }

  • 相关阅读:
    推流当中自适应码率的策略
    使用python实现人脸检测<转载>
    acm.njupt 1001-1026 简单题
    fedora 系统安装后常用设置
    一个普普通通的计算机研究生找工作的感悟
    一个简单的爬虫程序
    HDU 1005 Number Sequence
    【StatLearn】统计学习中knn算法的实验(1)
    SQL描述(2)
    连续点击返回键,退出应用程序
  • 原文地址:https://www.cnblogs.com/supersr/p/13677684.html
Copyright © 2011-2022 走看看