
ソフトウェアエンジニアのJameson Hodge氏が、肺や声帯、声道を物理モデルで再現して音声を作る「CHIMERA Vocal Synth」を公開しています。録音サンプルをつなぐ方式ではなく、発声器官を模した気道の空気の流れや圧力を計算し、ブラウザで舌や唇を動かしながら発話や歌唱を合成する仕組みです。ブラウザで動くデモに加え、ソースコードもMITライセンスで公開されています。
舌や唇の操作を声道の形と音に反映
CHIMERA Vocal Synthは、肺、声帯、口や鼻へ分岐する声道などをシミュレーションします。声道とは、声帯から口や鼻へとつながる音の通り道です。ブラウザには頭部の断面図が表示され、舌、唇、顎をドラッグして動かせます。
画面上では、気道内の圧力や空気の流れ、声帯の動き、音を周波数ごとに分けたスペクトルなどが、音声処理エンジンの状態に合わせて動きます。男性、女性、子どもの身体モデルを連続的に混ぜる操作にも対応しています。発声器官の形状、発音のための目標位置、標準の声の高さが、各身体モデルの比率に応じて変わる仕組みです。
この仕組みに関係するのが、声の音源と声道の働きを分けて考える「ソースフィルタモデル」です。声帯の振動などを音源とし、その音が声道によるフィルタを通って出力されるものとして扱います。声帯振動の基本周波数は知覚される声の高さにおおむね対応し、声道が共振する周波数である「フォルマント」は、母音などの音の特徴を形作ります。
CHIMERA Vocal Synthでは、舌や唇などの位置から気道の形状と断面積を求め、分岐した管のネットワークとして音の伝わり方を計算します。画面上で行う発声器官の操作は、この計算に使う形状へ反映されます。
英語の発話、歌詞付き歌唱、動物の声に対応
英語テキストの発話では、単語の発音を収録した「CMU Pronouncing Dictionary」を使い、辞書にない単語には文字から発音へ変換する規則を適用します。IPA(国際音声記号)による入力も発声器官の動きへ変換でき、画面には動作の時間的な組み合わせを表すジェスチャースコアと子音表が表示されます。
歌唱では、音の高さと長さを配置するピアノロールの各音符に歌詞を付けられます。母音の開始を拍に合わせるため、子音はその少し前に発音する仕組みです。口や舌の動きで打楽器音を作るビートボックスにも対応し、演奏用パッドと、音を順番に並べるステップシーケンサーを備えます。
動物のモデルは、スズメなどのさえずる鳥である鳴禽類、アザラシ、ワニ、ゾウの4種類です。鳥では声帯ではなく「鳴管」という発声器官を音源に使い、2つの声を同時に出すモデルを備えています。
録音素材やAI学習を使う歌声合成との違い
録音を利用する歌声合成にも、複数の生成方法があります。従来のVOCALOIDは、人の声の録音を音素ごとに分け、つなぎ合わせて歌わせる方式でした。一方、VOCALOID 6に搭載された「VOCALOID:AI」は、人が歌った音声を深層学習し、その学習結果を使って歌声を生成します。
AIの学習には、実在する歌手の録音ライブラリが用いられ、音色や歌い回しなどの特徴が学習対象となります。CHIMERA Vocal Synthは、シミュレーションした気道から音を作る設計です。Hodge氏は、実際の歌手の録音と照らし合わせて調整し、自然さの改善を進めているとしています。
Rustの共通エンジンをブラウザとCLIで実行
音声処理エンジンはプログラミング言語のRustで実装されています。ブラウザでは、コードをブラウザ向けの実行形式であるWebAssemblyにコンパイルし、音声処理を行うAudioWorklet上で動かします。同じエンジンは、コマンドで操作するCLIでもネイティブ実行でき、音声をWAVファイルへ書き出せる構成です。
ローカルでWebアプリを起動するには、Rust、WebAssembly向けのビルドターゲット「wasm32-unknown-unknown」、JavaScriptの実行環境・開発ツールであるBunが必要です。AudioWorkletの利用条件により、アクセスにはlocalhostまたはHTTPSを使います。
WAVの書き出しはCLIが担い、アプリ内のWAV書き出し機能は未実装です。また、CHIMERA Vocal Synth本体はMITライセンスですが、同梱するCMU Pronouncing Dictionaryやフォントなどの第三者ファイルには、それぞれのライセンスが適用されます。











