0

生態学的なサウンドスケープの特定のサウンド ファイルに含まれるオーディオ ドロップアウトの数を評価しようとしています。

Format: Wave
Samplingrate (Hertz):   192000
Channels (Mono/Stereo): Stereo
PCM (integer format):   TRUE
Bit (8/16/24/32/64):    16 

私のプロジェクトには 2 要素のハイドロフォンがありました。要素は異なるブランド/モデルであり、特定の実験でどの要素がよりよく機能したかを判断しようとしています. 私たちが実施したい分析の 1 つは、各要素でドロップアウトまたは信号損失が発生した頻度を測定することです。これらのドロップアウトは信号振幅に関連していません。言い換えれば、ドロップアウトは振幅を最大化することによって引き起こされるわけではありません。要素または関連する電子機器が故障しました。

R は私が最もよく知っているプログラムであるため、R でこれを実行しようとしています。私は Matlab と正規表現の経験が非常に限られていますが、これらのプログラム/言語を試すことにオープンです。私は生物学者なので、無知なことをお許しください。

R では、「seewave」パッケージをいじってみましたが、非常にきれいなスペクトログラムを作成することができました (公平を期すために、以前にそのパッケージを使用した唯一のコンテキストです)。seewave(タイマー)内のエンベロープと自動時間計測機能を使ってみました。興味深いが、反対の結果が得られました。

    foo=readWave("Documents/DASBR/DASBR2_20131119$032011.wav", from=53, to=60, units="seconds")
    timer(foo, f=96000, threshold=6.5, msmooth=c(30,5), colval="blue")

msmooth と threshold の値を数え切れないほど変更しましたが、それは細かい調整です。この関数が実行するのは、指定されたしきい値での振幅ピーク間の持続時間を測定することです。a)振幅のない信号内のサンプルを見つけるか、b)振幅のない領域間の期間を測定するために必要なこと。これらの出力のいずれかで作業できます。基本的に、しきい値が測定している方向を逆にしたいのですが、それは意味がありますか? したがって、しきい値を超えるサンプルではなく、しきい値を下回るサンプルが測定をトリガーします。

必要なデータを生成する方法を確認するために、まだ seewave をいじっていますが、少しのガイダンスを探しています。おそらく、私がやろうとしていることをより効率的に達成する関数が seewave にあるのでしょう。または、タイマーから生成された数値データを出力する方法がある場合は、「quantmod」パッケージ関数「findValleys」を使用して、すべてのデータ ギャップのリストを取得できます。

そうそう、私が求めているのはガイダンスです。データを処理する神よ。

乾杯。

4

2 に答える 2

0

他の人が気付くように、私が最終的に何をしたかを要約したかっただけです。残念ながら、RMS 測定値は私が探していたものではありません。rms は技術的にはドロップアウトが発生する可能性があるという基本的な考えを私に与えることができますが、私は環境に配慮した録音を扱っているので、あまりにも多くの他の要因が関係しています。

背景: 私が取り組んでいるサウンド ストリームは、2 要素のハイドロフォンからのもので、垂直方向に 2 メートル離れており、海面下 100 メートルで録音されています。約 100 メートルの位置にある要素ではドロップアウトが激しく発生しているのに対し、約 102 メートルの位置にある要素はほとんど問題がないことがわかりました。現在、これは特定される電気的な問題に起因すると考えられています。両方の要素がまったく同じ方法で auto を受信するように準備されている場合、rms はドロップアウトを検出するときに機能しますが、サウンドは個別に受信されるため、rms の計算は他の要因の影響を大きく受けます。ソース レベルと信号受信に関しては、2 メートルの違いが想像以上に大きくなる可能性があります。信号到着間の遅延に基づいて、発声する動物 (左右のあいまいさ) を特定するには十分です。

それでも、私がやったことは次のとおりです。

library(seewave)
library(tuneR)
foo=readWave("Sound_file_Path")
L=foo@left
R=foo@right
rms(L)
rms(R)

次に、このプロセスをディレクトリを介してループします。詳細は次 のとおりです。WAV ファイルを使用した for.loop

これまでのところ、この問題はまだ解決されていませんが、議論していただきありがとうございます!

~etg

于 2014-02-13T22:05:03.877 に答える