私はcordova-plugin-audioinputの作成者です。マイクからの生のオーディオデータにアクセスできるようにしています。 PitchDetectライブラリを変更することなく、audioinputプラグインと一緒に使用することはできません。 PitchDetectライブラリは、古いAndroidウェブビュー(< 5.0)ではサポートされていないgetUserMedia APIに依存しており、iOSウェブビューではサポートされていません。一方、cordova-plugin-audioinputは、iOSと古いAndroidウェブビューでのマイクアクセスを可能にするために特別に作成されました。
Android上であなたの特定の問題を解決することができ、迅速な方法:
インテルXDKを使用すると、点滅の新しいバージョンを使用することができます横断歩道のWebView、(オープンソース版とAndroidアプリの構築をサポートしていますChromeの)、Web Audio APIとgetUserMedia APIの両方をサポートしています。
インテルXDKでAndroid向けビルド設定画面に移動し、は「横断歩道で最適化」チェックボックスがチェックされていることを確認し、あなたのビルドで横断歩道を有効にするには。 CrosswalkをIntel XDKで使用する方法の詳細については、https://software.intel.com/en-us/xdk/blog/what-is-crosswalkを参照してください。
私はアプリはまた、マイクへのアクセス許可が必要なので、インテルXDKのビルド構成の「権限を追加」フィールドに「android.permission.RECORD_AUDIO」に入ると確信しています。あなたが、一方で、あなたがあなたのアプリをしたい場合(たとえばPitchDetectライブラリと一緒にコルドバ - プラグインaudioinputを使用したい場合はPitchDetect
と一緒にコルドバ - プラグインaudioinputを使用して
getUserMedia APIをサポートしていないiOSでも動作します)、いくつかの変更を行う必要があります。それはgetUserMediaに依存しないように、具体的には、あなたは、PitchDetectのtoggleLiveInput機能を変更する必要がありますが、代わりに始まり(および停止)audioinputプラグインとPitchDetectアナライザにaudioinputプラグインを接続します。
audioinput.start({
streamToWebAudio: true,
audioContext: audioContext // To ensure that the audioinput plugin uses the same audioContext as the PitchDetect library
});
analyser = audioContext.createAnalyser();
analyser.fftSize = 2048;
audioinput.connect(analyser);
updatePitch();
上記の例は、以前のAndroidバージョンでのサポートが制限されているWeb Audio APIに依然として依存しています。 Android 5以降は正常に動作するはずです。さまざまなブラウザでのWeb Audio APIサポートの詳細については、http://caniuse.com/#feat=audio-apiを参照してください。
私はこれが役立ち、幸運を願っています!
ねえ。ご支援ありがとうございます。私はあなたが言ったことを正確に行いました(上記のコードをコピーしました)。しかし、私はautoCorrelate関数が常に-1を返していることに気づいた。 "if(rms <0.01)が-1を返す"ため、-1を返します。 (「//十分な信号がありません」とコメントされています。何か間違っていると思います。 – DigitalEvolution