• 締切済み

WAVファイルフォーマットについて

ファイルフォーマットについての質問です。 PCMで44.1kHz 16bit モノラルのファイルの場合 DATAチャンク内の波形データは 1000ms間に2byte(16bit)のデータが44100個並んでいるという認識でいいでしょうか? 0という数値が44100続けば、無音時間1秒ということでしょうか? よろしくお願いします。

みんなの回答

noname#257438
noname#257438
回答No.6

前者については、そういうことです ただし、20bit(2byte+4bit)のモノラルに関しては、「3バイトにアライン」されます。 無音は定義があいまいですが、 例えば(16bit 44100Hz Linear-PCMにおいて) [0x0000が44100回,次に0x00ffが44100回,]が何度も繰り返される場合、 「振幅1LSB、0.5Hzの矩形波(らしき波形)」です。 無音1秒ではありません。(0.5Hzの矩形波が人間にどう聞こえるかは別として) ただし、0x0000だけが記録されている、0x1ffeだけが記録されている、といったように、WAVEファイルのはじめから終りまで全部同一の値であれば、それは無音です。 便宜上、フーリエ変換してスペクトラム表示したときに周波数成分が検出できないなら無音と言えるでしょう。 また、仕様上8bitPCMの中央値は0x80,16bitPCMは0x0000とされています。 ですが、クリッピング(波が表現できる限界を超える)でもしないかぎり、中央値がどこにあろうと再生される音は同じです 0x1000が入力され続けた時に,それをDCとして出力するような頭のおかしいDACなら別ですが・・・

回答No.5

>0という数値が44100続けば、無音時間1秒ということでしょうか? 合ってはいますが正確ではありません。 「波形の振れ幅がある程度以下の状態が、44100サンプル分続けば、無音」です。 「波形の振れ幅がある程度以下の状態」とは「音声信号の振れ幅が、スピーカーが駆動しないくらいの振れ幅しかない状態」です。 例えば、データが(16進で) 0000 0000 0001 0001 0000 0000 0000 ffff 0000 ffff 0000 0000 と言う感じで「ffffと0000と0001が、不規則にたくさん並んでいる状態」も「無音」です。 更に言えば「波形データの中央値付近以外で無音が続く場合がある」ので 1b4b 1b4c 1b4c 1b4d 1b4c 1b4c 1b4c 1b4b 1b4d 1b4d 1b4d 1b4c と言う感じで「1b4bと1b4cと1b4dが、不規則にたくさん並んでいる状態」も「無音」です。 更に更に言えば「厳密に言えば、WAVEファイルの場合、波形データの中央値と言うのは存在しない」です。 16ビットのWAVEファイルの場合「波形の中央」は「0000とffffの間」に存在します。0000でもffffでもありません。 +側の波形は0000~7fffに量子化され、-側の波形はffff~8000に量子化されます。そのため「ど真ん中」は0000でもffffでもありません。 その為「完璧に無音状態の音声信号をサンプリングして量子化」すると「0000とffffが不規則に並ぶ」ことになります(この「不規則性」は、サンプリング回路が、電源ノイズ、電磁波ノイズなど外部からの影響を受けた結果による) 従って「0という数値が44100続けば、無音時間1秒」ではありますが「1秒間の無音状態をサンプリングしても0という数値が44100続くとは限らない」のです。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

サンプル周波数44.1KHzで出せる一番高い音が22.05KHzの音という意味でした (1周期を表すのに2サンプル以上必要) 人間の耳はたかだか20KHzまでしか聞こえないらしいのでこれで十分なのでしょう

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「実際の音」も 44.1 kHz だと思う>#2. さておき, 「同じ値がず~っと続く」のは事実上「無音」と同じですね. スピーカーでいえば値がコーンの位置を表すんだけど, 「同じ値がず~っと続く」というのは「コーンの位置が全然動かない」のと同じだから.

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

サンプリングレートなので1秒間に44100個であってます 実際の音としては22.05KHzの音になります 16ビットWAVEなら0が無音になります 8ビットWAVEは0x80が無音です

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

並んでいる個数の認識は合ってるね。 しかし数値は正しくないよ。 なぜなら音波は正負が有るから。 つまり中央値というのが存在するんだよ。 windowsのwaveで0が中央値かどうかは調べてみてね。 0x8000 だったりするかもしれないからね。