このファイルは、3年春学期科目「音声情報処理」の授業において、口頭で説明する内容をテキスト(.txt)に書き起こしたものです。 事前に科目のHPにアクセスして「講義ノート」の PDF ファイルをダウンロードし、印刷しておいてください。このテキストには講義ノートの記述より多くの情報を含んでいます。講義ノートの行間に、テキストの説明を書きこんで行くことをお勧めします。最後にプリントを綴じれば、将来必要になったときに見返せる自分の「講義ノート」ができあがります。 「学生用ページ」「レポート提出システム」 から、その日の「宿題」レポートを提出してください。 〆切は 次回授業日の前日 23:59 です。 _/_/_/ 第七回 音程(ピッチ)分析 _/_/_/ 【講義ノート】短時間自己相関分析 今回は、母音など周期性を持つ音声波形から「声の高さ」すなわちピッチ周波数を求める方法について述べていきます。 まず、全体の基礎となる「自己相関関数」について説明します。 離散音声波形 x(n) に対し「自己相関関数」を次式のように定義します。 1 N φ(m) = lim ----- Σ x(n) x(n+m) N→∞ 2N+1 n=-N x(n) を指す吹き出しには「離散波形」とメモ。 これは、ある時刻 n の波形 x(n) とその m 標本点後の波形 x(n+m) を掛けて、n の前後 2N+1 点に関する平均を計算し、平均区間長→∞の極限をとったものです。 もし、x(n) が 周期 m で繰り返していれば、x(n) と x(n+m) は同じ値になって強めあうため、自己相関係数φ(m)はピークを持ちます。 逆に言えば、自己相関関数のピークを探せば、音声波形の周期が分かるということです。 しかしこの定義式は、音声波形が理想的な周期を持つことを前提としており、平均区間を無限大に長くするのも実用的ではありません。 そこで、波形に時刻 I 付近に限定された時間窓(重み係数)を掛けて、時間範囲を限定してしまします。これを x_I(n) とするとき、時刻 I における「短時間所個相関関数」を次式のように定義します。時間窓によって、x_I(n) が値を持つ範囲が限定されるため、有限長の平均操作で、式の計算を行えます。 「」には「短時間」。 x_l(n) を指す吹き出しには「時刻 l において時間窓をかけた離散波形」とメモ。 【講義ノート】短時間自己相関分析 (2) さて、この短時間自己相関関数を用いて、ピッチ周波数を求めてみましょう。 ・時間波形と(短時間)自己相関関数 左側の図は、ある母音の波形を示しています。横軸が時間で、周期 T_0 で繰り返しています。 右側の図は、この波形から(短時間)自己相関関数を求め、時間遅れ m を横軸にとってグラフ表示したものです。時間遅れが周期 T_0 と一致する付近で関数の値が大きくなっていることが分かります。ピークを探してピッチ周期を決定し、その逆数をとればピッチ周波数が求まります。 黄色い吹き出しには「ピークを探す」とメモ。 このように、短時間自己相関関数は簡単な計算でピッチ周波数を求めることのできる基本的な手法なのですが、しかし図からも感じる通り、どれがピークなのか迷う要素があります。すぐ隣にもピークが連立しており、判断が難しい。 実はこのような事情から、短時間自己相関分析を単独でピッチ抽出に使うことはあまりありません。他の手法と合わせて精度を上げていきます。 【講義ノート】非線形変換を利用する方法 ・センタクリッピング+自己相関分析 音声波形に対し自己相関分析を行う前に、図に示す「センタクリッピング」関数を用いる方法があります。 センタクリッピング関数は、波形が負の値ではずっと 0 に値をつぶし、正の値はそのまま通すはたらきをします。 黄色い吹き出しには「センタクリッピング関数」とメモ。 【講義ノート】非線形変換を利用する方法 (2) ・センタクリッピング+自己相関分析 左側の図は、前に示した母音の波形にセンタクリッピング関数を適用したものです。横軸が時間で、周期 T_0 で繰り返していrるのは前と同様です。 右側の図は、センタクリッピング波形から(短時間)自己相関関数を求め、時間遅れ m を横軸にとってグラフ表示したものです。 前と同じように、横軸(時間遅れ)を変化させて、縦軸がピークになるところを探します。 先ほどの例よりも、ピークの左右に連立していた偽ピークが抑制され、ピーク選択の精度が向上することが分かります。ピークを探してピッチ周期を決定し、その逆数をとればピッチ周波数が求まります。 黄色い吹き出しには「ピークが強調される数」とメモ。 【講義ノート】ケプストラムを利用する方法 ケプストラムを思い出しましょう。ケプストラムとは、音声波形の対数パワースペクトルのフーリエ変換です。式を再び書いておきます。思い出しましょう。 ケプストラム領域では信号源と伝達系が「和」になるのでした。実はピッチ(声の高さ)情報は、式の右辺第一項「信号源のケプストラム成分」に含まれています。 ln S(ω) を指す吹き出しには「ピッチ周波数情報は信号源のケプストラム成分に含まれている」とメモ。 【講義ノート】ケプストラムを利用する方法 (2) ・ケプストラム領域で信号源の作るピークを探す 左側の図は、ある母音の波形を示しています。横軸が時間で、周期 T_0 で繰り返しています。前と同じ波形です。 右側の図は、この音声波形にケプストラム分析を適用したものです。横軸はケフレンシーになります。 図の T_0 と書かれた付近に、極めて明確なピークが現れていることが分かります。前の2つの手法と比較して、その判定のしやすさが際立っていることを確認してください。 いいですね。ケプストラム。 以前、スペクトルの概形を求めるのにケプストラムが有効であるという話をしました。加えてケプストラムは、ピッチ抽出に対しても極めて有効な手法なのです。 黄色い吹き出しには「信号源のケプストラム成分」とメモ。 【講義ノート】ケプストラム処理の流れ 以前にも説明しましたが、ケプストラムは有用なので、もう一度処理の流れを説明しておきます。 音声波形をフーリエ変換しスペクトルを計算する。 各周波数成分のパワーを求め、パワースペクトルを計算する。 各周波数成分の自然対数をとり、対数パワースペクトルを計算する。 対数パワースペクトルのフーリエ変換をとり、ケプストラムを計算する。 『ケプストラムのピークより基本周波数(ピッチ周波数)を判定する。』  ここが今回のトピックでした。 ケプストラムのピークよりちょっと下にカットオフケフレンシー(q_cut)を決定する。 ケフレンシー (0 〜 q_cut) を通過させる低域通過リフタによって、音程成分を除去。 低域通過リフタを通したケプストラムに逆フーリエ変換を行い、スペクトル概形を得る。 【講義ノート】線形予測残差を利用する方法 さて、4つめの方法です。 音声の線形予測分析において、音声生成を「全極型」の伝達関数で表すことを説明しました。 そのとき「音声信号(S(z))を逆フィルタ(A(z))に通すと、インパルス列(E(z))になるはず」という話をしています。 インパルス列というのは、インパルスのところだけ値があって、あとは 0 。 だから、インパルス以外のほとんどの区間で、予測誤差が 0 に近づくように、線形予測係数を決めればよい、のでした。 さて、この「ほとんどの区間で 0」に注目。ほとんどじゃないところではどうなるか、インパルスのある所では、予測がうまくいかない。 よって、逆フィルタの計算を行うと、すべて 0 にはならずに、実際には、誤差からなる波形が観測されます。これを「線形予測残差」と言います。 ⇒ 実際には誤差(線形予測残差)が出る 線形予測誤差には、インパルスの周期情報がまるまる含まれているのです。 よって、逆フィルタによって、線形予測残差信号を計算しておき、短時間自己相関関数を求めれることによって、高精度のピッチ周波数判定を行う方法が考えられるわけです。 【講義ノート】線形予測残差を利用する方法 (2) 次のような手順で、音声波形からピッチ周波数を求めます。 1. 音声を線形予測分析し逆フィルタを求める 2. 音声を求めた逆フィルタに通し、線形予測残差を求める 3. 線形予測残差に短時間自己相関分析を行い、ピッチ成分を抽出する 線形予測残差を利用する方法は、ケプストラムを利用する場合と同等か、それ以上のピッチ判定精度を持っていると報告されています。 --