
136
|
第
4
章
当代码运行时,
for
循环创建了许多
dispatch
去设定
AVAudioPlayer
的音量,每个
dispatch
都会让音量变小一点。这将导致用户听到的声音音量会逐渐变小,最终得
到了一个声音淡出的效果!
4.5
合成语音
问题
如何让
App
学会说话?
解决方案
首先,在代码中导入
AVFoundation
(参考
4.1
节的问题)。
然后创建一个
AVSpeechSynthesizer
对象:
var speechSynthesizer = AVSpeechSynthesizer()
想要让某段文本被合成,我们需要用到
AVSpeechUtterance
对象:
let utterance = AVSpeechUtterance(string: textToSpeak)
然后将
utterance
传递给
AVSpeechSynthesizer
对象:
self.speechSynthesizer.speak (utterance)
讨论
AVSpeechSynthesizer
、
Siri
个人助手以及
Voice Over
使用的是相同的语音。从
iPhone4S
开始,所有的
iOS
设备都内置了
Siri
。
我们可以向一个
AVSpeechSynthesizer
一次性发送多个
AVSpeechUtterance
。如果
在调用
speakUtterance
的时候合成器正在发声,则合成器会等当前的
utterance
念
完之后才会说下一句。