狠狠撸

狠狠撸Share a Scribd company logo
高効率音楽符号化
―MP3詳解―
伊藤 彰則
東北大学大学院工学研究科
aito@spcom.ecei.tohoku.ac.jp
音の符号化
● 音(アナログ量)→デジタルデータに変換
– コンピュータで扱える
– デジタル回線での伝送
● どうやってデジタル化するか?
– 目標
● アナログに戻したときの音質がよい方がいい
● デジタルデータにしたときのビット数が少ない方がいい
– 方法
●
音声のいろいろな性質を利用する
音声符号化の基本事項
● サンプリング
– 時間的に連続する信号の「とびとび」の時間での値だけ
を観測する
– 「とびとび」の速さ:サンプリング周波数 fs
– 入力信号がfs/2以下の周波数成分だけを含む場合に
は,サンプリングされたデータから元の信号が復元でき
る(サンプリング定理)
音声符号化の基本事項
● 量子化
– 信号の大きさを「とびとび」の値に丸める
●
整数で値を表現できる
– 「とびとび」の幅:量子化幅
– 量子化した信号と元の信号の差:量子化誤差
サンプリングと量子化:どうする?
● サンプリング周波数:どの程度の高さの音まで再
現するかで決まる
– CD:44.1kHz (22.05kHzの音まで再現)
● 量子化:どの程度の雑音まで許容するかで決まる
– 音の符号化とはつまり「どう量子化するか」
PCM符号化
● PCM(Pulse Code Modulation)
– 量子化した値をそのまま2進数の数字として符号化
● PCMの要素
– 1サンプルあたり何ビット使うか
– 量子化の間隔をどうするか
● 等間隔に量子化:線形量子化(linear quantization)
● 等しくない間隔で量子化:非線形量子化(nonlinear quant.)
● PCM符号の例
– CD:16bit線形量子化
– VoIP(G.711): 8bit 非線形量子化
PCM符号化の問題点
● 情報量が多過ぎる
– ステレオ音源: 44100*16*2=1411 kbit/s
– 3分の音源で31Mbyte
● それがどうした?
– CDに記録されている分には問題ない
– 蓄積?伝送が問題
● 解決策
– 出来るだけ縮めたらどうか?
音の不可逆圧縮
● 可逆圧縮と不可逆圧縮
– 圧縮前のデータが完全に復元できるかどうか
– 不可逆圧縮は完全復元できないが圧縮率が高い
● Cf. 画像の可逆?不可逆圧縮
– 可逆: GIF, PNGなど (BMPは非圧縮)
– 不可逆: JPEG, JPEG2000など
● 音の場合
– 可逆: Flac, Sphereなど
– 不可逆: MP3, AAC, WMAなど
不可逆圧縮だとどれくらい縮むのか
● 44.1kHzサンプリング、16bit 量子化、2chステレオ
– 非圧縮: 1411 kbit/s
– MP3: 128 ~ 256 kbit/s ぐらい
1サンプルあたり 1.5~3bit !
● どうすればここまで縮むのか?
– 全てのサンプルを3bitで量子化したら聞くに堪えない
– 聞こえる部分は細かく量子化
– 聞こえない部分は省略
聞こえる音と聞こえない音
● 最小可聴域と等ラウドネス曲線
鈴木他:「音響学入門」
(2011)より転載
聞こえる音と聞こえない音
● 聴覚マスキング
– 大きい音と周波数的?時間的に近い小さい音は知
覚できない
聞こえる音だけ鳴らすには
● まず音を周波数成分に分解する
– 音の聞き取りやすさは周波数依存
● 異なる周波数で異なる量子化
– 聞こえやすい周波数は細かく、聞こえない周波数は
粗く
– マスキングされる部分はどうせ聞こえないので量子
化は粗くてもよい
オーディオ符号化の基本的枠組み
周波数
分析
量子化
量子化
量子化
量子化
bitstream
形成
bitstream
分離
逆量子化
逆量子化
逆量子化
逆量子化
時間
領域に
戻す
QMF
MDCT
Wavelet等
聴覚特性
を考慮
(最小可聴
曲線,マス
キング等)
エントロピー
圧縮の利用
(Huffman,
算術圧縮等)
周波数成分への分解
● 原信号を異なる周波数成分に分け,周波数成分ご
とに異なる量子化を行う
● どうやって周波数に分けるか?
– データ量が増加してはいけない
– 量子化誤差の影響をできるだけ抑える
● ふつうの周波数分析方法は???
– バンドパスフィルタバンク(BPF):データ量が増える
– 高速フーリエ変換(FFT)
– 離散コサイン変換(DCT)
量子化誤差の影響を低減しよう
とするとデータ量が増える
BPFの問題点
● BPF:複数のバンドパスフィルタを組み合わせて
入力信号を複数の周波数成分に分解
原信号
N点
N点
N点
N点
N点
4N点 問題点
●データ量が増える
●各帯域の信号を
加えても元に戻る
保証がない
FFTの問題点
分析窓
(フレーム)
FFT
符号化
復号化
IFFT
重なりのない分析窓を使う場合
●
データ量は増えない
● 方形窓しか使えない
(分析窓の自由度がない)
● 雑音の影響で窓の境界に不連続
が発生する
N点
N点
N点
FFTによる不連続の例
FFT+雑音付加+IFFT
不連続を防ぐためには
分析窓
(フレーム)
FFT
窓関数
フレームシフト
ハニング窓など
IFFT
符号化
復号化
重なりのある分析窓
を使う場合
● さまざまな分析窓が使える
● 窓の両端での不連続を抑える
● データ量が2倍に増える
窓幅の半分ずつ
ずらして重ね合
わせる
(Overlap-Add)
窓関数とOverlap-Add
x(t)
T
w(t)=
1
2
(1?cos(2πt/T ))
x(t ;0)=x(t)w(t)
x(t ;1)=x(t)w(t?T )
x(t ;2)=x(t)w(t?2T )
(ハニング窓の例)
端が0になるので不連続の影響を
低減することができる
窓関数とOverlap-Add
● Overlap-Addで元に戻る窓関数の条件
w(t)+w(t+T /2)=1
w(t)+w(t+T /2)=
1
2 {(1?cos(2π t
T ))+
(1?cos(2π(t+T /2)
T ))}
=
1
2 {(1?cos(2π t
T ))+
(1?cos(2π t
T
+π))}
=
1
2 {(1?cos(2π t
T ))+
(1+cos(2π t
T ))}
=
1
2
(1+1)=1
オーバーラップ窓とデータ点数
(n+
1
2)T
2nT
T
点
点
データ量       倍2?
2
2n+1
解決策
● BPFの問題点の解決
– 共役ミラーフィルタ(QMF) / ポリフェーズフィルタバン
ク
– バンドパスフィルタとダウンサンプリングの組み合わ
せ
● FFT(など)の問題点の解決
– 修正離散コサイン変換(MDCT)
– 周波数変換した結果が窓長の半分になる
MPEG1 audio
● 映像符号化規格MPEGの音声部分
– Layer 1 (MP1), layer 2 (MP2), layer 3 (MP3)がある
– 周波数分析,心理聴覚モデル,非線形スカラ量子化
polyphase
filter bank/
MDCT
量子化
量子化
量子化
量子化
bit-
stream
形成
bit-
stream
分離
逆量子化
逆量子化
逆量子化
逆量子化
時間
領域に
戻す
FFT
心理
音響
モデル
共役ミラーフィルタ
● Quadrature Mirror Filter (QMF)
● 入力信号を,同じデータ量のまま低域と高域の情
報を含む信号に分離する
●
分離した情報を合わせることで,元の信号が完全
に復元される
● 簡単なQMFの例 (Haar Wavelet)
yi=
x2ix2i1
2
zi=
x2i?x2i1
2
x2i= yizi
x2i1=yi?zi
QMF
分離
QMF
合成xi xi
zi
yi
高域
低域
Haarフィルタの周波数特性
0
0.2
0.4
0.6
0.8
1
0
0.5 1 1.5 2 2.5 3
m1m0 
QMFによる信号の分解
m1
(w)
m0
(w)
x
?2
?2
高周波成分
低周波成分
● HPF, LPFによるフィルタリングと間引き
→データ量は原信号と同じ
ポリフェーズフィルタバンク
m1
(w)
m0
(w)
x(t)
?4
?4
● 複数のバンドパスフィルタと間引き演算の組み合
わせ
m2
(w) ?4
m3
(w) ?4
N点
N/4点
N/4点
N/4点
N/4点
MP1
● MPEG1 audio layer 1
– ポリフェーズフィルタバンクによる周波数分析
– 12サンプルごとに正規化+スカラ量子化
polyphase
filter bank
非線形
スカラ量子化
32帯域
非線形
スカラ量子化
正規化
正規化
ブロック平均パワー
スカラ量子化
ブロック平均パワー
スカラ量子化
修正離散コサイン変換(MDCT)
● Modified Discrete Cosine Transformの略
● n点の時間領域信号をn/2点の周波数領域信号に
変換する
● n/2点オーバーラップ窓を利用する
X m=∑
k=0
n?1
f k xkcos
{
2n 2 k1
n
2 2m1
}
xk=
4 f k 
n
∑
m=0
n/2?1
X mcos
{
2n 2k1
n
22m1
}
修正離散コサイン変換(MDCT)
● 窓関数の利用
– Princen-Bradley条件を満たす
f (k)2
+f (k +n/2)2
=1
● よく利用される窓関数
– サイン窓
– Vorbis窓
– カイザー?ベッセル派生窓
f (k)=sin(π(k +1/2)
n )
0≤k <n
f (k)=sin
(π
2
sin
2
(π(k +1/2)
n ))
f (k)=
√∑
j=0
k
w j /∑
j=0
n
w j
wk=
I 0(πα√1?(2k /n?1)
2
)
I 0(πα)
MCDTとIMDCT
x(k)
f (k)
n点
X (m) n/2点
cos係数をかける
cos係数をかける
f (k)
n点
元の信号
とは異なる
f (k)x(k)
2回窓関数をかける理由
● 何のためにMDCTとIMDCTの両方で窓関数をか
けるのか?
– 単なる変換-逆変換なら1回でよい
– の時点で信号の両端は(ほぼ)0
→周波数領域での操作による誤差で,そのまま
 では逆変換結果の両端が0でなくなる
