問題タブ [audiocontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
627 参照

ios - Cordova Phonegap inappbrowser でファイル API 機能が失われる

Web Audio Api を使用してアプリを開発しています。私は、Safari がオーディオを処理し、オーディオ コンテキストを正しくガベージ カレッジしない方法にメモリ リークがあることを発見しました。このため、新しいページをロードしたいと考えています。そのページでオーディオ コンテキストを作成し、操作を完了してからウィンドウを閉じて、メモリを解放します。

これを達成するために、次のことを行いました。

ref = window.open('record.html', '_self');これにより、 https: //wiki.apache.org/cordova/InAppBrowser に従って、Cordova WebView で record.html ページが開きます。

1 window.open('local-url.html');// Cordova WebView にロードします
2 window.open('local-url.html', '_self');
// Cordova WebView にロードします

record.html ページは、実行したい操作を実行する JavaScript ファイルをロードします。これは、ネイティブ操作へのいくつかの呼び出しを行う recordLoad.js ファイルです (ネイティブ API は、Cordova Webview にロードされている場合にのみ使用できます。ご覧のとおり、ファイル システムにアクセスする必要があるため、これが唯一の方法です。やれ。

// このファイルは非常に長いですが、2 つのオーディオ バッファのミキシングが完了すると、新しいファイルがファイル システムに書き込まれます。そして、その操作が完了したら、私は使用します

}

元の index.html ファイルに戻ります。これにより、メモリの問題が解決されます。ただし、同じ操作をもう一度実行しようとすると。つまり、record.html ファイルをロードし、recordLoad.js ファイルを実行すると、エラー ReferenceError: Can't find variable: LocalFileSystem が表示されます。

index.html をリロードすると、Cordova API へのリンクの一部が失われているように見えますが、すべてが失われているわけではありません。たとえば、Media API は使用できますが、File API は使用できません。これは、メモリ リークを解決するためのちょっとハックな方法 (ウィンドウの開閉) であることは理解していますが、それ以外の方法は見つかりません。これには本当に助けが必要です。ですから、どんな指針も大歓迎です。

0 投票する
0 に答える
217 参照

javascript - マイク入力のレベル正規化

Firefox をバージョン 31 に実装して以来、JavaScript Web Audio API の使用に問題があります。スクリプトのソースは変更されていません。

それは何をしますか?マイク入力 (生成された波形を 3.5 mm ジャックから PC に移植) を使用します。 --> ゲイン --> ScriptProcessor ノードを使用した視覚化。そして - すべてうまくいきましたが、GainNode に送信される前に入力レベルが何らかの形で正規化されているように思えます。その結果、波形の視覚化はまったく使用できなくなります。以下の例:

http://i.stack.imgur.com/hzEOR.png

この機能をオフにする方法が見つかりません。動作する唯一の方法は、FF をバージョン 30 にダウングレードすることです。FF 31 のリリース ノートを検索しましたが、この動作を説明するものは見つかりませんでした...

それを解決する方法はありますか?なぜこうなった?ありがとうございました。

0 投票する
1 に答える
7283 参照

javascript - AudioContext HTML5 を使用してマイクから音声データを取得するにはどうすればよいですか

マイクからデータのストリームを取得しようとしています (音量、ピッチなど)。今のところ、getUserMediaマイクの音声にアクセスするために使用しています。しかし、そこからデータを抽出する方法が見つかりませんでした。

私のコード:

0 投票する
2 に答える
1631 参照

javascript - AudioContext: 音量を x デシベル上げる

聴覚テストで AudioContext() を使用していますが、音量を x dB 上げ​​る/下げる方法を知りたいと思っていました。それは可能ですか?

現時点では、AudioContext に接続された gainNode があります。これは (要するに) 次のようになります。

音量を変更するには、次のようにします。

ここでは、dB 値を正確に定義する機会がありません。他の方法はありますか?

問題は、ブラウザがスピーカーから出てくる音の正確な音量を決して知らないことだと思います。したがって、新しい dB 音量を計算するためのベースがありません。

現在の dB 値を決定する方法は、テスト音 (ホワイト ノイズ) と話された数字などの 2 つの音の違いによるものです。差を計算するために、次の式を見つけました。

次に、スピーチが-0.6でノイズが-0.3の場合、たとえば-6 dBの基準があります。しかし、この値を特定の dB 値だけ上げるにはどうすればよいでしょうか?

例: -6 dB を 5 dB 上げ​​て -1 dB にします。音声/ノイズを再計算するにはどうすればよいですか?

0 投票する
1 に答える
626 参照

javascript - Android Chrome 39 getByteFrequencyData が 0 配列を返す

私はここにセットアップ例を持っています - http://jsbin.com/hotovu/2/

デスクトップクロムでは、すべて問題ありません。Android Chrome 39 は、すべての配列を 0,0,0, ... に返します (Chrome デバッグ用の ADB プラグインで)

これを機能させるための回避策はありますか?

0 投票する
1 に答える
223 参照

javascript - サーバーへの書き込み時にマイクからの半分の速度の AudioContext

クライアントの JavaScript でマイク録音を作成し、サーバーに転送してからシルクに変換しようとしています。これらの設定を使用してスピーカーモジュールを使用してサーバーでオーディオを再生しています

しかし、シルクに変換されると、半分の速度に聞こえます。私が書いていないCクラスを使用したシルクへの変換が、pcmファイルとしては問題ないように聞こえるため、速度低下を引き起こしていると思います。Cファイルにはこれらの設定があります

BinaryJS を使用して、コードを Int16array としてサーバーに書き込みます。

ここにコードをコピーしますが、このチュートリアルからほぼそのままコピーしました。

http://blog.groupbuddies.com/posts/39-tutorial-html-audio-capture-streaming-to-node-js-no-browser-extensions

また、ビットレート、サンプルレート、およびシルクコーデックが必要な場合にサンプルレートをダウンサンプリングする方法に関して、audioContext から正確に何を得ているかを知りたいです。

編集:

サンプルの半分を削除して float32 を Int16 に変換する onaudioprocess を変更することで、半分の速度を (ちょっと) 解決しました。

ただし、オーディオのピッチはまだ半分です。