getUserMedia
Opus を使用して、または最新のブラウザーから同様のものに直接アクセスできるかどうかを確認したいと思います。
私はそれについて多くのことを研究してきましたが、良い結果はありません。
Opus または Speex のいずれかが実際にwebkitSpeechRecognition
API で使用されていることは承知しています。音声認識を行いたいのですが、Google ではなく独自のサーバーを使用しています。
getUserMedia
Opus を使用して、または最新のブラウザーから同様のものに直接アクセスできるかどうかを確認したいと思います。
私はそれについて多くのことを研究してきましたが、良い結果はありません。
Opus または Speex のいずれかが実際にwebkitSpeechRecognition
API で使用されていることは承知しています。音声認識を行いたいのですが、Google ではなく独自のサーバーを使用しています。
Emscripten については多くの提案がありますが、誰も行っていないので、Emscripten を使用してエンコーダopus-toolsを JavaScript に移植しました。何を念頭に置いているかに応じて、次の機会があります。
getUserMedia
ストリームから Ogg-Opus および WAV へのエンコードMediaRecorder
。これにより、サポートされているプラットフォームで任意のサウンド ファイルを Opus 形式にAudioContext.decodeAudioData()
getUserMedia で gsm610 を使用してエンコードとデコードに emscripten を使用していますが、モバイル デバイスでも非常にうまく機能します。最近では、javascript はほぼネイティブのパフォーマンスを提供するため、emscripten はコーデックのコンパイルに適しています。唯一の問題は、潜在的に非常に大きな .js ファイルであるため、使用している部分のみをコンパイルする必要があります。
残念ながら、現時点ではエンコードのために JavaScript からブラウザのコーデックに直接アクセスすることはできません。それを行う唯一の方法は、WebRTC を利用してサーバーに記録を設定することです。libjingle を Chromium の他のコードでコンパイルして、Node.js サーバーで実行できるようにしましたが、ほとんど不可能です。
現在できることは生の PCM データをサーバーに送信することだけです。これはかなりの帯域幅を占有しますが、float32 サンプルを 16 ビット (音声認識で処理できる場合は 8 ビット) に変換することで、これを最小限に抑えることができます。
ブラウザ コーデックを使用できるように、メディア レコーダー API がすぐに表示されることを願っています。
これは完全な解決策ではありません.@Bradの答えは、現時点では実際には正しいものです.
これを行う 1 つの方法は、 Opus を Emscriptenにコンパイルし、PC が JavaScript を使用してエンコーディングを処理できることを期待することです。もう 1 つの方法は、speex.jsを使用することです。