Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

Raspberry Pi に対応している音声合成ソフトとして3つご紹介します。ご紹介しますが、結論として非力なラズパイではOpen JTalkでしょう。 もしくは喋らせるだけなら、予め用意したWAVファイルを再生させるプログラムでもいいでしょう。 リアルタイム変換となると、Open JTalk以外、ラズパイには少々荷が重いのが実情です。 どれもWindows/Mac/Linuxに対応しているため、Raspberry Pi に拘らなければ、音声合成ソフトとして素晴らしい機能です。 少ないメモリーでもOKなOpen JTalk Raspberry Piに限って言えば、Open JTalkが一番簡単でした。数年前にトライしてから、音声ファイルのバージョンが1つ上がっていただけで、現在でも同じように快適です。 投稿が見つかりません。 改めて導入方法をザッと記載すると、インストールして音声ファイルを追加するだけです。 インストールはお馴染みのaptコマンドなので難しくありません。 sudo apt install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001 音声ファイルは、open-jtalkのインストール時に、追加で推奨するファイルとして表示されます。現在も同じファイルでした。 他にもdocker、homebrew、node.js、.Netなどパッケージマネージャーに対応しています。 コマンドで喋らせる Open JTalkは基本としてコマンドで実行します。 毎回コマンドで引数オプションを指定するより、シェルスクリプトにして実行した方が便利ですよね。 nano jvoice-m.sh #!/bin/sh TMP=/tmp/jsay.wav echo “$1” | open_jtalk
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
-x /var/lib/mecab/dic/open-jtalk/naist-jdic
-ow $TMP &&
aplay -q $TMP rm -f $TMP 使う時は、shファイルがあるフォルダなら./jvoice-m.sh おはようと喋らせたい日本語を繋げるだけです。 当時、Bluetoothボタンに割り当てて使いました。その際は相対パスか絶対パスで指定すれば機能します。タイムラグは1秒くらいでしょうか。

