1

Audacity を使用して 2 つの wave ファイルを作成しました。両方とも 44100hz のサンプル レート、32 ビット フロート サンプルを持ち、WAV (Microsoft) 16 ビット署名として保存され、無音の 1 が含まれています (Audacity による)。違いは、1 つのファイルには 1 つのチャンネルが含まれているのに対し、もう 1 つのファイルには 2 つのチャンネル (ステレオ) が含まれていることです。1 つのチャネル ファイルを読み取ると、次のようなフレームが得られました。

0x00 0x00  
...  ...  

予想通りですが、2番目のファイルを読むと、次のようになりました。

0x00 0x00 0x00 0x00  
0x01 0x00 0xff 0xff  
0x00 0x00 0x00 0x00  
0x00 0x00 0x01 0x00  
0xff 0xff 0x01 0x00  
0xfe 0xff 0x03 0x00  

これは私にはランダムなパターンのようです。チャンネルがウェーブファイル内に保存される方法と関係がありますか? 次のようなものではないでしょうか。

0x00 0x00 0x00 0x00  
...  ...  ...  ...  

?

PS: Python 組み込みモジュール 'wave' を使用してファイルを読み取りました。

4

5 に答える 5

3

データはランダムではありません

それを見ると、行ごとに 2 つの int 値が表示され、それぞれ 2 バイトがリトルエンディアンになっているようです。

0x00 0x00 0x00 0x00  
0x01 0x00 0xff 0xff  
0x00 0x00 0x00 0x00  
0x00 0x00 0x01 0x00  
0xff 0xff 0x01 0x00  
0xfe 0xff 0x03 0x00  

次のようにデコードします。

 0  0
 1 -1
 0  0
 0  1
-1  1
-2  3

したがって、他の人が示唆したように、0 に非常に近い数値 (ほとんど無音) がジッターのように見えます。

于 2010-12-15T03:54:43.343 に答える
1

沈黙が予想された非常に低いレベルの信号は、32ビットから16ビットへの変換で使用されたディザによって引き起こされた可能性があります。

于 2010-06-04T20:57:31.590 に答える
1

私が覚えていることから、チャネルは交互に配置されている必要があるため、44.1 khz の 1 秒は 88,200 k サンプルのストリームになり、左と右、または仕様に記載されているものは何でも変わります。

また、Audacity は float -> int 変換を間違ってはいけません。逆の場合のみです。おそらく浮動小数点の代わりに整数サンプルから始めてみてください。または、1 つのチャネルを既知の値 (つまり Ox8f8f) に設定し、もう 1 つのチャネルを 0 に設定すると、簡単に把握できます。

于 2010-06-04T19:59:50.330 に答える
0

コードと前の投稿を削除しました。

沈黙: 「本当の」沈黙はゼロでなければなりません。それ以外の場合は、「ルーム」サイレンスと呼ばれることが多く、ノイズ ゲートを使用しない場合はどこにでも存在する非常に小さなノイズです。(記録) 単なるアイデア: 符号付きの値を使用すると、符号付き/符号なしマーカーに 1 ビットが使用されることに注意してください。多分 (私にはわかりません) これは、audacity を使用して署名付きの wave ファイルに変換した後に表示されるものです。申し訳ありませんが、これをテストする時間がありません。

Wave ファイル: あなたがサウンドファイルについてどれだけ知っているかわかりませんが、無音を追加したいだけなら、次のようにしてみてください: 各サンプルのサイズは X ビットです: したがって、1 つのサンプルに X/8 バイトが必要です。サンプリングレートを知っているので、元の生のバイト配列をサイズ (silence_length_in_samples bytes_per_frame)+(original)+(silence_length_in_samples bytes_per_frame) のいずれかにコピーし、Python ツールを使用してサウンドファイルに書き戻すことができます。これを行う。

2 チャネル: 生のバイトは [sample1(channel1_bytes, channel2bytes)][sample2(channel1_bytes,channel2_bytes)] に編成されています。

于 2010-06-04T19:38:16.423 に答える
0

次のコードを使用して、これらの数値を確認できます。

import struct
struct.unpack("f", struct.pack("I", 0xfeff0300))
(-1.6948435790786458e+38,)

それらはすべて、非常に小さく、ほぼ間違いなく静かな数であるように見えます。無音を生成し、32 ビット浮動小数点 WAV として保存しましたが、小さい数値は取得されませんでした。私のファイルには、ヘッダーを除いてゼロが含まれていました。

0.2 秒のサイレント 2 チャネル浮動小数点データは、次のように生成できます。

import array
silence = array.array("f", [0] * int(44100 * 2 * 0.2))
于 2010-06-04T20:45:04.510 に答える