4

私はサウンドレベルを検出し、設定で設定されたレベルよりも高い場合にそれを書き込む必要がある小さなプログラムを作成し、portaudio を介してサウンドキャプチャを行い、libvorbis を介して圧縮しましたが、プログラムの一部が未完成であり、それに固執し、サウンドを検出する必要があります生のpcmデータのレベル、私はpcmデータが何であるかについてよく理解しておらず、オーディオ分析/処理アルゴリズムを知りません.それを実行できる既存のc/c++ライブラリはありますか?または実装できる単純なアルゴリズムはありますか? c/c++ は存在しますか?

4

2 に答える 2

4

それは、「サウンド レベル」をどのように定義するかによって異なります。これは、ピークを検出するのと同じくらい簡単な場合もあれば、ラウドネス レベルを取得する際の業界標準/推奨事項に従う場合など、より複雑な場合もあります。

PCM データは通常、符号付きの値のストリームです。8 ビット PCM の場合は 0x00..0xFF、16 ビット PCM の場合は -0x8000..+0x7FFF、浮動小数点値の場合は -1.0..+1.0 です。

最も簡単なのは、特定の時間枠の最大絶対値を探すことによって、単純なピークを検出することです。log10後で適用してデシベルに変換できます。

于 2013-02-21T12:55:32.707 に答える
2

Speex ライブラリと WebRTC ライブラリを調べてください... どちらにも voice-activity-detector が含まれています。サウンド レベルの尺度を探している場合は、線形または対数レベル インジケーターを決定する必要があります。PCM の一般的な形式は、-32768 ~ 32767 の範囲 (16 ビット ショート) です。簡単にできることの 1 つは、期間内のサンプルの絶対値を合計し、サンプル数で割って平均を求めることです。期間中のレベル。

于 2013-02-21T12:55:25.413 に答える