AVSpeechSynthesizer でテキスト読み上げ

AVFoundation の AVSpeechSynthesizer クラスを使うと、テキスト(文字列)を音声で読み上げることができるのでメモ。

サンプル

最低限以下で読み上げができる。

import AVFoundation


// シンセサイザーを準備する
let synthesizer = AVSpeechSynthesizer()

// 発音を準備する
let utterance = AVSpeechUtterance.init(string: "サンプルテキスト")
let voice = AVSpeechSynthesisVoice.init(language: "ja-JP")
utterance.voice = voice


// 再生する
synthesizer.speak(utterance)


// 停止する
synthesizer.stopSpeaking(at: .immediate)  // 即時停止

// もし、ワード(単語)単位で停止させたい場合は以下
// synthesizer.stopSpeaking(at: .word) // 単語単位で停止

日本語以外、例えば英語を読み上げしたい場合は以下の様にする。

let utterance = AVSpeechUtterance.init(string: "Sample Text.")
let voice = AVSpeechSynthesisVoice.init(language: "ja-JP")
utterance.voice = voice

リポジトリ

テストしたコードは GitHub にある↓ github.com

おわり