MP3
ビットレートとローパスで音がどう変わるかを聴き比べます。
時間と周波数
原音
計算中…
MP3
閾値を超えた雑音
サンプル音源
ファイル
WAV・MP3・FLAC など。先頭 10 秒を使用。この枠へドラッグ可
まだ選んでいません
ビットレート ビットレート
1 秒の音に使うビット数
kbps
fc ローパス
圧縮の前に、この周波数より上を捨てる
Hz
プリセット
0.00 / 0.00 s
音量 音量
dB
動作原理と式
全体の流れ
- 入力のローパス
- 32 帯域
- MDCT
- 心理モデル
- 量子化
- ハフマン符号
- フレーム
周波数に分ける
- 32 帯域のフィルタバンクのあと、帯域ごとに MDCT で 18 本に分け、合計 576 本にする
- MDCT は窓を半分ずつ重ね、隣の窓との間で折り返しの誤差を打ち消す[3]
- 長いブロックは 36 点。打音のある所は 12 点の短いブロックを 3 つ使い、打音の前に雑音が広がるのを防ぐ
- 隣の帯域の境では、エイリアスの低減で重なりを減らす
マスキングの閾値
- スペクトルの平坦度 [dB]。純音に近いほど小さい
- バーク尺度の周波数
- 閾値を広がったエネルギーから下げる量
- 閾値。絶対閾値より小さければ絶対閾値を使う
- 大きな音のそばの小さな音は聞こえない[4]
- 純音は雑音より閾値が低く、雑音を隠しにくい[2]
- NMR が 0 dB を超えると、雑音が閾値より大きい
- 絶対閾値は Terhardt の近似式で、20 kHz に近いほど高い[5]
量子化
- 量子化した値
- global_gain(グラニュール全体の粗さ)
- スケールファクタ(帯域ごとの細かさ)
- 内側のループが g をビットの予算に合わせ、外側のループが閾値を超えた帯域の s を上げる[6]
- 16 kHz より上の帯域にはスケールファクタがない
- 小さな値ほど短い符号にするハフマンの表を、領域ごとに選ぶ
フレームとビットリザーバ
- 1 フレームは 1,152 サンプルで、576 サンプルのグラニュール 2 つからなる
- 余ったビットは次のフレームが使える。さかのぼれるのは 511 バイトまで[1]
- 左右が似ている所は和と差(M/S)にしてビットを減らす
ローパス
- 高音を捨てると、そのぶんのビットが低い帯域へ回り、雑音が減る
- 捨てすぎると高音を失うので、ビットレートごとに最も良い値がある
- LAME の既定は 64 kbps で 11 kHz、128 kbps で 17 kHz、320 kbps で 20.5 kHz[7]
- 高音を失ったこもりは NMR に出にくいので、耳でも確かめる
このツールで決めたこと
- エンコーダは自作で、復号はブラウザに任せる(保存した MP3 はほかの再生ソフトでも読める)
- MPEG-1 の 44.1 kHz・固定ビットレート。ファイルは 44.1 kHz に直し、先頭 10 秒を使う
- 使わない機能: scfsi・preflag・scalefac_scale・subblock_gain・混合ブロック・インテンシティステレオ
- 心理モデルは Model 2 の考え方を簡略にしたもので、純音 29 dB・雑音 6 dB はこのツールで決めた値
- NMR は心理モデルとは別の式で測る(Johnston の式。左チャンネル。2,048 点のハン窓で 1,024 サンプルずつ)
- 閾値の広がりは下へ 27 dB/Bark、上へ 24 dB/Bark に固定。帯の幅は 1/2 バーク
- フルスケールを 96 dB SPL とみなして絶対閾値と比べる
- 「閾値を超えた雑音」はローパスより下のマス(帯域 × 時間)のうち閾値を超えた割合
- ローパスはハミング窓の sinc で、遷移の幅は遮断周波数の 8 %
- ハフマンの領域の分け方とビットリザーバの配分はこのツールの決めた値で、LAME とは違う
- 音はこの端末の中だけで処理し、送らない
出典
- MP3 の規格ISO/IEC 11172-3:1993, Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s — Part 3: Audio
- 閾値のオフセット、平坦度、NMR の考え方J. D. Johnston, “Transform coding of audio signals using perceptual noise criteria,” IEEE Journal on Selected Areas in Communications, vol. 6, no. 2, pp. 314–323, 1988, doi:10.1109/49.608
- MDCT(時間領域の折り返しの打ち消し)J. Princen and A. Bradley, “Analysis/synthesis filter bank design based on time domain aliasing cancellation,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 34, no. 5, pp. 1153–1161, 1986, doi:10.1109/TASSP.1986.1164954
- マスキングの広がりM. R. Schroeder, B. S. Atal, and J. L. Hall, “Optimizing digital speech coders by exploiting masking properties of the human ear,” The Journal of the Acoustical Society of America, vol. 66, no. 6, pp. 1647–1652, 1979, doi:10.1121/1.383662
- 絶対閾値の近似式E. Terhardt, “Calculating virtual pitch,” Hearing Research, vol. 1, no. 2, pp. 155–182, 1979, doi:10.1016/0378-5955(79)90025-X
- 二重のループと MP3 の全体D. Pan, “A tutorial on MPEG/audio compression,” IEEE Multimedia, vol. 2, no. 2, pp. 60–74, 1995, doi:10.1109/93.388209
- LAME の既定のローパスThe LAME Project, libmp3lame/lame.c(optimum_bandwidth), android.googlesource.com
- 規格の表の数値K. Lagerström, PDMP3(パブリックドメインのデコーダ), github.com/technosaurus/PDMP3