PCMサンプルの量を視覚化する

algorithm audio c++ pcm volume
PCMサンプルの量を視覚化する

C ++アプリケーションには、PCMオーディオ(G.711)のチャンクがいくつかあります。 これらの各チャンクの異なる音量を視覚化したいと思います。

私の最初の試みは、各チャンクのサンプル値の平均を計算し、それをボリュームインジケータとして使用することでしたが、これはうまく機能しません。 無音のチャンクでは0を取得し、音声のチャンクでは異なる値を取得しますが、値はわずかに異なるだけで、実際のボリュームに似ていないようです。

ボリュームを計算するより良いアルゴリズムは何でしょうか?

G.711オーディオは対数PCMであると聞きます。 それをどのように考慮する必要がありますか?

  1  2


ベストアンサー

私は自分でG.711 PCMオーディオを操作したことはありませんが、値を処理する前に、エンコードされた振幅から実際の振幅への正しい変換を実行していると思われます。

音の波形がゼロのどちらかの側で振動するため、ほとんどのサンプルの平均値はほぼゼロになるはずです。

原油量の計算はrms(二乗平均平方根)、つまり サンプルの平方の移動平均を取り、その平均の平方根を取ります。 これにより、何らかの音がある場合にポジティブな量が得られます。量は、波形で表される電力に関連しています。

ボリュームの人間の認識に関連するものについては、http://wiki.hydrogenaudio.org/index.php?title = Replaygain [Replay Gain]で使用されている技術の種類を調査することをお勧めします。

3


意欲的な人は、ITU-webサイトからhttp://www.itu.int/rec/T-REC-G.711/en[G.711をダウンロード]して、数週間過ごすことができます(または多分それを実装します。

それよりも怠けている(または賢明な)場合は、代わりにhttp://www.itu.int/rec/T-REC-G.191-200509-I/en[download G.191]を使用できます。
– エンコードされたG.711を圧縮および解凍するソースコードが含まれています
データ。

デコードしたら、ボリュームを視覚化するのがはるかに簡単になります。

2


タイトルとURLをコピーしました