フォルマント合成をちょっとかじる

公開:2015-04-22 21:19
更新:2020-02-15 04:37
カテゴリ:デジタル信号処理

下記に載っていたフォルマント合成方式で歌を歌わせるソースコードをコンパイルして試してみた。

http://hand-onlooker.blogspot.jp/2012/05/3.html

ただこのままでは動かず、先頭に#define _USE_MATH_DEFINESを追加することが必要だ。作者による動画も公開されている。

http://www.nicovideo.jp/watch/sm15973810

音であるがラ行が聞き取りにくく、「さ」とかのブレスノイズが混ざる音のノイズがちょっと違和感がある。でもちゃんと「チューリップ」には聞こえる。

この音はどこかで聞いた音だ。「スピークアンドスペル」だ。あとはクラフトワークが使用したあのテキサスインスツルメンツのランゲージ・トランスレータにとても似ている。ランゲージ・トランスレータの音はKraftwerkのNumbersという曲で聴くことができる。

そのものの動画もあったので貼っておく。

フォルマントというのはWikipediaによれば、

言葉を発している人の音声のスペクトルを観察すると分かる、時間的に移動している複数のピークのこと。周波数の低い順に、第一フォルマント、第二フォルマント…というように数字を当てて呼び、それぞれF1, F2とも表記する(第0フォルマント、F0を数える場合もある)。

と書いてあった。フォルマント合成とは人間のフォルマントをシミュレートし、言葉をしゃべらせる方法である。もう少し具体的にいうと元波形をBPFで加工しBPFのパラメータを可変させることでフォルマントをシミュレーションする。元波形は複数の波形を使用して、発声したい言葉に合わせて変えたりミックスしたりするようだ。上のソースコードではRosenburg波とGaussNoise波が使われ、IIRフィルタによるBPFにてフォルマントをシミュレートしていた。