N.Yamazaki's blog

主に音声合成について思ったことを書いてみようと思います。
<< AquesTalk2 すべてのプラットフォームでFreeに! | main | Mac 共有ライブラリの公開シンボルを制限する >>
AquesTalk2 Linuxを使ってみる - Linux の音声合成コンソールアプリ SayAqTk2 -

#追記 2018/02  SayAqTk2の公開は終了しました。AquesTalk2 Linuxライブラリ内のサンプルプログラムをビルドして同様の機能を実現可能です。

AquesTalk2 Linuxは、Linux上で動作する音声合成ライブラリで、非営利の個人利用なら無償で利用できます。
ただ、これはライブラリとして配布されているので、何らかのアプリから呼び出す以外、そのままでは使うことはできません。
そこで、AquesTalk2をコンソールアプリケーション化することで、スクリプトを書くだけで音声合成が出来るようにしてみます。
以下に、Linux環境にAquesTalk2 Linuxをインストールするところから、これをコンソールアプリケーション化して動作を確認するまでの手順を示します。

 

AquesTalk2のダウンロード
AQUESTのダウンロードページにアクセスして、最上部のAquesTalk2からAquesTalk2 Linux のパッケージをダウンロード。
使用する環境が32bitなら(IA-32 32bit)、64bitなら(x86-64 64bit)のほうを選択。ちなみに、現在のパッケージ名はaqtk2_lnx32_100125.tgz、aqtk2_lnx64_100125.tgz。
なお、仕事で使う場合はライセンス規定のカラムのHTMLアイコンをクリックして内容を確認しておく。
ダウンロードしたパッケージは、一時的に、任意のフォルダ名に保存。
ここでは、ユーザのホームディレクトリに"saykana"フォルダを作ってそこに保存した。

AquesTalk2ライブラリの配置
以降、作業はすべてコンソール上にて行う。
ダウンロードしたパッケージを展開。

$ cd ~/saykana
$ tar zxvf aqtk2_lnx32_100125.tgz


このあとの作業はsu権限で実行する必要が有るので、suで入るか、sudoをコマンドの頭につけるかのどちらかで実行。(ここではsudo)
なお、64bit環境の場合、配置するディレクトリは、ディストリビューションによって/usr/lib64 /usr/lib の種類があるようだ。
もし、/usr/lib64のディレクトリが存在するなら、そちらに配置するように以下のコマンドの/usr/libを/usr/lib64に置き換える。

 

$ cd aquestalk2
$ sudo cp libAquesTalk2.so.1.0 /usr/lib
$ sudo ln -sf /usr/lib/libAquesTalk2.so.1.0 /usr/lib/libAquesTalk2.so.1
$ sudo ln -sf /usr/lib/libAquesTalk2.so.1 /usr/lib/libAquesTalk2.so
$ sudo /sbin/ldconfig -n /usr/lib


これで、アプリケーションからAquesTalk2ライブラリを呼び出すことが出来るようになった。

コンソールアプリ化
次に、AquesTalk2の機能をコンソールアプリとして使うためのプログラムをインストールする。
プログラムSayAqTk2(32bit,64bit)をここからダウンロードし、展開後、/usr/local/bin に保存。インストールはこれだけ。
なお、今回のコンソールアプリ化したAquesTalk2のコマンドは、SayAqTk2。

 

 

$ cd ..
$ tar zxvf sayaqtk2_32.tgz
$ sudo cp SayAqTk2 /usr/local/bin
$ sudo chmod 755 /usr/local/bin/SayAqTk2

 


SayAqTk2のテスト
まずは、SayAqTk2が正しくインストールされているかチェック。
以下のコマンドでSayAqTk2の使い方を表示。

 

 

 

$ SayAqTk2 -h


もし、文字化けしたら?
SayAqTk2のデフォルト文字コードはUTF-8なので、環境がEUCの場合は文字化けする。その場合は、次のように文字コード変換して表示すればよい。

 

 

$ SayAqTk2 -h | nkf -e

 


音声ファイル生成
発声内容は「かな文字列」で指定。漢字は使えない。
アクセントなども細かく指定できる。この詳細は「音声記号列仕様」を参照。

 

 

 

$ SayAqTk2 こんにちわ。 > zzz.wav


入力文字コードの変更
デフォルトの入力文字コードはUTF-8なので、文字コードがEUC環境では上のコマンドは失敗する。
この場合は、-kオプションで、文字コードをEUCに切り替える。
-kオプションには、sjis, euc, utf8, roman が指定可能。

 

 

$ SayAqTk2 -k euc こんにちわ。 > zzz.wav

 


サウンドデバイスに出力
サウンドデバイスがついている環境であれば、大抵、以下のコマンドで再生出来る。

 

 

 

$ SayAqTk2 こんにちわ。 | play -t wav -


SayAqTk2が出力する音声データのサンプリング周波数は、8KHzである。
環境によっては、きれいに再生されない場合があるかもしれない。その場合は、一旦ソフトウェアでサンプリング周波数変換を行ってからサウンドデバイスに送ると、ずっときれいに聞こえることがある。
次にサンプリング周波数を32KHzに変換してからデバイスに出力する方法を示す。

 

 

$ SayAqTk2 こんにちわ。 | sox -t wav - -r 32000 -t ossdsp /dev/dsp

 


応用編
以下に、コマンドオプションの応用をいくつか示す。
入力をファイルで指定(最初の一行目だけが変換)

 

 

 

$ SayAqTk2 -f konchiwa.txt | play -t wav -


入力をパイプで

 

 

$ echo こんにちわ。| SayAqTk2 -f - | play -t wav -


声種を変更
声種を規定するPhontファイルは、先にダウンロードしたAquesTalk2パッケージのphontディレクトリに三種含まれている。
aq_f1b.phont 女声
aq_rm.phont 女声(デフォルトと同じ)
aq_m3.phont 男声
Phontファイルは、別途PhontDesignerツールにより、ユーザがカスタマイズした声種のものを作ることができるので、別途入手することもできる(かも)。

 

 

$ SayAqTk2 -v phont/aq_f1b.phont こんにちわ。 | play -t wav -


話速を変更

 

 

$ SayAqTk2 -s 80 -v phont/aq_f1b.phont ゆっくりしていってね? | play -t wav -

 


#それでは、スクリプトを書くなり、いろいろと遊んでみてください。

 

 

| AquesTalk | 14:21 | - | - |
PROFILE
Follow
CATEGORIES
LATEST ENTRIES
SEARCH THIS SITE
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
SONY MDR-CD900ST
SONY MDR-CD900ST (JUGEMレビュー »)

普段これで開発しています。
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND