PCMストリームのラウドネス


7

PCMサンプルを1チャネルのストリーム(8000サンプル/秒)で受信しています。私は次の1000サンプルごとにabs値を追加して1000であるサンプル数で除算することにより信号の「力」を計算することでラウドネスを見つける方法を見つけました。サンプルの値は常に蓄積され、とんでもない値に到達するようです...だから私はそこで何か悪いことをしていると思います。面白いことに、計算が狂ってしまうと、手で「サウンド入力デバイス」を押すと、すべてが正常に戻ります;)

とにかく。私の質問は、PCMサンプルのセットのラウドネスを適切に計算する方法ですか?


合計を計算するときに、どの数値形式を使用していますか?オーバーフローが発生している可能性があります。
Jason R

1
2バイトの符号付き数値を使用しています。オーバーフローはありません。私はすべてのサンプルをtxt形式でファイルに出力しましたが、それらのサンプルは沈黙にもかかわらず、時間とともにどんどん増えていきました。それが「蓄積」し始めたとき、より奇妙な値でさえ何もゼロ以下になりませんでした。
solgar

回答:


9

エネルギー(「ラウドネス」に密接に関連しているが、同じではない)を測定するには、RMS(二乗平均平方根)を計算します。

E=n=0N1s[n]2N

Nはサンプルの数、は時間サンプルです。s[]

これは、サンプルの任意のブロックサイズで実行できます。すべてのサンプルに対して一度にそれを実行して平均エネルギーを取得するか、サンプルセットをチャンクに分割して、時間とともにエネルギーがどのように変化するかを確認できます。

身体と脳の癖を考慮に入れるより洗練された方法もあります。詳細については、こちらご覧ください


1
これは、二乗平均平方根を見つけるための複数の言語のコードです。
Xeoncross 2017年

1

私はエキスパートではなく、何を達成しようとしているのかわかりませんが、どこかでプログラミングエラーが発生したようです。コードを教えていただけませんか?

ラウドネスとは、ここで定義されている意味ですか?その場合、リスナーを説明する必要があります。

エネルギーだけに関心がある場合は、RMSの方が適しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.