上代碼
import UIKit
import AVFoundation
class ViewController: UIViewController {
fileprivate let synthesizer = AVSpeechSynthesizer()
override func viewDidLoad() {
super.viewDidLoad()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let utterance = AVSpeechUtterance(string: "語(yǔ)音轉(zhuǎn)文字")
utterance.pitchMultiplier = 1
// 音量
utterance.volume = 1
// 語(yǔ)速
utterance.rate = 0.5
// 播放使用的語(yǔ)言, 這里用中文
let language = AVSpeechSynthesisVoice(language: "zh")
utterance.voice = language
synthesizer.speak(utterance)
synthesizer.delegate = self
/// 以下為常用操作
// let isSpeaking = synthesizer.isSpeaking // 正在播放
// let isPaused = synthesizer.isPaused // 已經(jīng)暫停
// synthesizer.stopSpeaking(at: .immediate) // 立刻停止播放
// synthesizer.stopSpeaking(at: .word) // 播放完最后一個(gè)單詞后停止播放
// synthesizer.pauseSpeaking(at: .immediate) // 立刻暫停播放
// synthesizer.pauseSpeaking(at: .word) // 播放完最后一個(gè)單詞后暫停播放
// synthesizer.continueSpeaking() // 繼續(xù)播放
}
}
extension ViewController: AVSpeechSynthesizerDelegate {
// 已經(jīng)暫停
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didPause utterance: AVSpeechUtterance) {
}
// 已經(jīng)開(kāi)始
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance) {
}
// 已經(jīng)取消
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didCancel utterance: AVSpeechUtterance) {
}
// 已經(jīng)播放完成
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {
}
// 已經(jīng)開(kāi)始繼續(xù)播放
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didContinue utterance: AVSpeechUtterance) {
}
// 即將開(kāi)始播放
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeak marker: AVSpeechSynthesisMarker, utterance: AVSpeechUtterance) {
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance) {
}
}