これまでかなりの時間を探していましたが、実際にアンドロイドのマイクからSPL/db値を取得する方法を見つけることができませんでした。私が見つけたいくつかのスレッドや記事では、誰もがそれを行うことができるはずであることは明らかで、変換アルゴリズムを正しく理解することにもっと関心がありました。誰もこれを行う方法を知っていますか?アンドロイドマイクからデシベルを取得する
答えて
まず、自動レベルコントロールを無効にする必要があります。私はあなたがどちらかを知っているか、ALCなしでマイクからサンプルを録音する方法を調べる場所を知っていると思います。
その後、基本的に較正とログの大きさに関するすべてです。本質的には、周波数に依存した較正によって掛け算または畳み込みを行い、周波数範囲の全部または一部に対して10 *ログの大きさを取ることになります。
次に、制御された既知のスプライスのラボソースを周波数掃引し、その結果の振幅と周波数を記録するなど、いくつかの校正測定を行う必要があります(ゆっくりと掃引すれば振幅対時間は本質的に同じです)またはあなたは広範囲の疑似インパルス(電気スパーク、スターターピストルなど)を使用して、放射対称の位置で良好な実験装置で周波数を測定しているか、最後の手段として既知のものを使用しますSPLを推定するためにソースの物理的特性を評価し、それが関心のある周波数にわたって十分に平坦であることを望みます。
次に、補正を適用する方法は2つあります。
1つの選択肢は、伝達関数を反転し、時間領域のインパルス応答を計算し、それを入力信号と畳み込むことによってデジタルフィルタとして使用して周波数平坦性補正を適用することです。その後、単位時間あたりの結果のログの大きさを取って、広帯域スプラインを決定することができます。
入力データに対してFFTを実行して周波数スペクトルを生成し、それに周波数応答の逆数を掛けて、何らかの(合計の)binが興味深いもののログの大きさを取ることができます。
残念ながら、同じモデルであっても、デバイス間での一貫性のある整合性以上を想定する理由はほとんどありません。
他の関連するアプリを研究して研究しているうちに、私はこのようなものを探している人には役立つ情報を見つけました。 Android携帯のマイクは、0〜+ 32,400の値を返します。ほとんどの場合、コンサート、クラブ、または機械的なノイズなど、2,000を超えるものは本当に大音量です。 「相対的な沈黙」は約30です。しかし、これらの値の意味は相対的であり、電話と電話では異なるでしょう。互いのすぐ隣に座っているいくつかのデバイスは、その中のマイクのために異なる値を返します。値は多少異なる場合もありますが、多くの場合は異なります。私のオフィスでいくつかの異なるアンドロイド携帯電話をテストするだけで、いくつかのデバイスが同じ状況で他のデバイスの10倍の値を返すことがわかった。これが、「ええ、デシベル値を得ることができます。ここにいくつかのサンプルコードがあります」と言った人はいませんでした。本当に信頼できる(簡単な)方法がないからです。 1つのデバイスにアップロードした場合、たとえば30 dBになりますが、もう1つは300 dBになります。明らかに、耳の保護が大したことなく300dBの環境にいる人間はいません。値は相対値として取られなければならない。彼らがお互いにどのように関係しているか。ダイナミックであろうとなかろうと、「キャリブレーション」は、使用できる値を取得したい場合には必須です。あなたから来ることはできない確立されたベースラインがなければならず、それはあなたからの価値と比較されなければなりません。例えば、前に述べたように、相対的沈黙は約30であるべきである。電話が相対的な無音環境で456を返す場合は、自分の電話番号(30)を電話番号(456)で分けるだけで、電話機から返された値を調整して、見たいものと一致するようになりますこれらの値はある程度の信頼性のために使用することができます。
これは私が過去数ヶ月にわたって見つけたもので、誰かを助けることを願っています。
こんにちは、あなたの仕事は本当に私を助けています。しかし、私は質問があります。計算されたデシベル値、または読み込み関数から得られた短いデータを較正しますか?よろしく – smoothumut
オープンソースアプリNoiseTubeはこれを行います。デバイス固有の校正のサポートも含まれています。ソースコードはhttps://code.google.com/p/noisetube/にあります。あなたがそれにアクセスできるなら、私は彼らの記事を読むことを強くお勧めします参加型ノイズマッピングが機能します!環境モニタリングのための標準技術の代替としての参加型感知の評価(available for pay)。
ソースからのいくつかのハイライト:
Calculating Leq(ウィキペディア上LEQを参照)
A-weighing(ウィキペディア上Weighting filterを参照)
- 1. CordovaとJavaScript(getUserMediaなし)を使用してアンドロイドマイクからオーディオデータを取得
- 2. すくいデシベル:我々は、コマンドすくいデシベル上のエラーを取得するのはなぜRAILS_ENV =開発
- 3. 私はデシベルからいくつかの通貨IDを取得する必要があり、配列
- 4. Android - 音量からデシベルを計算
- 5. redux状態からアイテムを取得するか、サーバから取得する
- 6. Outlookからのシグネチャを取得してボディフォーマットを取得する
- 7. すくいデシベル:すくいデシベルを実行している間mysql2
- 8. TFSコレクションを取得したWorkItemChangedEventから取得する方法
- 9. トークンを取得したら、Google Plus APIからメールアドレスを取得するには
- 10. CSVからインポートする日付を取得する日付を取得する
- 11. 使用デシベル() - フラスコ
- 12. IEからHTTPリクエストを取得する
- 13. WebViewからHTMLソースコードを取得する
- 14. Javaからアーキテクチャを取得する
- 15. wpfから署名を取得する
- 16. jqueryコールバックからクラスインスタンスを取得する
- 17. WordからRTFを取得する
- 18. Yesod:IDからデータベースエンティティを取得する
- 19. モジュール名からパスを取得する
- 20. SIMカードからTMSIを取得する
- 21. Typo3からデータを取得する
- 22. QueryStringからテーブルを取得するASP.NET
- 23. データベースからカラーポリゴンを取得するPHP
- 24. datarowviewからdatagridrowを取得するWPF
- 25. jsonから配列を取得する
- 26. シーケンスを配列から取得する
- 27. NSStringからNSDateを取得する
- 28. javax.sound.sampled.Clipからオーディオサンプルを取得する
- 29. MySQLからJSONデータツリーを取得する
- 30. UIPickerViewからNSDateを取得する
Whoa APIと番号がほしいと思っていました。あなたは本当に情報を得るために記録する必要がありますか?私はただ聞くことを望んでいた。 –
私がこれを研究して読んだ限り、そうです。サンプルは数ミリ秒のように非常に短くても構いませんが、サンプルが必要です。ただし、計算を完了するとすぐにファイルを削除することができます。私は間違っているかもしれません。私はまだ学んでいない、それを行う他の方法があるかもしれませんが、私はまだそれについて何も読んでいません。 – Brandon
ええ、私はちょうど周りを見て、それが簡単だろうと思っていた。私は本質的に、その周りの音の音量に基づいて音を聞き、再生するだけです。 – Nicholas