高德语音导航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)
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律