→もう一度窓関数をかけることにより信号の両端
 を0にする
● サイン窓の場合
– 2回かければ,最終的な窓はハニング窓と同じ
f (k )x(k)
時間領域折り返し歪み
● IMDCTの結果は原信号と一致しない
–MDCTの結果,情報が半分になっているので
元に戻るはずがない
–どうなっているのか?
前半:奇関数 後半:偶関数
原信号の前半と後半を
x1(t), x2(t) とする
x(t)=(x1(t), x2 (t))
それぞれの時間反転
信号を x1
R
(t), x2
R
(t)
とすれば,IMDCTに
よる復元信号は
?x(t)=(x1(t)?x1
R
(t)
2
,
x2(t)+x2
R
(t)
2 )
(窓関数
の影響を
除いてみ
たもの)
時間領域折り返し歪みキャンセル
● TDAC (Time-Domain Aliasing Cancellation)
+
x2(t)+x2
R
(t)
2
x2(t)?x2
R
(t)
2
x2(t)
x2(t)
Overlap-Addによる復元
● 時間的に連続する復元信号を重ね合わせることで
原信号が復元できる
MDCT
Overlap-
Add
IMDCT
MP3
● ポリフェーズフィルタバンク+MDCTによる分析
● 可変フレーム長(標準18点)
● エントロピー符号化
polyphase
filter bank
非線形
スカラ量子化
32帯域
非線形
スカラ量子化
MDCT
MDCT
Huffman
符号化
bitstream
MP3の窓関数
● MP3:3種類の分析窓長,4種類の分析窓
Long Short
Start Stop
窓関数の切り替え
● 音量が大きく変わる部分(アタック)で長い窓を使う
と,本来音がない部分に音が現れる現象が起きる
(プリエコー)
?アタックの大きいところで短い窓を使う
– アタックがあるかどうかの判定には心理音響モデル
を使う
プリエコーとは
量子化
● 周波数分析した信号を周波数ビンごとに量子化
● 量子化の精度をコントロールすることで全体の情
報量を減らす
● 量子化精度は心理音響モデル(psychoacoustic
model)によってコントロールされる
基本的な考え方
frequency
すべての周波数
ビンで一様な量
子化をした場合量子化雑音レベル
frequency
周波数レベルに
よって量子化の
粗さを変える量子化雑音レベル
これを決めるのに「心理音響モデル」が必要
心理音響モデルとその役割
● 信号そのものの周波数
分析とは独立に分析さ
れる
● 量子化をどの程度の精
度で行うかを周波数ご
とに制御する
– その周波数の音の
「聞こえやすさ」を推
定する
– Model IとIIの2種類
が定義されている
polyphase
filter bank/
MDCT
量子化
量子化
量子化
量子化
bit-
stream
形成
FFT
心理
音響
モデル
心理音響モデル(II)の計算
予測不可能性
指標の計算
臨界帯域
パワー計算
入力
音声
窓掛け
FFT
スペクトル
スペクトル
過去
2フレーム分
臨界帯域
パワー
重みつき
臨界帯域
パワー
非線形
変換
帯域別
許容SNR
×
帯域パワー
閾値
最小可聴
パワー
max周波数ごとの
パワー閾値
マスキング
の利用
閾値をFFTの
周波数ビンに分配
分析帯域とspreading function
0.00.40.8
分析のための(臨界)帯域
0 22kHz
高周波ほど帯域が広い(Bark scale)
Spreading function
ある周波数成分の聴覚的強度への周辺からの影響
spread( f 1 , f 2)
閾値の計算(1)
● 予測不可能性指標
– 過去2フレームの線形外挿と現在のフレームとのずれ(その
成分が雑音性かどうかを表す)
● 臨界帯域パワー
– パワースペクトルから各帯域のパワーを計算
– Spreading functionを畳み込んで聴覚的な実効パ
ワーを計算
E(b ,t)= ∑
k=klow (b)
khigh(b)
∣X (k ,t)∣
2
Ecb(b ,t)=∑
n=1
bmax
E(b ,t)spread(bval (n),bval(b))
cw (k ,t)=
∣X (k ,t)? ?X (k ,t)∣
∣X (k ,t)∣+∣?X (k ,t)∣
X (k ,t)
?X (k ,t)
閾値の計算(2)
● 重みつき臨界帯域パワー
– パワーを予測不可能性指標で重み付け
● 許容SNRへの変換
C (b ,t)= ∑k=klow (b)
khigh (b)
cw (k ,t)∣X (k ,t)∣2
Ctb(b,t)=∑
n=1
bmax
C (b ,t)spread(bval(n),bval(b))
5
10
15
20
25
30
35
0 0.1 0.2 0.3 0.4 0.5
Ctb /Ecb
SNR(dB)
その帯域でどの程度の量
子化雑音を許容するかの
比率
閾値の計算(3)
● 各帯域の許容SNRに帯域のパワーをかけて,雑
音の許容パワーを計算
http://downbitaudio.com/projects/psychoacoustic-model/ より引用
量子化?符号化
● MP3は基本的に固定ビットレート符号化
(可変ビットレートも可能だが)
?与えられたオーディオデータを固定ビットレートで
符号化する工夫が必要
● 繰り返しによる量子化レベルの最適化
– ある細かさで量子化してみる
– その結果をエントロピー符号化によって圧縮
●
目標ビットレートより小さければ,もっと細かく量子化
●
目標ビットレートより大きければ,もっと荒く量子化
– 目標ビットレートに十分近くなるまで以上を繰り返す
全体ループ
グローバルゲイン,スケールファクタの初期化
do // 外側のループ:全体のビットレートを合わせる
 グローバルゲイン初期化
