create every day - 福野泰介の一日一創

ふわっちコメントの読み上げをPython3でカスタマイズする - Python3 x Open JTalk on Mac

2018/01/11 23:55:00
#maker #python 

Open JTalk on Macを使った読み上げ実験、第一弾は、誰でもなんちゃってテレビ局、生配信サービス「ふわっち」のコメントの読み上げ。

顔文字や新しい言葉がどんどん登場する楽しい日本語の世界、自分で自由にカスタマイズ(transmapを編集)して、ストレスなしの読み上げを実現します。

# coding: utf-8 import jtalk import sys import time import json import urllib.request transmap = { " " : " ", "www" : "w", "iPhone" : "アイフォン", "AppleID" : "アップルアイディー", "一途" : "いちず", "ε" : "", "ω" : "", "(o(" : "", ")o)" : "", "´)ノ" : "", } def talk_whowatch_comment(id, timefrom): with urllib.request.urlopen("https://api.whowatch.tv/lives/%s?last_updated_at=%s" % (id, timefrom)) as r: s = r.read() data = json.loads(s.decode('utf-8')) for comment in reversed(data["comments"]): mes = comment["message"] user = comment["user"]["name"] userid = comment["user"]["id"] s = "%sさん(%s) %s" % (user, userid, mes) for t in transmap: mes = mes.replace(t, transmap[t]) print(s) jtalk.jtalk(mes).wait() return data["updated_at"]; id = sys.argv[1] timefrom = 0 if len(sys.argv) == 3: timefrom = sys.argv[2] print("https://api.whowatch.tv/lives/%s" % id) while True: bktimefrom = timefrom timefrom = talk_whowatch_comment(id, timefrom) print("updated at: %s" % timefrom) if timefrom == bktimefrom: time.sleep(5)

importしているjtalkですが、コメントのJSONデータを取得するためのライブラリ urllib.request などがPython3用なので、jtalk.py もPython3用に修正し、読み上げ終了がわかるようにプロセスのインスタンスを返す用に改造。

# coding: utf-8 import subprocess from sys import argv 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' ] jf = [ '-jf', '0.6' ] fm = [ '-fm', '-1.0' ] u = [ '-u', '0.0' ] outwav = [ '-ow', 'out.wav' ] cmd = open_jtalk + mech + htsvoice + speed + jf + u + fm + outwav c = subprocess.Popen(cmd, stdin = subprocess.PIPE) c.stdin.write(t.encode()) c.stdin.close() c.wait() aplay = [ 'afplay', 'out.wav' ] wr = subprocess.Popen(aplay) return wr if __name__ == '__main__': jtalk(argv[1])

speed, jf, fm あたりをいじると読み上げの音質をいろいろ変更できますよ。


ふわっち - 動画・ラジオの生配信で稼ごう!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image