ラズパイで音声を出力する方法(OpenJTalkとAquesTalk)

RaspberryPi
スポンサーリンク

ラズパイで音声を出力して、Siriのようなものを作りたい!ということでまずは音声を出力する方法を調べましたのでまとめていきます!

ラズパイでよく使われる音声合成ソフトはOpenJTalkもしくはAquesTalkです。

両方のソフトのインストール方法、使い方を説明していきます。

調べているときにかなりつまづいたところもあったので、これからOpenJTalkもしくはAquesTalkを使いたい!という方の役に立つかなと思います。

OpenJTalkとは

オープンソース(修正BSDライセンス)の日本語テキストに基づいて自由な音声を生成するHMMテキスト音声合成システムです。(Open JTalk

簡単に言うと文字列(テキスト)を音声へ変換してくれるソフトウェアです。

AquesTalkとは

AquesTalk(アクエストーク)は、アクエストが開発・販売している音声合成用ソフト。(wikipediaより引用)

AquesTalk Pi(アクエストークパイ)と言われる、ラズパイ用の音声合成アプリです。

ライセンスが必要なのですが、個人の非営利目的であれば無償で利用することが可能です。

事前準備

どちらも日本語を用いるのでまず、ラズパイを日本語入力対応にする必要があります。その設定を行っていきます。ターミナルで以下のコマンドを入力してください。

再起動をしたら設定は完了です。画面右側にキーボードのマークが表示されていると思います。これをクリックするとオレンジ色のマークに変わります。これで半角/全角で日本語入力に変換できます。

OpenJTalkインストールから出力まで

インストール

以下のコマンドをターミナルに入力します。

テキストファイル・音声ファイル(.wav)の作成

下記のように操作し、テキストエディタを開きます。

次にテキストファイルに出力したい文字を入力して保存します。今回は「voice.txt」として保存しています。

テキストファイルの文字コードはUTF-8で作成してください

音声ファイル作成のコマンドの内容は以下の通りです。

これで「voice.wav」という音声ファイルが作成されました。

(メモ)open_jtalkコマンドオプション

【辞書と音声データのオプション】
-x (辞書の指定)
辞書そのものではなく辞書があるフォルダーを指定
-m (音声データの指定)
音声データ(ファイル)を指定
【出力するファイルに関するオプション】
-ow (WAVファイルの指定)
音声に変換したデータを保存するWAVファイルを指定
-ot (ログファイルの指定)
【音声データの生成に関するオプション】
-s (サンプリング周波数)
-p (フレーム周期)
-a (オールパス値)
-b (ポストフィルター係数)
-r (スピーチ速度係数)
-fm (追加ハーフトーン)
-u (有声/無声境界値)
-jm (スペクトラム系列内変動の重み)
-jf (F0系列内変動の重み)
-z (オーディオバッファサイズ)

音声出力

ターミナルに以下のコマンドを入力すると、音声ファイルが再生されます。

音声出力の設定について

音声がうまく出力されない方は設定を行います。

先ほどのコマンド「aplay -Dhw:1,0 voice.wav」の-Dhw:1,0でデバイスの指定をしています。

このコマンドを入力すると、以下のようにハードウェアデバイスの情報が表示されます。

カードとデバイスに注目してください。下の例でいうと、

  • HDMIで出力:-Dhw:0,0
  • Headphoneで出力:-Dhw:1,0

と設定することにより、出力先を変更できます。

女性の声使用する場合

デフォルトは男性の声になっていますので、女性の声を利用したい方は以下の手順で設定します。

先ほどと少し参照先を変え、音声ファイルを作成、再生します。

女性の声に変更されていると思います!

python3から音声出力(ソースコード)

ではpythonのスクリプトファイルから音声を出力させてみたいと思います。

関数jtalkの引数を変更するだけで出力する音声を変更できます。

‘-Dplughw:1,0’の部分を変更すると出力先を変更できます!

AquesTalkダウンロードから出力まで

次にAquesTalkで音声を発信させます。

色々なサイトに載っているURLでは取得できませんでした。こちらのコマンドでダウンロード・解凍してください。

次にディレクトリを移動し、以下のコマンドを入力するだけで音声を出力できます!

まとめ

二つとも簡単に使用できて、使い方が簡単ですね。

是非使ってみてください!

AquesTalkの方がゆっくり発生してくれて、好みでした。

しかし、ネットにあまり情報がないですし、ライセンス問題などもありますので今後はOpenJTalkを使っていこうかなと思います!!

参考サイト

参考にさせて頂いたサイト一覧です。

【OpenJTalk】

Raspberry Piで音声合成:Open JTalkでしゃべるラズパイを作る

OpenJTalk + python で日本語テキストを発話

OpenJtalkを使って日本語をRaspberry Piに喋らせる

【AquesTalk】

AquesTalk Pi

それ、ラズパイでつくれるよ——日本語を喋らせる

コメント

タイトルとURLをコピーしました