基本周波数についてのまとめ

本稿では基本周波数についての予備知識を簡単にまとめることにする。
【2020/11/20】Pythonによる実装例を追加(ページ最下部にリンク有り)

そもそも音声分析とは

  • 音響特徴量(音高,音色等)の抽出
  • 音声合成音声認識等の基礎技術
    • 音声処理における前段処理


  • 分析結果が後段の音声処理に与える影響大

基本周波数(F0)とは

  • 音声の周期性を表現,音高を司る音響特徴量
    • F0の有無 ⇒ 音声は有声音と無声音に大別
    • 音高は様々な情報を表現
      • 言語情報 (単語のアクセント等)
      • 話者情報 (男女の声の高さの違い等)
  • F0の正確な抽出は困難
    • 音声波形は準周期信号(声帯振動の準周期性)
    • 収録音声には雑音が混在
    • 有声音におけるF0の変化範囲は広域

このようにF0は音声のアプリケーションを考える上でも重要なパラメータであると同時にその抽出は難しい。そこで以下に述べるような様々な手法が提案されてきたわけである。

基本周波数の推定手法

古典的な手法を列挙する。(古井著、『新音響・音声工学』125ページより一部抜粋)
もちろんこれが全てではないが、抽出の精度的にも今ではそれほど用いられない?(というか自分がそこまで知らない)

推定手法 説明
波形包絡法 音声波形の包絡を強調しピークを検出
零交差法 零交差数により繰り返しパターンを検出
自己相関法 波形の自己相関関数のピークを検出
変形相関法 LPC分析の残差信号の自己相関関数、残差信号のローパスフィルタと極性化により演算の簡略化が可能
直接線形予測法 低次のLPC分析により直接F0を推定
平均振幅差関数法 波形の平均振幅差関数のピークを利用
ケプストラム法 パワースペクトルの対数の逆フーリエ変換によりスペクトル包絡と微細構造を分離する。
ピリオドヒストグラム 高調波スペクトルのヒストグラムピークを検出し,ピークとなる周波数の公約数により推定

以下、上記の表以外の手法をまとめる(間違いがあればコメントを)。

A Robust Algorithm for Pitch Tracking (RAPT)

  • 広く用いられているF0推定手法
    • F0を系列として推定 ⇒ 頑健な推定が可能
    • 動的計画法を実行
      • F0候補コスト :正規化自己相関,調節パラメータ
      • 遷移コスト :振幅・スペクトルの変化量,調節パラメータ
  • SPTKからも利用可能
    • pitchコマンド('-a 0' オプション)
  • 文献
    • D. Talkin, "A Robust Algorithm for Pitch Tracking (RAPT)," in Speech Coding & Synthesis, W. B. Kleijn and K. K. Pailwal (Eds.), Elsevier, pp.495–518, 1995 (PDF).

A Sawtooth Waveform Inspired Pitch Estimator (SWIPE)

  • 音声信号と鋸波の調波成分の相関を利用
  • C言語による実装あり(BSDライセンス
    • 彼による実装はオリジナルと区別してSWIPE'と呼んで欲しいらしい(彼曰く)。
  • SPTKからも利用可能
    • pitchコマンド('-a 1' オプション)
    • 上記C言語実装を内部でwrapする形で利用
  • 文献
    • A. Camacho, "SWIPE: A Sawtooth Waveform Inspired Pitch Estimator for Speech And Music," Ph.D. Thesis, University of Florida, 2007 (PDF).

STRAIGHT

一応まとめると、

  • 和歌山大学の河原先生がオリジナルの開発者
    • 音声のピッチや声質、体の大きさなどの様々な属性を操作するためのツール
    • 自然音声とほとんど区別できない高い品質を実現するために、聴覚モデルと信号処理の最新の成果を取り入れている
    • 2007年に森勢将雅 氏(現在:山梨大学)が発明したTANDEMに基づいて、STRAIGHTが根本的に再構築されてTANDEM-STRAIGHTとなる
    • 音声知覚の研究用のツールとして開発。 1930年代から本格化した膨大な音声知覚研究の蓄積を活かして、その延長上に新しい研究を積み上げることができるように、 音源とフィルタという概念に基づいた構造をしている
  • 基本周波数の推定だけでなくスペクトル包絡なども抽出
    • 上記概要に述べたことが目的であり、基本周波数の抽出のみが目的ではない(重要)
    • 抽出するのは「基本周波数(音の高さ)」、「スペクトル包絡(音色)」、「非周期性指標(声のかすれ具合)」
    • HMM音声合成ツールキット (HTS) でも利用
      • メルケプストラム法にもとづくソースフィルタモデルよりも音質のよい音声を合成可能(より優れた分析合成系)
  • 音声の精密な制御が可能(例:音声モーフィング)
  • 公式ページ

WORLD

一応まとめると、

  • 山梨大学の森勢先生がオリジナルの開発者
  • 基本周波数の推定だけでなくスペクトル包絡なども抽出
    • 音声の分析合成が目的であり、基本周波数の抽出のみが目的ではない(音声分析変換合成システム)
    • 抽出するのは「基本周波数(音の高さ)」、「スペクトル包絡(音色)」、「励起信号」であり、それぞれDIO、CheapTrick 、PLATINUMという手法が利用される。
  • 子音の制御は困難
  • 基本周波数推定法DIOはノイズに弱い
  • 公式ページ
  • 文献

WORLDについての情報は以下から抜粋した。一読すれば参考になるのではないか(非初心者向け?)

WORLDとSTRAIGHTの違い - Togetter

REAPER

次回の記事で紹介。

YIN

  • 相互相関関数に基づく特徴量に対し、零点 or 零に近い地点の集合から極小値を与える地点をF0検出に利用(実際にはもう少し色々)
  • 文献
    • A.de Cheveign´e, and H.Kawahara, “YIN, a fundamental frequency estimator for speech and music,” JASA, vol.111(4), pp.1917-1930, 2002.

TEMPO

  • フィルタバンク出力の瞬時周波数とフィルタの中心周波数から求まる不動点を利用して推定
  • 文献
    • H.Kawahara, H.Katayose, A.de Cheveign´e, and R.D.Patterson, “Fixed point analysis of frequency to instantaneous frequency mapping for accurate estimation of F0 and periodicity,” Proc.Eurospeech99, pp.2781-2784, 1999.

その他

きっと色々あるので調べてみて欲しい。というか教えてくれ。

Pythonによる基本周波数推定の実装例

  • YIN
  • Probabilistic YIN
  • 自己相関法
  • 変形自己相関法
  • ケプストラム法
  • DIO

おわりに

今回ざっくりと基本周波数についてまとめた。
確立された抽出方法は未だ存在せず、様々な手法が提案されている。
論文を読むなどしてそれらを追ってみるのもよいが、ソースコードを入手するなりスクリプトを書いたりして実際に処理を試してみるとよい。