歴史的な音声合成ソフト「XKL」で遊ぶ(1) ~導入編~

1980年代から続く音声合成ソフト XKL を使ってみよう!という記事の第1弾、導入編です。
(記事は XKLカテゴリ にまとめてあります)


はじめに

ここ数年で、VoiceVox や Synthesizer V に代表される高品質なAI音声合成ソフトが広く使われるようになりました。もはや肉声と区別できない領域に達しているソフトもありますが、ボカロの世界でよく言われるように「リアルさだけがすべてではない」ということを常々思っています。

機械音声を創作するうえで、そもそも声として聞こえるとはどういうことなのかという基本に立ち返ったうえで、人間の職人技によって調声できる「筆」のような道具が欲しいと思いました。機械学習による音声合成とは真逆の方向性です。そこで、昔ながらの合成方式であるフォルマント合成と呼ばれる技術を考えてみます。


フォルマント音声合成の歴史を調べると、「Klatt Synthesizer」「KLSYN」と呼ばれる音声合成システムが登場します。

この「Klatt Synthesizer」というのは、Dennis H. Klatt 氏 (米MIT) が1980年代に発表した音声合成システムで、いわばレジェンド的なソフトウェアです。古典的な音声研究において有名ですし、DECtalkのベースにもなりました。ついでにいうと、本ブログで10年以上前に書いた記事「C言語で音声合成もどき」も、この Klatt Synthesizer が元ネタだったりします。


さてこの Klatt Synthesizer ですが、私はいままで論文でしか見たことがありませんでした。しかし調べてみると、本家Klatt Synthesizerが2025年現在でも使えるようなのです。

サイト: The xkl project

正確にいうと様々存在するバリエーションのひとつのようですが、Klatt氏が実装した KLSYN88 を拡張するかたちで作られていることから、私が知るなかでは最もオリジナルに近いものだと思っています。

このソフトにいろいろと数値を打ち込んでやることで、本物のKlatt Synthesizerによる音声合成が再現できてしまう。これはなかなか面白そうです。

というわけで今回はXKLを使った音声合成で遊んでみます。



インストール

XKLはバイナリが配布されていないので、ソースコードから自分でビルドする必要があります。とはいえインストールマニュアルが GitHubリポジトリの docs/ ディレクトリに用意されているので、この手順通りに進めればOKです。

対応プラットフォームは Windows, MacOS, Linux だそう。今回は Windows 11 で動かしました。インストールマニュアル曰く Windows 上で動かすには Cygwin を使うようです。最近ならWSLで代用できそうな気もしますが、マニュアル通りに進めることにしました。


参考までに、私の環境でのインストール手順を載せておきます。

  1. Cygwinのサイト (https://www.cygwin.com/install.html) で入手したインストーラを実行します。
    • インストール中にダウンロードサーバーが選べます。基本的にどれを選んでもOKですが、場所が近いサーバーを選ぶと速くダウンロードできると思います。今回は ftp.jaist.ac.jp にしました。
    • 追加パッケージを選ぶ画面が出てくるので、lynx を追加します。検索欄に「lynx」と入力すると出てきます。「Skip」となっているところを選んで、インストールするバージョンを選びます。
  2. Cygwinのターミナルを起動して、コマンドを順に実行します。
    • lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
    • install apt-cyg /bin
    • apt-cyg install wget cygwin-devel gcc-core libXmu-devel libXmu6 libXmuu1 libXt-devel libXt6 make makedepend motif libXm-devel xorg-server xinit libguile2.2_1 libgc1 libltdl7 libmpc3 libisl23 libX11-devel xorgproto binutils libSM-devel libICE-devel libXpm-devel mingw64-x86_64-runtime libXm4 xterm libfontconfig1 libXpm4 libXinerama1 libXft2 libXaw7 libICE6 libSM6 libXrender1 libjpeg8 sox libsox3 libFLAC8 libgsm1 libid3tag0 libmad0 libogg0 libmp3lame0 libopus0 libopusfile0 libsndfile1 libtwolame0 libvorbis0 libvorbisenc2 libvorbisfile3 libwavpack1 libgomp1 libguile3.0_1 libcrypt2 libunistring2 libX11_6 libxcb1 libXau6 libXdmcp6 libxcb-xfixes0 libxcb-util1 libxcb-image0 libxcb-icccm4 libxcb-ewmh2 libxcb-composite0 libtirpc3 libpixman1_0 libXfont2_2 libfontenc1 libfreetype6 libgssapi_krb5_2 libxcb-shm0 libbrotlidec1 libpng16 libk5crypto3 libkrb5_3 libkrb5support0 libcom_err2 libbrotlicommon1
      (注: このコマンドで指定しているパッケージ名は、マニュアルに書かれているものから変更しています。私の環境だとパッケージのバージョン指定がうまく認識されなかったので省略しました。)
    • コマンドの実行が終わったら、もう一度 Cygwin のインストーラを立ち上げて追加パッケージを選ぶ画面まで進み、「Pending」になっているパッケージをインストールします。
  3. XKLのGitHubのページからzipファイルをダウンロードします。
    • 「Code」ボタンから「Download ZIP」を選んでダウンロードします。
    • ダウンロードしたzipファイルを展開したら、src/xkl_windows のフォルダをまるごと C:/cygwin64/home/(ユーザ名)/ にコピーします。
  4. XKLをビルドします。
    • スタートメニューからCygwinターミナルを開いて、以下のコマンドを順に実行します。
    • cd ~/xkl_windows
    • make clean
    • make
    • 何事もなく「make[1]: Leaving directory '/home/(ユーザ名)/xkl_windows/xkl'」と表示されればビルド完了です。

以上でインストールは完了です。



起動

インストールできたので、ツールを起動しましょう。

大きく分けるとGUI版とコマンドライン版があります。以降ではGUI版である xkl を使います。

  • xkl
    GUIツール (X Window System上で動作する統合型ツール)
  • syn
    合成パラメータから音声波形を生成するコマンドラインツール
  • lspecto
    スペクトログラムを作成するコマンドラインツール
  • raw2kl, kl2raw, mac2kl, kl2mac, ms2kl, kl2ms, mat2kl, kl2mat
    ファイル形式の変換ツール


GUI版を起動する前に、Cygwin の X Window System を立ち上げておく必要があります。

スタートメニューから「XWin Server」を起動します。


起動すると(ひっそりと)タスクトレイにアイコンが表示されます。X applications menuのアイコンをクリックしてメニューを開いたら、XTermを起動します。


XTerm が開くので、以下のコマンドを実行します。

cd ~/xkl_windows/xkl

./xkl-3.2  ../WAVEFORMS/heavens.wav

ここではサンプル音声である「heavens.wav」を開きます。

罠その1:起動時は必ず.wavファイルを開く(マニュアル曰く、起動時にコマンドライン引数で何らかのファイルを渡しておかないと、表示がバグるケースがあるようです)

罠その2:XKLで扱う .wav ファイルは独自形式であることに注意(いわゆる Microsoft WAV とはまったく異なる独自形式です。そのため、Audacity等の一般的なソフトで書き出した .wav ファイルはそのままだと読み込めません。XKL用の .wav へ変換するには、同梱の ms2kl というツールを使う必要があります。) 

すると……


起動できました。なかなかクラシックな見た目。

ここからは、このGUIツールを使って音声合成をやってみます。


(2) ~基本操作編~ へ続きます。

コメント

このブログの人気の投稿

基本波形の生成

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

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