do // 内側のループ:MDCT係数の量子化と圧縮
  グローバルゲインを調整
  MDCTのスケールファクタを調整
x ←量子化されたMDCT係数
L ←xのビット長
while L > Lg // Lg: 目標の情報量
 スケールファクタの各帯域の雑音パワーを求める
// スケールファクタの調整
for i ← 1 to 帯域数
if i番目の雑音パワー > i番目のマスキング閾値 then
i番目のスケールファクタを増加
end if
end for
until no scalefactor was changed
ゲイン調整と量子化
xr[i]←xr[i]2
(1+Sg)I q[b]
2
Sg: グローバルゲイン
Iq[b]: スケールファクタ
i番目のMDCT係数に対応するスケールファクタ帯域番号
をbとする
ix[i]←int(∣xr[i]?2
?
(qquant+quantanf )
4 ∣
3
4
?0.0496) qquant, quantanf :
 量子化ステップ
異なるqquantに対する
量子化の結果
エントロピー符号化
● 基本的にはハフマン符号化を使う
– 事前に量子化値と符号化ビットパターンの対応表を
作っておく
● 周波数領域を3つに分ける
0 100 200 300 400 500 600
-30
-20
-10
0
10
20
30
40
50
MDCT dimension
MDCTvalue
Big values ?1 Zeros
1 sample
to 1 code
4 samples
to 1 code
Runlength
encoding
MP3パケット
● MP3は「グラニュル」という単位で扱われる
– グラニュルはおよそ分析フレームに対応
– 2グラニュルで1パケット
– 複数チャネルのグラニュルは1つのパケット
Granule Ancillary
data
(opt.)
Granule
Granule Granule
Header
2つ目のグラニュルのパラメータ(スケールファクタなど)が1つ目と同じ場合には,
適宜それらを省略することでビットレートを削減する
END
DETERMINATION OF NON TRANSMITTED
SUBBANDS
ADJUSTMENT TO FIXED BIT RATE
DESIRED
BIT RATE
CALCULATION OF REQUIRED
BIT ALLOCATION
CALCULATION OF MASKING
THRESHOLD AND SIGNAL TO
MASK RATIOS
F.F.T. ANALYSIS
CODING OF SCALE
FACTORS
CALCULATION OF
SCALE FACTORS
SUBBAND ANALYSIS
FILTERING
DESIRED
BIT RATE
DETERMINATION OF NON TRANSMITTED
SUBBANDS
ADJUSTMENT TO FIXED BIT RATE
CALCULATION OF REQUIRED
BIT ALLOCATION
CALCULATION OF MASKING
THRESHOLD AND SIGNAL TO
MASK RATIOS
F.F.T. ANALYSIS
CODING OF SCALE
FACTORS
CALCULATION OF
SCALE FACTORS
SUBBAND ANALYSIS
FILTERING
BEGIN OF
LEFT CHANNEL
BEGIN OF
RIGHT CHANNEL
DETERMINATION OF APPROPRIATE
NUMBER OF COMBINED SUBBANDS
SUMMATION OF LEFT AND RIGHT
SUBBANDS & SCALING
DESIRED
BIT RATE
CODING OF BIT ALLOCATIONS
NORMALISATION, QUANTISATION AND
CODING OF
SUBBAND SAMPLES
CODING OF BIT ALLOCATIONS FOR
COMBINED SUBBAND SAMPLES
NORMALISATION, QUANTISATION AND
CODING OF COMBINED
SUBBAND SAMPLES
FORMATTING THE AUDIO FRAME
CODING OF BIT ALLOCATIONS
NORMALISATION, QUANTISATION AND
CODING OF
SUBBAND SAMPLES
マルチチャネル信号の扱い
ステレオとMSステレオ
● ステレオ符号化
– 右チャネルと左チャネルを独立に符号化
● ミッドサイド(MS)ステレオ符号化
– 左右チャネル信号の和と差を独立に符号化
– 左右チャネル差は小さいので全体の情報量を抑え
ることができる
– 情報量を削りすぎると音の立体感が失われる
● ジョイントステレオ
– 信号の性質によってステレオとMSステレオを自動
的に切り替え
MP3のビットレートと音質
100 110 120 130 140 150 160 170 180 190 200
-2
-1.8
-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
0
bitrate [kbit/s]
ODG
192k
160k
128k
レポート課題
● Advanced Audio Coding (AAC)ではMP3で利用
されていないさまざまなオーディオ圧縮技術が利用
されている.それらの技術について調査し,A4用
紙1ページ程度にまとめて提出せよ.

More Related Content

高効率音声符号化―惭笔3详解―