音が出ない?デフォルトの出力先がアナログ出力になっていませんか?  HDMI出力やUSBスピーカーに変更すればOK。raspi-configでデフォルトを指定することもできます。 予めテキストに収めた文章を喋らせる テキストファイルに書いた文章を読ませるなら、コードを少し変更して次のようにもできます。文章が長いと再生までタイムラグが出てきます。 #!/bin/sh WAV=/jvoice.wav TXT=/voice_text.txt echo “$1” | open_jtalk
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
-x /var/lib/mecab/dic/open-jtalk/naist-jdic
-ow $WAV $TXT &&
aplay -q $WAV このコードだと、先程のようにテンポラリファイルで生成させてから削除していません。ルートフォルダにjvoice.wavと生成している形です。 女性meiさんの音声を追加 女性の声も追加しておきます。ver.1.8です。 wget http://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.8/MMDAgent_Example-1.8.zip 解凍後、/usr/share/hts-voice/内へ移動 unzip MMDAgent_Example-1.8.zip sudo cp -R ./MMDAgent_Example-1.8/Voice/mei /usr/share/hts-voice/ 先程の男性音声とコードは同じでも、-mの引数であるパスは変更します。(4行目) #!/bin/sh TMP=/tmp/jsay.wav echo “$1” | open_jtalk
-m /usr/share/hts-voice/mei/mei_normal.htsvoice
-x /var/lib/mecab/dic/open-jtalk/naist-jdic
-ow $TMP &&
aplay -q $TMP rm -f $TMP ダウンロードした音声ファイルは感情別に5つありました。 mei_angry.htsvoice(怒り) mei_happy.htsvoice(幸せ) mei_sad.htsvoice(悲しい) mei_bashful.htsvoice(はにかみ) mei_normal.htsvoice(普通) Raspberry Pi で使う音声合成として、短い言葉のリアルタイム変換は実用的です。 もしくはWAVファイルに生成して、プログラムから再生するだけなら、長い言葉でもイケますよね。 ダウンロードした音声ファイルには、meiさん以外にもtakumiさんが入っています。sltはUS女性で辞書がないのでエラーになります。 他にも女性音声のtohoku-f01もどうぞ。同じように/usr/share/hts-voice/へコピーしてください。 GitHub - icn-lab/htsvoice-tohoku-f01: Japanese female HTS voice with four emotions {angry, happy, ne… Pythonで実行 シェルスクリプトの他に、Pythonコードで実現するサンプルです。 私は疎いので、次のサイトにあるコードを使わせていただきました。 🗣OpenJTalkでおしゃべりする - ⭐|ラズベリーパイのレシピ import subprocess

textfile

TEXT_FILE = “jvoice-text.txt”

openjtalk

X_DIC = ‘/var/lib/mecab/dic/open-jtalk/naist-jdic’ M_VOICE = ‘/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice’

M_VOICE = ‘/usr/share/hts-voice/mei/mei_normal.htsvoice’

R_SPEED = ‘1.0’ OW_WAVFILE =

Raspberry Pi に対応している音声合成ソフトとして3つご紹介します。ご紹介しますが、結論として非力なラズパイではOpen JTalkでしょう。

もしくは喋らせるだけなら、予め用意したWAVファイルを再生させるプログラムでもいいでしょう。

リアルタイム変換となると、Open JTalk以外、ラズパイには少々荷が重いのが実情です。

どれもWindows/Mac/Linuxに対応しているため、Raspberry Pi に拘らなければ、音声合成ソフトとして素晴らしい機能です。

少ないメモリーでもOKなOpen JTalk

Raspberry Piに限って言えば、Open JTalkが一番簡単でした。数年前にトライしてから、音声ファイルのバージョンが1つ上がっていただけで、現在でも同じように快適です。

投稿が見つかりません。

改めて導入方法をザッと記載すると、インストールして音声ファイルを追加するだけです。

インストールはお馴染みのaptコマンドなので難しくありません。

sudo apt install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

音声ファイルは、open-jtalkのインストール時に、追加で推奨するファイルとして表示されます。現在も同じファイルでした。

他にもdocker、homebrew、node.js、.Netなどパッケージマネージャーに対応しています。

コマンドで喋らせる

Open JTalkは基本としてコマンドで実行します。

毎回コマンドで引数オプションを指定するより、シェルスクリプトにして実行した方が便利ですよね。

nano jvoice-m.sh

#!/bin/sh
TMP=/tmp/jsay.wav
echo "$1" | open_jtalk \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $TMP && \
aplay -q $TMP
rm -f $TMP

使う時は、shファイルがあるフォルダなら./jvoice-m.sh おはようと喋らせたい日本語を繋げるだけです。

当時、Bluetoothボタンに割り当てて使いました。その際は相対パスか絶対パスで指定すれば機能します。タイムラグは1秒くらいでしょうか。

音が出ない? デフォルトの出力先がアナログ出力になっていませんか?  HDMI出力やUSBスピーカーに変更すればOK。 raspi-configでデフォルトを指定することもできます。

予めテキストに収めた文章を喋らせる

テキストファイルに書いた文章を読ませるなら、コードを少し変更して次のようにもできます。文章が長いと再生までタイムラグが出てきます。

#!/bin/sh
WAV=~/jvoice.wav
TXT=~/voice_text.txt
echo "$1" | open_jtalk \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $WAV $TXT && \
aplay -q $WAV

このコードだと、先程のようにテンポラリファイルで生成させてから削除していません。ルートフォルダにjvoice.wavと生成している形です。

女性meiさんの音声を追加

女性の声も追加しておきます。ver.1.8です。

wget http://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.8/MMDAgent_Example-1.8.zip

解凍後、/usr/share/hts-voice/内へ移動

unzip MMDAgent_Example-1.8.zip
sudo cp -R ./MMDAgent_Example-1.8/Voice/mei /usr/share/hts-voice/

先程の男性音声とコードは同じでも、-mの引数であるパスは変更します。(4行目)

#!/bin/sh
TMP=/tmp/jsay.wav
echo "$1" | open_jtalk \
-m /usr/share/hts-voice/mei/mei_normal.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $TMP && \
aplay -q $TMP
rm -f $TMP

ダウンロードした音声ファイルは感情別に5つありました。

  • mei_angry.htsvoice(怒り)
  • mei_happy.htsvoice(幸せ)
  • mei_sad.htsvoice(悲しい)
  • mei_bashful.htsvoice(はにかみ)
  • mei_normal.htsvoice(普通)

Raspberry Pi で使う音声合成として、短い言葉のリアルタイム変換は実用的です。

もしくはWAVファイルに生成して、プログラムから再生するだけなら、長い言葉でもイケますよね。

ダウンロードした音声ファイルには、meiさん以外にもtakumiさんが入っています。sltはUS女性で辞書がないのでエラーになります。

他にも女性音声のtohoku-f01もどうぞ。同じように/usr/share/hts-voice/へコピーしてください。

GitHub - icn-lab/htsvoice-tohoku-f01: Japanese female HTS voice with four emotions {angry, happy, ne…

Pythonで実行

シェルスクリプトの他に、Pythonコードで実現するサンプルです。

私は疎いので、次のサイトにあるコードを使わせていただきました。

🗣OpenJTalkでおしゃべりする - ⭐|ラズベリーパイのレシピ

import subprocess

# textfile
TEXT_FILE = "jvoice-text.txt"

# openjtalk
X_DIC = '/var/lib/mecab/dic/open-jtalk/naist-jdic'
M_VOICE = '/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice'
# M_VOICE = '/usr/share/hts-voice/mei/mei_normal.htsvoice'
R_SPEED = '1.0'
OW_WAVFILE = '/tmp/tmp.wav'

# aplay
# CARD_NO = 1
# DEVICE_NO = 0

def talk_text(t):
    open_jtalk = ['open_jtalk']
    xdic = ['-x', X_DIC]
    mvoice = ['-m', M_VOICE]
    rspeed = ['-r', R_SPEED]
    owoutwav = ['-ow',OW_WAVFILE]
    cmd = open_jtalk + xdic + mvoice + rspeed + owoutwav
    c = subprocess.Popen(cmd, stdin=subprocess.PIPE)
    c.stdin.write(t.encode('utf-8'))
    c.stdin.close()
    c.wait()
#   aplay = ['aplay', '-q', OW_WAVFILE, ('-Dplughw:'+str(CARD_NO)+','+str(DEVICE_NO))]
    aplay = ['aplay', '-q', OW_WAVFILE]
    wr = subprocess.Popen(aplay)
    wr.wait()

def main():
    with open(TEXT_FILE) as f:
        for line in f:
            talk_text(line)

if __name__ == '__main__':
    main()

ラズパイだとカード&デバイス番号を指定すると音が出なかったので、指定しないようにコメントアウトしています。エラーが出たら、実行はpython3 talk.pyのようにpython3と指定してあげると上手く行くことがあります。

このような文章も、改行毎に1秒以下のタイムラグで再生されます。テキストによっては(例えば2-3とか)上手く喋れません。これは仕方ない。変換速度は申し分ないと思いますよ。

ニュースなり取得して読ませることもできますね。

商用利用も可能な無料ソフトVOICEVOX

これも優秀な音声合成ソフトで、製品版とは別にOSS版VOICEVOXをラズパイにインストールできます。エディタ、エンジン、コアと分かれていて、ラズパイに組み込んで使うにはコアでいいでしょう。

私の理解力では、Pythonのサンプルプログラムがエラーで実際に音声を聞けていません。

非エンジニアとしては導入が難しいと感じました。Githubに慣れていないこともあります。未だにちょっと分かりません。

コアの導入は、先ずダウンローダーを利用しました。手順は公式からarm64に変更して実行しました。

https://github.com/VOICEVOX/voicevox_core/tree/main/example/python

バージョンは0.14.4で、.whlも同じバージョンにし、次に、voicevox_core-0.14.4+cpu-cp38-abi3-linux_aarch64.whlをダウンロードしてインストールしました。

で、サンプル(run.py)を実行すると、インポートエラー。

from voicevox_core import (AccelerationMode, AudioQuery, OpenJtalk, ImportError: cannot import name ‘OpenJtalk’ from ‘voicevox_core’

インポートエラー

ごめんなさい。よく分かりません。onnxruntimeは入れないとダメですよね?

Githubページを読めば読むほど分からなくなりました。結構な開発速度で、少し前のバージョンともサンプルファイルが異なっていたり、変更点が多いためバージョンによってかも知れませんね。

私はできませんでしが、コアとonnxruntime、Pythonと依存するモジュール(pipで)インストールすれば使えるかと思います。

MacにインストールしたVOICEVOX

ラズパイではなく、MacにインストールしたVOICEBOXは、起動こそとても遅いものの問題無く使えています。

品質は次にご紹介するVOICEPEAKに近く、確かに中品質と言われているレベルだと思いました。自然ですよ。

■Pi 5は8GBモデルがオススメ

こちらも商用利用が可能なVOICEPEAK

こちらだけ有償です。商用利用も可能なAI音声合成ソフトです。一時期話題になりました。この音声を使ったYoutube動画も増えましたよね。

これ、実はRaspberry Pi 4にも対応しているんですよ!

対応OS:

  • Windows 11/10 またはそれ以降 (64bit)
  • macOS 10.13 またはそれ以降
  • Ubuntu 20.04 またはそれ以降 (64bit)
  • Raspberry Pi (モデル:Raspberry Pi 4 / OS:Raspberry Pi OS (64-bit))

パッケージ版とダウンロード版があり、当然ながらダウンロード版の方がリーズナブルです。

但し、ライセンスは1つです。回避策として他のOSや別のマシンにインストールしたら、一旦アクティィベーションを解除すれば可能です。何回かは分かりませんが、登録&解除には制限があるということです。

私、発売日に購入してから、Macにインストールして色々と試しながら遊んでいます。

本当に発話が自然過ぎて怖い! 落ち着いた音声ばかりなので、ビジネスや教育用途に合います。

アクティベーションのこともあり、まだRaspberry Pi で試していません。紹介動画はメーカーから出ています。

https://youtu.be/p9uSXVY_GI0

コマンドで指示できるのはWindowsだけ?

Windowsに入れるとコマンドラインから使えるみたいです。現バージョンだとMacではダメです。(たぶん)

公式サイトにも正式な記述はありません。過去にコマンドラインで使えるバージョンアップがあったのですけど、それはベータ機能ということで、以後はコマンド対応の記載もなくなりました。

コマンドラインで使えると他のサイトが載せているのは、皆さんWindowsへのインストールなんです。Macではムリみたいだから、古いバージョンまでダウングレードしないとならないのかな。記載は何も見つかりませんので分かりません。

コマンドで実行できれば、使える幅も増えるのになと思ったのですけどね。

x86Linuxではできるのかも分かりません。Raspberry Pi もです。

仮にGUIで使うなら、Windows/MacでWAVファイルに書き出せばいいため、非力なラズパイ対応でも魅力にはなりません。

動画のように非力なラズパイでGUIが動くのは凄いけど、ソフト価格がラズパイ本体の倍だからなー。

今後のバージョンアップに期待したい。

ラズパイならOpen JTalk

結局、ラズパイの性能だと、Open JTalkが最適で安心ですね。軽い、速い、簡単です。

シェルスクリプトで呼び出すか、WAVファイルに書き出してPythonで再生させる使い方が手軽だと思います。自前のプログラムも、テキストやアラートで表示するより、音声で伝えてくれるようにすると少し満足感が上がります。

aptパッケージでインストールできるのも簡単な理由の1つです。

Open JTalkは2018年末から更新されていませんが安定しています。ラズパイなら是非一度試して欲しいですね。

本当は今ならVOICEBOXくらいの品質が欲しいところなので、Linux系での導入がもう少し簡単だと有り難いです。

音声合成ソフトとしては、VOICEPEAKの自然な発話に驚きますよ。それなりの価格なのは頷ける価値あるソフトです。

こちらも試してみて欲しいですね。

Open JTalk - Wikipedia