導入めちゃめちゃ簡単でした。homebrewありがとう。

espeak: 英語

インストール & 実行

$ brew install espeak
$ espeak "hello world"

open-jtalk: 日本語

インストール

$ brew install open-jtalk

これだけで
辞書ファイル(/usr/local/Cellar/open-jtalk/1.10_1/dic/)も
音声ファイル(/usr/local/Cellar/open-jtalk/1.10_1/voice/)も入りました。

実行

女性ボイス: mei_normal.htsvoice

$ echo "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。" > sample.txt
$ open_jtalk \
-x /usr/local/Cellar/open-jtalk/1.10_1/dic \
-m /usr/local/Cellar/open-jtalk/1.10_1/voice/mei/mei_normal.htsvoice \
-ow out.wav sample.txt
$ afplay out.wav

男性ボイス: nitech_jp_atr503_m001.htsvoice

$ open_jtalk \
-x /usr/local/Cellar/open-jtalk/1.10_1/dic \
-m /usr/local/Cellar/open-jtalk/1.10_1/voice/m100/nitech_jp_atr503_m001.htsvoice \
-ow out.wav sample.txt
$ afplay out.wav

pythonから実行。以下のjtalk.pyを作成して保存。

jtalk.py
# coding: utf-8
import subprocess
from datetime import datetime

def jtalk(t):
    open_jtalk = ['open_jtalk']
    mech = ['-x', '/usr/local/Cellar/open-jtalk/1.10_1/dic']
    htsvoice = ['-m', '/usr/local/Cellar/open-jtalk/1.10_1/voice/mei/mei_normal.htsvoice']
    speed = ['-r', '1.0']
    outwav = ['-ow', 'out.wav']
    cmd = open_jtalk + mech + htsvoice + speed + outwav
    c = subprocess.Popen(cmd, stdin=subprocess.PIPE)
    c.stdin.write(t)
    c.stdin.close()
    c.wait()
    aplay = ['afplay', 'out.wav']
    wr = subprocess.Popen(aplay)

def say_datetime():
    d = datetime.now()
    text = '%s%s日、%s%s%s秒' % (d.month, d.day, d.hour, d.minute, d.second)
    jtalk(text)

if __name__ == '__main__':
    say_datetime()
$ python jtalk.py

python モジュールとして利用

$ python
>>> import jtalk
>>> jtalk.jtalk ("ロウセイのリチョウは博学サイエイ、天宝のマツネン、若くして名をコボウに連ね、ついでコウナンイに補せられたが、性、狷介、自ら恃むところ頗る厚く、センリに甘んずるを潔しとしなかった。")

参考: http://qiita.com/kkoba84/items/b828229c374a249965a9

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.