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

JTalk

オープンソースのテキストスピーチ。日本語対応!漢字対応! テキストスピーチっていうのは、ニコニコの動画でよくあるゆっくりボイスのアレ。 テキストを読み上げてくれる。

日本語のテキスト読み上げがLinuxでできるのっていままであんまりなかったので 結構おもしろいかも。とりあえず今はcronとかでニュースを定期読み上げさせたりしてる。

インストール

Debianでは、wheezy以降ならaptにパッケージが入っている。

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

読み上げ

% cat text.txt
おはよー
% open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice text -ow output.wav
% aplay output.wav #おはよーって再生される。

Pythonから呼び出し

subprocessを使って簡単に

import subprocess

def jtalk(text) :
  args = [
  "open_jtalk",
  "-x", "/var/lib/mecab/dic/open-jtalk/naist-jdic/",
  "-m", "/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice",
  "-ow", "/tmp/output.wav"]

  p = subprocess.Popen(args, stdin=subprocess.PIPE)
  p.communicate(text)
  p.wait()

  args = [ "aplay", "/tmp/output.wav"]                                                                           
  p = subprocess.Popen(args)
  p.wait()

if __name__ == '__main__' :
  jtalk("おはよー")