Rosenberg波を用いた多重搬送波周波数変調方式によるフォルマント合成
こんばんは、真城亜です。Twitterの方で公開したPureDataパッチのダウンロードを可能にしました。
Patchのダウンロードはこちら
このパッチはフォルマント合成のパッチで、声帯音源波の一種であるRosenberg波を用いています。基本的には多重搬送波(Multi Carrier)周波数変調(Frequency Modulation)でフォルマントを合成する試みです。このパッチの特徴として、声帯の開き具合を可変的に制御しながら、変調波1つと搬送波4つでフォルマントを合成できます。細かな仕様には初期位相が制御できる(各キャリアの周波数のうねり具合が制御できる)ことなども挙げられます。
動作はPureData Vanilla 64bit Windowsのみで確認していますが、PureData Vanillaなら動作するはずです。PurrData及びPureData Extendedでの動作は未確認です。
ファイルはZipファイルに圧縮されており、フォルマント合成のパッチだけでなく、Rosenberg波をuntilで生成しtabosc4~で鳴らすパッチも同梱しました。このパッチの再配布について作者は責任を負いませんが、再配布及びパッチの改良は良識の範囲内及び自己責任でご自由にどうぞ。
解説
各パラメーターについて解説します。exprの第2・第3inletについてです。T1と書かれた部分がありますね。これは 波形の上がる部分の長さです。次に、T2と書かれた部分は、波形の下がる部分の長さです。そして、T1とT2を合わせた部分が声道が開いている時間となります(ここまでは別サイトで自分が執筆した文章です)。
次に、RATIOについてですが、これはModulatorFreq(変調波の周波数)に追随して変調の度合いを変えるために比率を入力します。CarroerFreqは搬送波の周波数です。
PhaseOffsetでは、用意された搬送波同士の初期位相が制御できる(各搬送波の周波数のうねり具合が制御できる)ようになっています。位相ですので、0~1の範囲の小数値を入力してください。
Gainは用意された搬送波同士の音量を制御します。各搬送波の振幅の合計が1を超過しないように設定してください。1を超過した場合、スピーカー等を破損することが考えられます。
ナンバーボックスの各パラメーターについての解説は以上となります。line~に入力するメッセージボックスを書き換えることで、エンベロープの時間が変更できますが、パッチ本体を書き換えてしまうことになるので、注意してください。
本記事で取り上げているのは、声帯音源波の一つである「Rosenberg波」ですので、以下の文献を参考にされると、より理解が深まると思います。
- A. Rosenberg (1971): "Effect of glottal pulse shape on the quality of natural vowels." Journal of the Acoustical Society of America 49: 583–590.
- 音源波形の違いが電気喉頭音声に与える影響の検討
- 音声情報処理-Speech Information Processing- ローゼンバーグ波 (Rosenberg wave)