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)

            }

        }

    }

  • 相关阅读:
    第十六天-面向对象02-成员
    第十五天-面向对象01
    第十四天-内置函数
    第十三天-生成器
    第十二天-函数名 迭代器
    第十一天-函数进阶
    第十天-初识函数
    第九天- 文件操作 r w a 文件复制/修改
    objectives-c基本语法。
    今天开始了objective-c的学习!
  • 原文地址:https://www.cnblogs.com/supersr/p/13677684.html
Copyright © 2011-2022 走看看