Xcode
iOS
Swift
Application

textfieldやtextviewなどに書かれたテキスト(文字)を読み上げる

More than 1 year has passed since last update.

テキスト読み上げ

textfield textviewなどに書かれた文字を読み上げます
AVSpeechSynthesizerクラスを使えば結構簡単

翻訳アプリだったのでtextfieldの名前がダサいけど

import UIKit
import AVFoundation //読み上げ用フレームワーク

class yakuViewController: UITabBarController,AVSpeechSynthesizerDelegate{

    //Delegateを設定する事により、読み上げの開始/終了のタイミング/読み上げ中の言葉を取得する事が可能に

    //textfieldでも可
    @IBOutlet weak var originSentence: UITextView!
    @IBOutlet weak var yakuSentence: UITextView!

    //SpeechSynthesizerクラス
    var talker = AVSpeechSynthesizer()

    //読み上げ用
    override func viewDidLoad() {
        super.viewDidLoad()

        //Delegate設定した時のみ以下を書く
        self.talker.delegate = self

    }

    //tapToRead(button)で読み上げ
    @IBAction func tspToRead(_ sender: UIButton) {

        var talker = AVSpeechSynthesizer()

        let utterance = AVSpeechUtterance(string:self.yakuSentence.text!)
        utterance.voice = AVSpeechSynthesisVoice(language: "en-US") //英語を読みます
        //日本語の場合は"ja-JP"

    // 話す速度を設定(0.0〜1.0)
        utterance.rate = 0.5

    // 声の高さを設定(0.5〜2.0)
        utterance.pitchMultiplier = 1.0

        //読み上げ
        self.talker.speak(utterance)


        }

        //読み上げ開始
    func speechSynthesizer(synthesizer: AVSpeechSynthesizer!, didStartSpeechUtterance utterance: AVSpeechUtterance!)
    {
        print("開始")
    }

    //終了
    func speechSynthesizer(synthesizer: AVSpeechSynthesizer!, didFinishSpeechUtterance utterance: AVSpeechUtterance!)
    {
        print("終了")
    }

    //読み上げ中の言葉を取得
    func speechSynthesizer(synthesizer: AVSpeechSynthesizer!, willSpeakRangeOfSpeechString characterRange: NSRange, utterance: AVSpeechUtterance!)
    {
        let word = (utterance.speechString as NSString).substring(with: characterRange)
        print("Speech: \(word)")
    }

また何かあれば追加していきます

ブログも書いてるので良かったら見てください(swift関係ない話多いけど)
フィリピン・セブ島でプログラミング言語【Swift】を学んでみた