一、简介
将文本字符通过语音播放出来,实现文字转语音的功能。
二、开始播放
1. 创建播放实例
导入AVFoundation库
import AVFoundation
添加实例
// 语音实例
private let syntesizer = AVSpeechSynthesizer()
private var utterance = AVSpeechUtterance()
2. 开始播放
private func play(_ text: String) {
// 设置将要语音的文字
utterance = AVSpeechUtterance(string: text)
// 设置语言, 这里是中文
utterance.voice = .init(language: "zh_CN")
// 语言的速度
utterance.rate = 0.4
// 开始播放
syntesizer.speak(utterance)
}
3. 暂停
// 暂停播放
private func pausePaly() {
syntesizer.pauseSpeaking(at: .immediate)
}
4. 继续播放
// 继续播放
private func continuePlay() {
syntesizer.continueSpeaking()
}
3. 停止播放
// 停止播放
private func stopPlay() {
syntesizer.stopSpeaking(at: .immediate)
}
三、简单代理
可以通过代理监听播放状态
1. 代理设置
syntesizer.delegate = self
2. 代理方法
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance) {
print("开始")
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didPause utterance: AVSpeechUtterance) {
print("暂停")
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didContinue utterance: AVSpeechUtterance) {
print("继续")
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {
print("完成")
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didCancel utterance: AVSpeechUtterance) {
print("停止")
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance) {
print("阅读过程中")
}