AVFoundation(一)-文字转换语音播放

首先初始化项目,并声明下面两个属性

AVSpeechSynthesizer的示例用于执行具体的文本到语音的会话。对于多个AVSpeechUterance实例,也可以起到队列的作用,进行顺序播放

1
2
3
4
let synthesizer:AVSpeechSynthesizer = AVSpeechSynthesizer()
let speechString:Array<String> = ["语音转换",
"你好","测试"]

之后再touchBegin 方法中加入如下代码。初始化AVSpeechUtterance的实例,并加入到播放会话 AVSpeechSynthesizer 中,即可实现文字转语音播放

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
speechString.forEach { (str) in
let utterance = AVSpeechUtterance(string: str)
utterance.voice = AVSpeechSynthesisVoice(language: "zh-cn")
utterance.rate = 0.4
utterance.pitchMultiplier = 0.8
utterance.postUtteranceDelay = 0.1
self.synthesizer.speak(utterance)
}
}

voice: AVSpeechSynthesisVoice 语音播放的语言

1
2
3
AVSpeechSynthesisVoice(language: "zh-cn")
AVSpeechSynthesisVoice(language: "en-US")
AVSpeechSynthesisVoice(language: "en-GB")

rate: 播放速率,系统默认提供三个常量,AVSpeechUtteranceMinimumSpeechRate、AVSpeechUtteranceMaximumSpeechRate、AVSpeechUtteranceDefaultSpeechRate。默认不修改的情况下为 default,其值为0.5。修改数值应保证在AVSpeechUtteranceMinimumSpeechRate和AVSpeechUtteranceMaximumSpeechRate之间即(0.0–1.0)

pitchMultiplier: 可以改变语句播放的音调,取值为0.5(地音调)-2.0(高音调),默认为1.0

postUtteranceDelay: 两条语句之间的播放延迟。调整播放间隔’

demo地址