Swiftで文字列の読み上げをする

1 min read読了の目安(約700字

環境

  • Xcode 12.2
  • Swift 5.0

文字列を読み上げる

以下のクラスを作成します。

import AVFoundation

class Speecher {

  static let shared = SpeecheManager()

  private var speechSynthesizer: AVSpeechSynthesizer!

  func speeche(text: String) {
    // AVSpeechSynthesizerのインスタンス作成
    speechSynthesizer = AVSpeechSynthesizer()
    // 読み上げる、文字、言語などの設定
    let utterance = AVSpeechUtterance(string: text) // 読み上げる文字
    utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP") // 言語
    utterance.rate = 0.5 // 読み上げ速度
    utterance.pitchMultiplier = 1.0 // 読み上げる声のピッチ
    utterance.preUtteranceDelay = 0.2 // 読み上げるまでのため
    speechSynthesizer.speak(utterance)
  }
}

こんな感じでワンライナーで読み上げできます!

Speecher.shared.speeche(text: "hoge")