LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-10-04

テキスト読み上げ

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】を学んでみた

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0