歴史的な音声合成ソフト「XKL」で遊ぶ(2) ~基本操作編~

XKLで遊ぶ記事の第2弾、基本操作編です。



XKLで 母音「あ」を合成してみる

使い方を紹介しつつ、母音「あ」を合成するところからはじめてみます。

XKLは、使いやすさに全振りした現代のソフトウェアと比べると、ちょっと手ごわい感じがします。私自身も最初は意味不明に感じて投げ出しそうになったのですが、試行錯誤しているうちに使い方がわかってきました。


さてこのソフト、XKLでできることは大きく2つに分かれます。

  • 音声合成
    例:パラメータ(フォルマント情報等)を入力することで、音声波形を合成する。
  • 音声分析
    例:録音した音声ファイルから、フォルマント周波数を調べる。

音声合成だけでなく音声分析もできてしまう高機能さゆえに、少しわかりにくくなっている気がします。XKLを起動してなんとなく使おうとすると、分析機能ばかりが目に入ってきて、「一体どこを操作すれば音声合成できるの…?」と迷子になってしまいがちです。これらを意識的に区別するとわかりやすいと思います。



音声分析モードで起動する

我々がやりたいことは音声合成なのですが、起動直後は音声分析に特化したモードになっています。

XKLは起動時になんらかの音声ファイルを指定する必要がありますが、とりあえずは同梱されている「test.wav」を開くのがよいと思います。

./xkl-3.2  ./test.wav

これで音声ファイルが開きます。ちなみにこの test.wav は Klatt Synthesizer で合成された音声です。


いろいろな操作ができますが、必要最低限の機能をご紹介します。

  • 「左クリック」または「Alt+左クリック」で時刻カーソルが動かせます。
  • 「中ボタンクリック」または「pキー」で音声が再生できます。
ちなみに私の環境だと再生終了後に謎のグリッチ音が入るのですが、実用上は問題にならないので無視しています。

この時点では、まだ音声分析しかできない状態です。ここから音声合成に入っていきます。



音声合成モードに入る

音声合成ができる状態にするには、メニューから「Synthesize」を実行します(または「Shift+Y」キーを押す)。

そうするとダイアログが出てきます。

これがすこしぶっきらぼうな書き方で分かりにくい……。

聞かれていることは要するに、
「音声合成モードのデータを用意するにあたって、デフォルト設定で新規作成するか、過去に作成したパラメータのファイルを開くか、どちらにしますか?」
ということです。

まっさらな新規状態から始めたい場合は「defaults」ボタン、もし保存済のデータがあってそこから始めたい場合は「.doc file」ボタンを選びます。

ここでいきなり .doc ファイルというものが出てきましたが、これはXKLの音声合成パラメータ(フォルマント周波数等)がまとめられた独自形式のテキストファイルのことです。このあと様々なパラメータを設定していくわけですが、その設定内容を呼び出したい場合に .doc ファイルを使います。

今回は新規状態からはじめたいので、「defaults」を選びます。


すると、「syn」という新しいウィンドウが開きます。

これらが音声合成をするうえで使うことになるコマンドのメニューです。

このウィンドウから、全部で9種類のコマンドが実行できます。

今回は「p」「s」「c」、次回は「d」「v」について解説します。



p: パラメータ値を確認する

まずは現在のパラメータ設定を調べるために、「p  PRINT (screen) synthesis parameter default values」をダブルクリックします。

ウィンドウに長めのリストが表示されます。


XKLの音声合成エンジンには全部で63個のパラメータがあります。それぞれ「DU」「UI」といったアルファベットの略称がついていて、それらの設定値が示されています。(各パラメータの意味は今後の記事で説明したいと思います)

現在の設定値は「VAL」列で示されている値です(下図の緑枠)。VALの両隣にある値は、それぞれ設定できる最小値・最大値の範囲です。

ちなみに、パラメータには2種類あります。一定値 (constant) と、時間に応じて変化させられるもの (variable) です。一定値かどうかの確認がこの画面でできます。図の青枠部分で「C」と表記されているパラメータが一定値です。



s: 現在の設定で音声合成をする

コマンドメニューの「s  SYNTHESIZE waveform file, save everything」をダブルクリックすると、音声合成ができます。

音声合成の結果は、新しい .wav ファイルとして保存されます。ファイル保存ダイアログが開くので、適当なファイル名をつけます。wav ファイルを保存すると、同時にパラメータ設定が記録された .doc ファイルも保存されます。


これが合成結果です。先ほどの test.wav とは異なる波形になりました。再生すると「あ」と「う」の中間のような合成音が流れます。



c: パラメータ値を変更する

もっと母音「あ」らしい音にしたいので、フォルマントの設定値を変えてみましょう。

ここではフォルマント周波数とバンド幅を以下のように設定してみます。
(参考: KLSYN Manual p.17 Table IV [ɑ])

  • F1 = 700 Hz (第1フォルマントの周波数)
  • B1 = 130 Hz (第1フォルマントのバンド幅)
  • F2 = 1220 Hz
  • B2 = 70 Hz
  • F3 = 2600 Hz
  • B3 = 160 Hz


コマンドメニューの「c  CHANGE default value for a synthesis parameter」をダブルクリックすると、「Par:」と表示された小窓が表示されます。ここに変更したいパラメータを入力します。

次に、パラメータ値を入力します。

この操作を B1, F2, B2, ... と同様に繰り返して設定していきます。

「p」コマンドで確認するとパラメータ値が反映されていることがわかる


設定が終わったら、コマンドメニューから「s」コマンドを選んで、音声を合成します。

再生すると、良い感じに合成された「あ」が流れます。


XKLによる音声合成のざっくりとした流れは以上です。



おまけ: 合成した .wav を他のソフトで開けるようにする

最後に、XKLで作成した音声を他のソフトで開けるようにする変換方法をご紹介します。
XKLを終了して、ターミナルに戻り、以下のコマンドを実行します。

../utils/kl2ms <保存ファイル名>

たとえば保存したファイルが「20250103.wav」なら、

../utils/kl2ms 20250103

のように実行します。
これで「20250103_ms.wav」という一般的なWAV形式のファイルが作成されます。

変換結果をAudacityで開いたところ




以上が基本操作編でした。

ここでは音声合成パラメータが一定の場合だけを扱いましたが、実際に音声合成をするとなると、時間が進んだときに値を変化させたくなります。

次回は、時間変化するパラメータを扱っていきます。

(3) ~時変パラメータ編~ へ続きます。

コメント

このブログの人気の投稿

基本波形の生成

(1)C言語で音声合成もどき ~WAVファイルを生成する~

(2)C言語で音声合成もどき ~母音の生成~