swiftでAVSpeechSynthesizerを使ってテキストを読み上げるアプリを作成しています
以下の.swiftファイルを作成して、コントローラーから呼び出して再生しているのですが
再生するコントローラーと停止するコントローラーが違う場合に停止(synthesizer.stopSpeaking(at: .immediate)をしても)が出来なくなる現象が起こります
どのようにするれば読み上げを停止できるかご存知の方がいれば教えて戴きたいです
import UIKit import AVFoundation class SpeechService: NSObject, AVSpeechSynthesizerDelegate { var synthesizer = AVSpeechSynthesizer() // 再生速度を設定 var rate: Float = AVSpeechUtteranceDefaultSpeechRate // 言語を英語に設定 var voice = AVSpeechSynthesisVoice(language: "ja-JP") override init() { super.init() // delegateの設定 synthesizer.delegate = self } func playSpeech(_ text: String) { let utterance = AVSpeechUtterance(string: text) utterance.rate = rate utterance.voice = voice synthesizer.speak(utterance) } // 音声再生停止 func stopSpeech() { synthesizer.stopSpeaking(at: .immediate) } コード
呼び出し方がわからないのでなんとも言えませんが、`再生するコントローラーと停止するコントローラーが違う場合に停止が出来なくなる`とのことですが、単純に考えると、syntesizerインスタンスが異なるからなのでは?
回答1件
あなたの回答
tips
プレビュー