合成音声
ラズパイに、テキストを入力すると合成音声で読み上げるソフトをインストールします。将来ロボットをはじめとする音声コミュニケーションには重要な機能です。
多くの合成音声ソフトは、入力文をWAV形式のデータに変換し、ラズパイ組み込みの「aplayer」で再生する手順のため、はじめに「aplayer」で、音が出ることを確認します。
ラズパイの音声出力機能
ラズパイには、ステレオジャックから音を出力するアナログ出力とモニターに接続するHDMI接続から出力する2種類の方法があります。どちらから出力しその音量をどうするかは、デスクトップからGUIで制御する方法と、コマンドラインから制御する方法があります。
サウンド制御 <デスクトップから制御>
デスクトップ右上のスピーカーアイコンを右クリックすると、出力先を選ぶことができます。また、(左)クリックすると、音量を調整することができます。
サウンド制御 <コマンドラインで制御>
ターミナルソフトから以下のコマンドを入力すると、音の出力はステレオジャックが選択されます。
amixer cset numid=3 1 ← テレオジャックを選択
以下のコマンドで、HDMI接続の装置から出力されます。
amixer cset numid=3 2 ← HDMIを選択
音量を調整するには、コマンドラインに alsamixer と入力します。
alsamixer
alsamixer が実行されると、画面にボリュームが表示され音量をカーソルキー △ ▽ で変更することができます。
alsamixerを終了するには「esc」キーを押します。
音を出してみる
音源となるWAV形式の任意のサンプルファイル(sample.wav)をMACに準備して、SFTPを使い MAC からラズパイの Music フォルダー内に保存します。以下のコマンドを入力し、ラズパイ組み込みの「aplayer」で、sample.wav を再生します。
aplay Music/sample.wav
音が出れば合成音声でラズパイが「おしゃべり」をするハードウエアの準備は完了です。
AquesTalk Piを使用して日本語音声を合成
プログラム AquesTalk Pi を使えば、Raspberry Pi上で簡単に音声合成できます。 AquesTalk Pi のライセンスは有料ですが、個人で非営利を目的とする場合は無償で使用することができます。
コマンドラインから以下のコマンドで、株式会社アクエストから「AquesTalk Pi」をダウンロードし、ラズパイで解凍します。
wget http://www.a-quest.com/download/package/aquestalkpi-20130827.tgz tar xzvf aquestalkpi-20130827.tgz
解凍後のaquestalkpiフォルダに移動し、
AquesTalk Pi を実行して文章を読み上げてみます。
cd aquestalkpi ./AquesTalkPi "発声する文字列を指定します(UTF-8)。漢字も読めます。" | aplay ./AquesTalkPi `date +%Y年%m月%d日` | aplay
AquesTalkPi のコマンドに使用するオプションと文法を示します。
AquesTalkPi [-h] [-s speed] [-g volume] [-b] [-v f1|f2] [-o out.wav] [-f file | string]
オプション | 説明 |
string (文字列) | 発声する文字列を指定します(UTF-8)。漢字も読めます。 音声記号列での指定も可能です(-k オプション) 音声記号列の詳細は、AquesTalk音声記号列仕様を参照。 スペース等を含む場合は ""で囲んで指定してください。 |
-f (file-input) | 発声する文字列をファイルで指定するときに指定します。 先頭行だけしか処理しません。 stringを指定せず、且つ fileに - を指定したときは、 標準入力からの入力になります(pipe使用可能)。 |
-o (output-file) | WAVファイルとして出力するときにファイル名を指定します。 指定しないときは標準出力に出力されます。 |
-v (voice) | 声種を指定します。 f1:女声1(default) f2:女声2 |
-b (bo-yomi) | 棒読み(アクセントが平板)になります。 |
-g (gain) | 音量を指定します。 (0-100) default:100 |
-s (speed) | 発話速度を指定します。 (50-300) default:100 |
-h (help) | ヘルプを表示します。 |
Flite を使用して英語音声を合成
プログラム Flite で簡単に英語の音声合成できます。 Flite は、世界中のラズパイ愛好者に使用されている音声合成ソフトウエア Festival を元に、より効率的なソフトウエアに作成し直したもので、ラズパイとも相性良く使うことができます。インストールはコマンドラインから次のように行います。
sudo apt-get install flite
インストールが終われば以下のように、合成音声を発生させることができます。
flite コマンド
引用句内を読み上げます。 flite -t ”Flite is free software.” alice.txt に書かれている英文を alice.wav にWAV形式で書き出します。 flite -f alice.txt -o alice.wav 女性の声で引用句内を読み上げます。 flite -voice slt "I'm now speaking slt's voice. "
flite のコマンドの文法とオプションを示します。
文法:flite [--help] [-voice NAME] [-f file | -t string] [-o out.wav]
オプション | 説明 |
-t (text) | 発声する文字列を指定します。 文字列がスペースを含む場合は -t を省略できます。 |
-f (file-input) | 発声する文字列が書き込まれているファイルを指定します。 スペースを含まない場合は -f を省略できます。 |
-o (output-file) | WAVファイルとして出力するときにファイル名を指定します。 指定しないときは標準音声出力に直接出力されます。 |
-voice (voice) | 声の種類を指定します。 kal(default) slt(女声) |
-lv (list voice) | 組み込まれている声の種類をリストします。 |
flite_time コマンド
flite_time コマンドは、時間を一般的な会話形式の話し言葉に変換します。
文法:flite_time HH:MM
flite_time 09:35
The time is now, exactly twenty-five to ten, in the morning.
flite_time 14:00
The time is now, exactly two, in the afternoon.
flite_time 19:05
The time is now, exactly five past seven, in the evening.
flite_time `date +%H:%M`
現在の時間を出力