【Swift3】【AVSpeechSynthesizer】テキストトゥスピーチってあったよね。

昔MacでTextToSpeechってあったよねー。
懐かしい。

それはさておき、iPhoneでテキストを読ませたいと思います。

参考サイト
AVSpeechSynthesizer – AVFoundation | Apple Developer Documentation
[Swift] iOS でテキストの読み上げをする – Qiita
みんな大好き`AVSpeechSynthsizer`について – Qiita
AVSpeechSynthesizer による音声読み上げ
[Swift] AVSpeechSynthesizerで読み上げ機能を使ってみる | Developers.IO

AVFoundationを使うのでインポート。
デリゲートを使うならAVSpeechSynthesizerDelegate。

import UIKit
import AVFoundation

class ViewController: UIViewController,AVSpeechSynthesizerDelegate {

(中略)

    func utter(str:String) {
    let speech = AVSpeechSynthesizer()
        let utterance = AVSpeechUtterance(string: str)//読み上げる文字
        utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")//読み上げの言語
        utterance.rate = 0.4 //読み上げの速度
        utterance.pitchMultiplier = 1.2 //声の高さ
        utterance.preUtteranceDelay = 0 //読み上げまでの待機時間
        utterance.postUtteranceDelay = 0 //読んだあとの待機時間
        speech.delegate = self

        speech.speak(utterance) //発話
        }
    
    // デリゲート
    // 読み上げ開始したときに呼ばれる
    internal func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance) {
        print("読み上げ開始")
    }
    
    // 読み上げ終了したときに呼ばれる
    internal func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {
        print("読み上げ終了")
    }
}

読み上げ実行中かどうか
speech.isSpeaking

途中で止める場合
speech.stopSpeaking(at: AVSpeechBoundary.immediate)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です