let synthesizer = AVSpeechSynthesizer()
utterance는 말, 발화라는 의미이다. 말이 출력되는 것을 확인할 수 있다.
let utterance = AVSpeechUtterance(string: "안녕하세요")
synthesizer.speak(utterance)
AVAudioSession의 싱글톤 객체로 접근해 세팅할 수 있다.
mixWithOthers 옵션은 다른 오디오와 혼합되어도 좋을 때, duckOthers 옵션은 다른 오디오를 피하고 싶을 때 사용한다.
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
didStart는 의미 그대로, 발화 직후에 호출된다.
synthesizer.delegate = self
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance) {
print("시작")
}
willSpeakRangeOfSpeechStringcharacterRange는 어떤 말을 할 껀지 발화 직전에 호출된다. 언제 쓰일까 궁금했는데, 영상의 demo를 이해했다.
영어 문장에서, 현재 말하고 있는 단어에 밑줄을 실시간으로 표시할 때 사용하였다.
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance) {
guard let rangeInString = Range(characterRange, in: utterance.speechString) else { return }
print("Will speak: \(utterance.speechString[rangeInString])")
}