テキスト読み上げ
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】を学んでみた