私はテキストビューでSpeechフレームワークの使用を簡素化しようとしています。私は、テキストビュー、スタートアップコードまたは他のアクションを入力することに基づいて、コードで音声認識プロセスを簡単に開始することができます。しかし、私はまた、ユーザーの手を触れることなく音声認識を終了したい。私は音声フレームワークでこれを行うための方法があることを示すために何かを見つけることができませんでした。私は、転写を止めるトリガーとなる言葉を定義し、転写から単語を取り除くことによって、それを達成する方法を作り出しました。それはうまくいきますが、もちろんその言葉を話すことはできません。このコンセプトを扱う良い方法はありますか? iOSの10、スウィフト3、Xcodeの8.2.1Swift3で認識を停止しないで停止
はここrecognitionTaskのコードの一部です:
private var bufferedString = String()
private var stopWord = "myStopWord"
recognitionRequest.shouldReportPartialResults = true
let startText = self.sayTextView.text
bufferedString = ""
recognitionTask = speechRecognizer?.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in
var finished = false
if let result = result {
self.bufferedString = startText! + result.bestTranscription.formattedString
self.sayTextView.text = self.bufferedString
finished = result.isFinal
}//if let result
//for testing
self.stopWord = "Relationship"
//for testing
if self.bufferedString.lowercased().contains(self.stopWord.lowercased()) {
print("buffered string contains \(self.stopWord)")
if let stopWordRange = self.bufferedString.lowercased().range(of: self.stopWord.lowercased()) {
self.bufferedString.replaceSubrange(stopWordRange, with: "")
self.sayTextView.text = self.bufferedString
}//if let
self.stopRecording(self)
}//if contains - look for stopWord
if error != nil || finished {
self.audioEngine.stop()
inputNode.removeTap(onBus: 0)
self.recognitionRequest = nil
self.recognitionTask = nil
self.startRecordingButton.isEnabled = true
}//if error
})//recognitionTask resultHandler
認識をいつ停止するかを定義する必要があります。開始直後に停止しますか?その後、それを始める感覚は何ですか?それとも、時間がたってもそれを止めたいのですか?タイムアウトが役立つはずです。 –
ユーザーが指定した単語を言うときに停止したい。上記のコードでは、ユーザーが "Relationship"と言うと、それは停止します。その後、関係はテキストから削除されます。私のコードがなければ、ユーザーは「カンマ」と言ってカンマを得ることができます。ユーザーは「疑問符」と言って疑問符をつけることができます。私はストップワードへの言及を見つけることができません。 – user2698617
NSTimerを試しましたか? – Devang