open-jtalk を使ってみる

open-jtalk を使ってみる

docomo のテキストを音声に変えるAPIが終了したらしいので無料で使えるopen-jtalkを入れてみたいと思います。

参考:Open JTalkでテキストスピーチ on Debian

どうやら音声データは下のリポジトリからとってこないといけなぽいです。
ソースパッケージ: hts-voice-nitech-jp-atr503-m001

インストール

インストールと挙動を確認してみたいと思います。


mkdir jtalk-project

cd jtalk-project/

apt-get install open-jtalk

apt-get install open-jtalk-mecab-naist-jdic

git clone https://salsa.debian.org/debian/hts-voice-nitech-jp-atr503-m001.git

echo "ぱいそん" > text.txt

open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /code/jtalk-project/hts-voice-nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice text.txt -ow output.wav

同階層に output.wav と言うファイルが出来たかと思います。実行すると、なかなか渋めの声で「ぱいそん」と喋ってくれてますね。

ちなみにコマンドのオプションは下の通りです。


-x (辞書の指定) 辞書があるフォルダーのパスを指定します。 ...
-m (音声データの指定) ...
-ow (WAVファイルの指定) ...
-ot (ログファイルの指定) ...
-s (サンプリング周波数) ...
-p (フレーム周期) ...
-a (オールパス値) ...
-b (ポストフィルター係数)

pythonで動かしてみる


# -*- coding: utf-8 -*-
import subprocess


def jtalk():
    subprocess.run(
        [
            "open_jtalk",
            "-x", "/var/lib/mecab/dic/open-jtalk/naist-jdic/",
            "-m", "/code/jtalk-project/hts-voice-nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice",
            "text.txt",
            "-ow", "output.wav"
        ]
    )


if __name__ == '__main__':
    jtalk()