読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

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

デジタル信号処理

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

出歯亀日記: 音声合成(3)

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

www.nicovideo.jp

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

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

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

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

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

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