このサイトはMacを使って Raspberry Pi 3 の動作や活用法を学びます。

合成音声

ラズパイに、テキストを入力すると合成音声で読み上げるソフトをインストールします。将来ロボットをはじめとする音声コミュニケーションには重要な機能です。
多くの合成音声ソフトは、入力文をWAV形式のデータに変換し、ラズパイ組み込みの「aplayer」で再生する手順のため、はじめに「aplayer」で、音が出ることを確認します。

音声で話す

ラズパイの音声出力機能

ラズパイには、ステレオジャックから音を出力するアナログ出力とモニターに接続するHDMI接続から出力する2種類の方法があります。どちらから出力しその音量をどうするかは、デスクトップからGUIで制御する方法と、コマンドラインから制御する方法があります。

サウンド制御 <デスクトップから制御>

デスクトップ右上のスピーカーアイコンを右クリックすると、出力先を選ぶことができます。また、(左)クリックすると、音量を調整することができます。

GUI sound control
サウンド制御 <コマンドラインで制御>

ターミナルソフトから以下のコマンドを入力すると、音の出力はステレオジャックが選択されます。

amixer cset numid=3 1  ← テレオジャックを選択

以下のコマンドで、HDMI接続の装置から出力されます。

amixer cset numid=3 2  ← HDMIを選択

音量を調整するには、コマンドラインに alsamixer と入力します。

alsamixer

alsamixer が実行されると、画面にボリュームが表示され音量をカーソルキー △ ▽ で変更することができます。
alsamixerを終了するには「esc」キーを押します。

MCLI volume control
音を出してみる

音源となる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`
  現在の時間を出力