bragging-detector icon indicating copy to clipboard operation
bragging-detector copied to clipboard

音声認識の停止ボタンを追加する

Open yoidea opened this issue 4 years ago • 8 comments

yoidea avatar Jan 02 '21 18:01 yoidea

停止ボタンについて、実装しようとしたが、以下のことで一旦中止。 識者いれば助けてください。

  1. Android対応(仕様?で自動停止する)の兼ね合いで、フラグを増やす必要がある。
  2. SpeechRecognition APIのendメソッドを実行しても停止されない(仕様っぽい)。

rossy0213 avatar Jan 05 '21 14:01 rossy0213

これ参考になりませんか

https://developer.mozilla.org/ja/docs/Web/API/SpeechRecognition/stop

Web Speech API の stop() メソッドは音声認識のサービスを停止し、 入ってくる音声を聞かなくします。 後、今まで認識した音声を SpeechRecognitionResult として返します。

二重で結果入る(今まで認識した音)から停止時のデータは破棄しないとダメなのかな

taka1156 avatar Jan 13 '21 15:01 taka1156

一応同じページを参考しながら実装していたですが、上のコメント2に書いた通りの作動にしかならないんですよね...

rossy0213 avatar Jan 13 '21 15:01 rossy0213

あとはこれですかね

https://teratail.com/questions/151938

もう一度やりたい時はSpeechRecognitionクラスを再生成してるっぽい?

それか、onresultにnull代入してテキストの更新防げないかな

taka1156 avatar Jan 13 '21 15:01 taka1156

二重で結果入力されることに関してはおそらくバグって、力技で防げる気がします。 ただ、いろんな人に読んでもらう予定だったので、力技は入れないことを優先しました。

一応公式には認識されていて、直すと公言されているので、これを待ちたいところです。(スレッド見ている限り、あまり希望はないですが)

rossy0213 avatar Jan 13 '21 15:01 rossy0213

音声認識じゃなくてテキスト更新の可否をフラグで管理とかだと微妙かな

認識してても追加されなければいいみたいな

taka1156 avatar Jan 13 '21 15:01 taka1156

もう一度やりたい時はSpeechRecognitionクラスを再生成してるっぽい?

これはおそらく上のコメントの1と同じ問題に当たります。同じような方法も試したのですが、Androidの場合、onend()に再起動に入れる必要があって、初期化するとその辺りで不都合が出てきた覚えがあります。 ただ、全く同じことを試したわけではないので、触ってみてもいいかもしれないです。

rossy0213 avatar Jan 13 '21 15:01 rossy0213

音声認識じゃなくてテキスト更新の可否をフラグで管理とかだと微妙かな

問題点ばっかりコメントしてしまってごめんなさい。 これに関しては、もしユーザーが同じ言葉を繰り返した場合、どう区別すべきかという問題を考える必要があります。簡単に区別できそうな方法が思いつかなかったので、更新フラグ使わないようにしていました。もし何かあればぜひ試してみて欲しいです。

rossy0213 avatar Jan 13 '21 15:01 rossy0213