本日の内容(10/30) • (以下、前回資料と重複あり) • 音響データの分析 – フーリエ級数、フーリエ変換 – 離散フーリエ変換(DFT)、 高速フーリエ変換(FFT) – 自己相関 – Cepstrum, LPC, MFCC • 音楽的な性質(調・調性、拍節構造) • 音楽情報科学について(導入) 1 音響データの分析 • 音響信号データから、もとの音の大域的性質 を表す特徴量を抽出する。 • とりわけ音の高さ(音高)、強さに関する情報 が基本的かつ重要。 – 高さ: 音の周期的な時間変化 – 強さ: 音のパワー値(振幅の2乗平均に対応) • さらに楽器音識別、音源定位、音源分離等。 2 音の成り立ち(単音) • 時間的区分 – 立ち上がり部分(アタック attack) • 楽器音の識別、 音声の子音の識別など ピアノ – 持続部分 • 音の高さ。ある程度定常的だが、 時間的な変化もある • 時間変化 – 減衰音(ピアノ、打楽器等) – 持続音(管楽器、弦楽器等) – ピッチの時間変化 • ヴィブラート(演歌のこぶしなども) • 音高変化: chirp 音、グリッサンド 0.05 0.04 0.03 0.02 0.01 0 -0.01 -0.02 -0.03 -0.04 -0.05 0 0.2 0.4 0.6 0.8 1 1.2 1.4 リコーダー 3 “ADSR” (エンベロープ形状の図式) • もともとはシンセサイザーのパラメタについて言 われた。 – – – – Attack(立ち上がり) Decay(減衰) Sustain (保持) Release (開放、残響) • 実際の楽器音の特徴づけなどにも転用される • エンベロープ(envelope: 包絡線) – 時系列データ、スペクトルなどについて、細かい変動 を平滑化して大まかな形状を取り出したもの 4 参考:歌声分析・合成 • 音声では、母音に応じて特定の周波数成分 が強くでる。これを「フォルマント(formant)」 と言う。 • フォルマントをうまく合成すれば音声らしく 聞こえる。 • 子音の合成はもっと難しい。 • Singer’s formant: 主にクラシック歌手に 特有の歌声のフォルマント(3000Hz 付近) 5 歌唱のフォルマント(テノール) A 800-1200 Hz E I 400-600 Hz 2200-2600 Hz 200-400 Hz 3000-3500 Hz O 400-600 Hz U 200-400 Hz 6 分析方法の種類 • 時間領域での分析(波形データの分析) – 音のアタック部分、時間変化の分析 – 波形自体の直接的な分類・比較はあまり意味が ない(位相差が聴取にあまり影響しない) • 周波数領域での分析(スペクトルの分析) – 波形データのフーリエ変換結果(スペクトル)を用 いた分析 – 周波数情報についての精密な情報が得られる 7 音の高さ (1) (復習) • (以後しばらくは単音について取り上げる) • 一定の高さ感(ピッチ感)のある音は、 一定の周期で波形が繰り返される。 • この周期を周波数単位で表したものが 「基本周波数」 fundamental (frequency) • 楽音: ピッチ感のある音 通常の楽器音 • 噪音: ピッチ感のない音 打楽器音(シンバル、ドラム、...)、 white noise 中間的: 鐘、銅鑼など 8 音の高さ (2): 周波数成分 • 「重ねあわせの原理」 2つの音 S1(t) と S2(t) とを同時に鳴らした音 S(t) は S(t) = S1(t) + S2(t) で表される。 • 最も「単純な」音(純音)は三角関数(サイン波)として 表せる。 S(t) = Asin(2πf t +α) = Asin(ωt +α) (A: 振幅、f: 周波数、ω=2πf : 角周波数、α:位相) • 純音でない音を複合音などと言う。 9 音の高さ (3): Fourier 展開・級数 • (詳細は授業補足資料 wave2.pdf 等を参照) • 楽音(ピッチ感のある音) S(t) は、基本周波数 f の整数倍 の周波数の音の重ね合わせ(離散スペクトル)。 2πf =ωとおくと: S(t) = a0 /2 + a1 cos ωt + a2 cos 2ωt + a3 cos 3ωt + ... + an cos nωt + ... +b1 sin ωt + b2 sin 2ωt + b3 sin 3ωt + ... + bn sin nωt + ... • 基本周波数の音: 基音 周波数 nf の音: (基音の)第 n-1 倍音 an, bn : 第 n-1 倍音の振幅 10 重ね合わせによる合成の例 • 矩形波(n=11, n=103) *** n = 11: add 1/11 sin(11*t) *** 1.5 *** n = 103: add 1/103 sin(103*t) *** 1.5 1 1 0.5 0.5 0 0 -0.5 -0.5 -1 -1.5 0 -1 1 2 3 4 5 6 7 -1.5 0 1 2 3 4 5 6 7 • Gibbs 現象: S(t) の不連続部分でスパイクが 生じる。 11 周波数分布(離散スペクトル) • 原理(三角関数の直交性) S(t) = a0 /2 + a1 cos ωt + a2 cos 2ωt + a3 cos 3ωt + ... + an cos nωt + ... +b1 sin ωt + b2 sin 2ωt + b3 sin 3ωt + ... + bn sin nωt + ... (1) S (t ) cos ntdt (2.2) πbn = S (t ) sin ntdt • (2.1) πan = • 2 0 2 0 • (一般には連続分布(フーリエ変換)になる。) 12 参考:フーリエ級数の収束性 • S(t) が前スライド (1) のように表せる場合、 S(t) は f (2πf =ω)を基本周波数とする周期関 数である。 ⇒ これはまあ、明らか • 問題はその逆: 任意の周期関数は sin, cos の級数として表せるか? – 連続関数の場合に成り立つことは比較的容易 – 問題は不連続関数の場合 これについては、19世紀数学のかなりの部分がこ の解明に関わっている大問題 13 複素フーリエ級数・変換 i e cos i sin • オイラーの定理: を用いると、cos, sin の組と複素指数関数を相互に行 き来できる。 S (t ) c e n n i nt c cos nt i sin nt n n • 数学的には複素指数関数のほうが扱いやすいので、 フーリエ級数を複素数で表すことも多い。さらにフーリ エ変換(後述)は複素数で表すのが普通。 • (詳しくは授業資料 3.2 等を参照) 14 フーリエ変換(導入) • 基本周波数が ω でない(場合によっては周 期的でさえない)音 S(t) について、(2.1, 2.2) によりフーリエ係数を計算するとどうなるか • ⇒ωが十分細かければ、S(t) の周波数成分の 付近にピークが現れる(デモ、資料参照) • 周期 T→0(ω→∞)の極限をとれば、周波数 成分分布が得られる ⇒「フーリエ変換」 15 フーリエ変換(連続スペクトル) • 信号関数 S(t) に対し、次式で表される S*(ω) を S(t) の「フーリエ変換」という。 S ( ) eit S (t )dt * • S*(ω) は S(t) の角周波数 ω 成分の大きさを 表す。( S*(ω)自身は複素数値なので、実際 にはその絶対値をとった |S*(ω)| が大きさを表 す。) – 実際の計算では、S(t) は有限範囲でしか与えら れず、上も有限範囲の積分となる。 16 離散フーリエ変換(DFT) • フーリエ変換の離散化。 (discrete Fourier Transform) • 有限個の離散的な信号データ x0, x1,..., xn-1 に対して(複素)フーリエ級数展開を適用: • 結果は(複素)フーリエ係数値 fj • このとき fj にも周期性がある(上の j の範囲だけし か値が得られない)。 • 上の計算は行列・ベクトルの計算として実行できる 17 高速フーリエ変換(FFT) • 離散フーリエ変換(DFT)を効率的に計算するため のアルゴリズム (Fast Fourier Transform) – Cooley & Tukey 1965 による。 • 原理は、行列計算で同じ計算になる部分をうまく まとめて、1回の計算で済むようにすること。 – これにより計算量が通常の O(N2) から O(Nlog N) 程度 にまで減少する。 • DFT の計算だけでなく、応用範囲が広い。 • 基本的には N=2n の場合に適用されるが、拡張に より一般の N にも利用可能。 18 DFT/FFT で得られる値 • 周波数分解能: データ点数に依存。 – サンプリングレート Fs、データ点数 N のとき、得られ る周波数成分は Fs/N 単位。 例えば Fs = 44100 Hz、N=2048 の場合、 44100/2048 = 21.5 Hz おきの値になる。 • 窓幅(=データ点数)を大きくすればより精密な 周波数値が得られるが、一方では信号の時間 変化を平均化して取り込んでしまう。(デモ) • つまり周波数精度と時間精度とは相補的関係に ある(=「不確定性原理」)。 19 STFT, 窓関数 • FFT は短い窓幅に適用するのが普通。 (N = 1024, 2048 等) STFT (Short Term Fourier Transform) • 窓の両端では変換結果が歪むことになる。 • 主として周波数分解能改善のため、様々な窓関 数を乗じてから FFT を行う。 – – – – – 矩形窓(原データのまま) Hanning 窓 Hamming 窓 Gaussian 窓 等々 20 基本周波数の抽出 • 得られた周波数スペクトルから、 基本周波数 f0 を抽出する。 • 実際には周波数スペクトルを得ることより、こち らのほうがいろいろ難しい点が多い。 • f0 の求め方: – – – – まずピーク値(極大値)を求める。 最大点が f0 ..... とは限らない。 フィルタの利用(櫛形フィルタ、ガウシアンフィルタ) ケプストラム(再フーリエ変換) 21 自己相関 (Autocorrelation) • 時間領域での周波数抽出法。 • (ほとんど周期的な)信号 S(t) を、時間的に少し ずらした S(t+τ)と重ねて一致度を見る。 A( ) S (t )S (t )dt • τが周期(の整数倍)であれば一致度が大きく、 そうでなければ一致度は低い(逆位相であれば 負の大きな値になる)と予想される。 • ピークとなる正のτの最小値が周期に対応。 (基本周波数はその逆数) • 離散データでは1点ずつずらして重ね合わせれ ば(乗算すれば)よい。 ⇒デモ 22 基本周波数の抽出(続) • フィルタ – 特定の周波数帯域だけを通す関数(フィルタ関数)を ずらしながら乗じて、極大値となる点を求める。 G( ) S (t ) F (t )dt – 周波数方向の対数値をとるとオクターブごとに周期 性がある。 • ケプストラム – スペクトル自体に周期性がある: – 周波数方向を対数値にとったスペクトルにフーリエ変 換をかける。最大ピークが f0 になる。 – これを応用した MFCC (Mel frequency cepstrum coefficients) が実用でも多く利用されている。 23 残された問題 • f0 決定の問題点: オクターブエラーなど • 複数音が同時に鳴っている場合(音源分離) – それぞれの音のスペクトルが重なっている。 – 原理的には分離は不可能、しかし様々な手掛かりは ある。 • 既知のスペクトル分布の利用 • アタック部分の情報 • 音の時間変化(のパターン) • アタックなど、非定常部分、時間変化の解析 24
© Copyright 2025 ExpyDoc