音の三大要素について 第三回
この記事を書いたのは 山岡さん.
0. 前回の記事の内容
前回は、音の高さを表す指標とその数値化の方法について説明しました。まだご覧になってない方はぜひこちらから読んでみてください。
1. この記事から理解できることは?
1. 「音の高さ」を表す指標について
2. 「音の高さ」を音声波形から数値化する方法
2. 音の高さを表す指標
音の高さを表す指標はPitchがよく知られています。
Pitchは「音の高さ」と共に,日本工業規格 JISの中に音響用語として,下記 のように定義されています。
定義:聴覚にかかわる音の属性の一つで,低から高に至る尺度上に配列される。
備考 1:複合音の音の高さは,主として刺激の周波数成分に依存するが,音圧,波形にも関係する。
備考 2:音の高さは,人がその音と同じ高さであ ると判断した純音の周波数で表すことがある。純音の音圧レベルは,別途指定する。
3.音の数値化
では音声波形からどのようにして音の高さを数値化するのでしょうか?
音の特徴を表現した数値を音響特徴量といいます。音には様々な音響特徴量が存在しますが、音の高さの数値化に用いる音響特徴量は、基本周波数($${f_0}$$)です。
つまり、音声波形からPitchを算出することは、音声波形から$${f_0}$$(Hz)を推定することと言えます。
ただ、$${f_0}$$を正確に抽出することは困難です。(なので様々な手法が存在しています。)
$${f_0}$$の正確な抽出は困難な理由としては以下が挙げられます。
音声波形は準周期信号(声帯振動の準周期性)
多くの音声には雑音が混在している
有声音におけるF0の変化範囲は広域
ではどのように音声波形から$${f_0}$$するのでしょうか?
基本的なアイディアとしては
波形の繰り返しに注目(時間領域)
スペクトルに注目(周波数領域)
の2つが存在します。
以後それぞれの手法に関してまとめていきます。
3-1. 波形の繰り返しに注目した手法(時間領域)
波形の繰り返しとは周期のことを表しています。
周期とは一つの波形が伝わるのにかかる時間をことを意味します。(図1参照)
ある波形の周期が$${T}$$(秒)だった際に$${f_0}$$は次式で求めることが可能である$${f_0=\frac{1}{T}}$$(Hz) -(1)(1)式を用いて$${f_0}$$を予測する際の問題は次のような問いとして解釈することが可能です。
どのようにして音声波形から周期$${T}$$を求めるのか?
周期$${T}$$を求める方法として
Peak to Peak法
Zero Cross法
自己相関関数の応用
などがあります。
各手法の概要について本記事では述べます。
Peak to Peak法
Peak to Peak法は波形にはPeakが存在していることに注目しています。
この手法では、波形のPeak部分を追いかけることにより周期を推定しています。
この手法では音声とノイズなどを分けるために閾値を設定する必要があり、この値の設定が精度に依存しています。
Zero Cross法
Zero Cross法は波形には正負の値が変わる瞬間が存在していることに注目しています。
この手法では、正負の変わるポイント の追いかけることにより周期を推定しています。
特徴としてノイズが含まれている音声では正負の変わるポイントが変わる場合もあるため、ノイズを含んでいる音声に対しての精度が特に低いです。
自己相関関数の応用
自己相関係数とは、ある信号がそれ自身を時間シフトした信号とどれくらい一致するかを測る尺度です。この値は-1~1までの範囲の値をとり、1であればまったく同じ波形であることを意味します。
自己相関関数の応用は、一周期分遅れた周期波形は前の周期波形と一致する (r≈1)のはずであることに注目した手法です。
自己相関によるPitch推定は低周波数域ほど高感度です。
3-2. スペクトルに注目した手法(周波数領域)
スペクトルとは音声波形に対してフーリエ変換したものです。
フーリエ変換とは、時間領域(wavファイルのような横軸を時間、縦軸を振幅としたもの)の値を周波数領域(横軸を周波数、縦軸を振幅としたもの)に変換する手法の1つです。
スペクトルを音声波形から算出するアルゴリズムは様々存在します。例えば、
離散フーリエ変換 (DFT: Discrete Fourier Transform)
高速フーリエ変換 (FFT: Fast Fourier Transform)
短時間フーリエ変換(STFT: Short-Time Fourier Transform)
wavelet変換
などです。
各手法の概要について本記事では述べます。
離散フーリエ変換 (DFT: Discrete Fourier Transform)
時間領域の値が離散値で周波数領域の値が連続地である場合に用いる手法です。離散フーリエ変換は時間領域全体に対して適用されるため、フーリエ変換後の周波数領域に時間情報はありません。
高速フーリエ変換 (FFT: Fast Fourier Transform)
高速フーリエ変換は、離散フーリエ変換をコンピュータで高速に計算する手法です。得られる値は離散フーリエ変換と同じになります。
短時間フーリエ変換(STFT: Short-Time Fourier Transform)
短時間フーリエ変換の特徴は時間領域を区間的にフーリエ変換することです。それにより、時間変化する音声の分析を行うことが可能になります。短時間フーリエ変換後の値は「時間・周波数・振幅」の三次元の値です。
この手法を用いることにより、音素や文字ごとの声の高さを算出することが可能となります。
wavelet変換
この手法でもフーリエ変換で残せない時間情報を残すことが出来ます。
また計算量もフーリエ変換より少ないという特徴があります。
他にも、スペクトラムの性質に注目した手法として
Harmonic Summation
ケプストラム分析
などによっても$${f_0}$$を推定することが可能です。
4.まとめ
・音の高さを表す指標はPitch
・Pitchを数値化する際に用いる音響指標は$${f_0}$$
・$${f_0}$$を正しく推定するのは難しい
(≈どの手法を用いるかは扱う音声データの性質によって選択)
・$${f_0}$$を推定する基本的アイディアは波形の繰り返しに注目(時間領域)するか スペクトルに注目(周波数領域)するかの2つである
次回の内容
次回の記事では、第二回で紹介した音の大きさをpythonを用いて算出します。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?