Festival
Festival は CSTR (Centre for Speech Technology Research) で開発された汎用の多言語音声合成システムです。
Festival には音声合成システムを作成するための汎用フレームワークと様々なモジュールのサンプルが入っています。それらをまとめて、Festival は API を通して完全なテキスト読み上げを提供します: シェルや、Scheme コマンドラインインタプリタ、C++ ライブラリ、Java、Emacs インターフェイスなどから使うことが可能です。Festival は多言語に対応しています (現在利用できるのはイギリス英語、アメリカ英語、イタリア語、チェコ語、スペイン語など)。
目次
インストール
公式リポジトリから festival をインストールしてください。festival-english や festival-us などの音声パッケージも必要です。様々な言語が公式リポジトリや AUR からインストールできます。
festival のテスト:
$ echo "This is an example. Arch is the best." | festival --tts
サンプルテキストを聞くことができたら、TTS システムのインストールは完了です。
何も聞こえない場合、トラブルシューティングセクションを見て下さい。デスクトップシステムを使っていて、/dev/dsp
に関するメッセージが表示される場合、指示に従ってください。
設定
/etc
にグローバルな設定ファイルはありませんが、~/.festivalrc
ファイルや /usr/share/festival/festival.scm
を直接編集することで festival の設定を行えます。どちらも scheme のファイルであり、scheme の構文に従って記述されていて、festival が実行されるたびに実行されています。
サウンドサーバーを使う
PulseAudio の場合、以下の行を ~/.festivalrc
ファイルか /usr/share/festival/festival.scm
の最後に追加してください:
(Parameter.set 'Audio_Required_Format 'aiff) (Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Command "paplay $FILE --client-name=Festival --stream-name=Speech")
ALSA の場合、以下の行を使ってください (ソース):
(Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
音声
Arch は公式の音声セットを festival-english と festival-us に分けています。The AUR にも音声パッケージはありますが、メンテナンスの状態によって動作したりしなかったりします。
インストールしている音声とデフォルトの音声を確認するには、Festival のシェルを開いてください (scheme REPL):
$ festival Festival Speech Synthesis System 2.1:release November 2010 Copyright (C) University of Edinburgh, 1996-2010. All rights reserved. clunits: Copyright (C) University of Edinburgh and CMU 1997-2010 clustergen_engine: Copyright (C) CMU 2005-2010 hts_engine: The HMM-based speech synthesis system (HTS) hts_engine API version 1.04 (http://hts-engine.sourceforge.net/) Copyright (C) 2001-2010 Nagoya Institute of Technology 2001-2008 Tokyo Institute of Technology All rights reserved. For details type `(festival_warranty)' festival> voice_default voice_cmu_us_slt_arctic_hts ;;<-- THIS IS THE VOICE FESTIVAL SPEAKS WITH festival> default-voice-priority-list
(kal_diphone ;;<-- THIS IS THE HARD-CODED LIST OF VOICES FESTIVAL CAME PRE-AWARE OF cmu_us_bdl_arctic_hts cmu_us_jmk_arctic_hts cmu_us_slt_arctic_hts cmu_us_awb_arctic_hts ked_diphone don_diphone rab_diphone en1_mbrola us1_mbrola us2_mbrola us3_mbrola gsw_diphone el_diphone) festival> (voice_ ;;<-- PRESS TAB HERE TO SEE WHAT VOICES FESTIVAL HAS AVAILABLE voice_cmu_us_slt_arctic_hts voice_kal_diphone voice_nitech_us_slt_arctic_hts voice_reset voice_default voice_nitech_us_clb_arctic_hts voice_rab_diphone festival> (voice_cmu_us_slt_arctic_hts) cmu_us_slt_arctic_hts festival> (SayText "Arch makes me happy") #<Utterance 0x7fb5b8c423b0> festival>
デフォルトの音声を永続的に変更したい場合は以下のような行を ~/.festivalrc
の最後に追加します:
(set! voice_default voice_cmu_us_slt_arctic_hts)
festival.scm で音声を設定することはできません。グローバルに音声を設定したいときは、/usr/share/festival/voices.scm
で検索する音声の順番を設定してください。
HTS 対応パッチ
Festival のフリー音源としては HTS ボイスが一番だと言われていますが Festival >2.1 ではパッチを適用しないと使うことができません。
AUR からパッチがあたっているバージョンをインストールできます: festival-patched-htsAUR と festival-hts-voices-patchedAUR。
音声を手動でインストール
festvox.org から直接音声を入手できます。Festival チームによって作成された "festvox_*.tgz" という名前のファイルをダウンロードすることができ、それぞれ別の音声が含まれています。手動で解凍して適切な場所にフォルダを移動する必要があります。最新の Arch では /usr/share/festival/voices/english/
に移動してください。festvox/
サブフォルダに設定する方法が書いてあります。
festival のプロンプトをロードしなおすことで新しいボイスをテストできます。
使用方法
テキストファイルを読み上げる:
$ festival --tts /path/to/letter.txt
パイプを使用する場合:
$ (echo "Get ready for some pain"; sudo cat /var/log/messages.log) | festival --tts
テキストファイルを mp3 に変換:
$ cat letter.txt | text2wave | lame - file.mp3 && mplayer file.mp3
インタラクティブモード (音声のテストなど)
festival にはテスト用の対話式プロンプトがあります。例:
$ festival [...] festival>
利用可能な音声を確認:
festival> (voice.list) (cstr_us_awb_arctic_multisyn kal_diphone don_diphone)
音声を設定:
festival> (voice_cstr_us_awb_arctic_multisyn) #<voice 0x1545b90>
発声:
festival> (SayText '"test this is a test oh no a test bla test") inserting pause after: t. Inserting pause [...] id _63 ; name t ; id _65 ; name # ; #<Utterance 0x7f7c0c144810>
ヘルプ:
festival> help "The Festival Speech Synthesizer System: Help
終了: ctrl+d
または:
festival> (quit)
サンプルスクリプト
One classic app that can make use of this is ping. Use this script to constantly ping a host, and return ping if success, fail if not:
#!/bin/bash while :; do ping -c 1 $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts) done
Note that this does not really work on multisynth voices, as they take a while to prepare before playing.
トラブルシューティング
Can't open /dev/dsp
festival が以下のエラーメッセージを返す場合:
Linux: can't open /dev/dsp
上の #サウンドサーバーを使う を見て下さい。
Alsa の再生速度がおかしい
上の音声でキーキー音が出てしまう場合、aplay のオプションを変更してみてください:
(Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Command "aplay -Dplug:default -f S16_LE -r $SR $FILE")
aplay Command not found
alsa-utils をインストールしてください。
festival のプロセスを終了しても音声が停止しない
バックグラウンドの festival プロセスを強制終了しても、オーディオの再生は停止しません。
オーディオの再生を停止するには、子プロセス audsp
を強制終了する必要があります。これは、以下を実行することで実行できます。
$ pkill -v audsp
サーバー
festival-freebsoft-utilsAUR をインストールして、Festival を Speech dispatcher (つまり、Firefox のリーダーモードのリッスン機能) で使用します。