iOSで音声読み上げをする時のコード。
import AVFoundation
class SpeechViewController: UIViewController {
private let synthesizer = AVSpeechSynthesizer()
private func speech(_ text: String) {
// 初回のみ0.1~2秒遅れて読み上げられる
let utterance = AVSpeechUtterance(string: text)
synthesizer.speak(utterance)
}
ただこれだと初回の読み上げのみ0.1~2秒遅れて読み上げられる。
2回目以降は遅延なく読み上げられる。
なのでviewDidLoad
で空文字を1回読んでおく。
import AVFoundation
class SpeechViewController: UIViewController {
private let synthesizer = AVSpeechSynthesizer()
override func viewDidLoad() {
super.viewDidLoad()
// 空文字を読んでおく
let utterance = AVSpeechUtterance(string: "")
utterance.volume = 0
synthesizer.speak(utterance)
}
private func speech(_ text: String) {
// 遅延なく読み上げられる
let utterance = AVSpeechUtterance(string: text)
synthesizer.speak(utterance)
}