Mycroft-core: ローカルSTTフォールバック?

作成日 2017年01月21日  ·  9コメント  ·  ソース: MycroftAI/mycroft-core

これにどれだけの労力がかかるのか、これにどれだけの関心があるのか​​わかりません。

一般的なローカル(オフライン)STTシステムは、現在使用されているシステムほど認識が良くないことは理解していますが、それでも、それらを使用するオプションと、オンラインサービスの応答に時間がかかりすぎる場合にフォールバックするオプションの両方が必要です。 。 (また、何らかの理由でサービスがダウンした場合)

個人的な背景:

ホームインターネットはひどいもので、基本的なリクエストが大幅に遅れたり、接続が切れたりすることがあります(私が使用するほとんどすべてがオンラインベースですが、最終的にはホームオートメーションのようなオフラインのみの機能があります)。

提案:

  • 1つ以上のローカル認識ツールのサポートを追加します。
  • STT設定に「フォールバック」オプションを追加して、リモートサービスが応答しない(接続がない、または結果が得られるまでにX秒以上かかる)場合にローカル認識を使用します。

これによって解決される問題:

  • プライバシー(プライバシーのために品質を犠牲にすることをいとわないユーザーは、完全にオフラインのMycroftを使用してそうすることができます)
  • 貧弱な接続での運用を継続します(「無応答」よりも「貧弱な応答」を優先するオプション)
Enhancement - proposed help wanted

全てのコメント9件

完全に同意しました! 実際、私がブログの投稿/ニュースレターの1つを正しく読んだ場合、これはしっかりと範囲内にあるはずだと思います。

こんにちは、

プルリクエスト#656および関連する問題#655を参照してください。 ローカルpocketsphinxをSTTデバイスとして使用するために、クライアント/音声に必要な変更を実装します。

これはスペイン語の内部化で開発およびテストされた考え方ですが、PocketSphinxでサポートされている他の言語に対して有効である必要があります。

詳細については、こちらのwikiページを参照してください。 特に、「スペイン語をサポートするSTTを選択して構成する」というタイトルの章。

kaldiを使用したい場合は、プルリクエスト#438もあります。
ラズベリーパイで動作するかどうかはわかりませんが、デスクトップでは正常に動作します。

数年後、インターネット接続に応じて、オンラインとオフラインの両方のSTTを使用する最適化されていない方法を共有します。 それが誰かを助けることができるなら。 PocketSphinxをオフラインSTTとして個人的に使用する

mycroft.stt .__init__。pyに_frommycroft.util importconnected_を追加します
次に、create()メソッドに:を追加します。

if connected() is True: return PocketSphinxSTT() else: try : ...

次に、mainskill .__ init__。pyで、handle_boot_finishedメソッドに次の呼び出しを追加できます。
self.schedule_repeating_event(self.check_connection_switchSTT, None, 30)
これにより、インターネット接続をチェックするcheck_connection_switchSTTが呼び出され、変更された場合は30秒ごとにオーディオサービスが再起動されます。
私の関数は個人的に次のようになります:

def check_connection_switchSTT(self):

    if connected() is True:

        self.newstate = "yes"

    else:

        self.newstate = 'no'

    if self.prevstate != self.newstate:

        self.prevstate = self.newstate

        LOG.info("Internet connectivity changed")

        subprocess.call(['/path/to/stop-mycroft.sh', 'voice'])

        subprocess.call(['/path/to/start-mycroft.sh', 'voice'])

`
スキルの初期化中の接続に応じて、以前にself.prevstateを定義している

問題を解決するためのあまり良い方法ではありませんが、このテーマについて他に何も見つけることができず、インターネットがダウンしたときにフォールバックする必要がありました。 過去3年間にこの問題について誰かが知っていたら、共有してください。

Pocketsphinxは行き止まりであり、フォールバックとしても使用できないほどに吸い込まれます

https://github.com/MycroftAI/mycroft-core/pull/1184を作成してオフラインpocketsphinxSTTを追加しましたが、ライブテストは99,9%の確率で終了し、あきらめてCLIを使用しました。

kaldiライブストリーミングはオプションで、少しうまく機能します。75%の時間しか諦めません!

あなたの最善の選択肢は、deepspeech / kaldiをセルフホストすることですが、それでもプライムタイムの準備ができていません

あなたは私のpocketsphinxローカルリスナー(限られた語彙は大丈夫です)と

これらは概念実証ですが、実際には維持されていないプロジェクトです。プルリクエストはそれらを最新の状態に保つことを歓迎します

フォールバックSTTは非常に理にかなっていると思いますが、使用できるものができて初めて、現在はリソースの浪費になっています。

私は2番目にpocketsphinxで問題を抱えていますが、これは主に精度が低いためです。個人的には、 https: //github.com/jcsilva/docker-kaldi-gstreamer-serverでkaldiを使用する方がはるかに幸運でした

前回試したのは2017年だったので、ymmv、もう一度見てみる時間があればいいのですが、mycroftが恋しいです:)

おかげで、地元のリスナーは確かに非常に興味深いです、私はアップデートでPRします。

VoskはRPIで実行でき、現在16言語用の小さな(50MB)STTモデルがあります。 今からやってみます...

@domcrossここでくださいhttps://github.com/HelloChatterbox/speech2text/blob/dev/speech2text/engines/kaldi.py

#2594がマージされるのを待っているので、追加できます:)

このページは役に立ちましたか?
0 / 5 - 0 評価