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)

            }

        }

    }

  • 相关阅读:
    获取本机IP,用户代理
    10 种机器学习算法的要点(附 Python)(转载)
    怎么查找执行比较慢的sql语句-DBA给的建议
    .net 调度器怎么实现心跳(socket除了他,没选择吧)
    分布式多计算机调度平台
    续【C# 以管理员方式启动Winform,进而使用管理员控制Windows Service】
    C# 以管理员方式启动Winform,进而使用管理员控制Windows Service
    SqlServer2008根据现有表,获取该表的分区创建脚本
    SqlServer常用命令
    创建分区表过程
  • 原文地址:https://www.cnblogs.com/supersr/p/13677684.html
Copyright © 2011-2022 走看看