VoiceText Web APIを使ってTwitterのhome_timelineを読み上げる

はじめに

今日のお題は、夏休みの自由研究的なものです。

昨日、VoiceText Web API (β版)というサービスが公開されました。こちらはHOYAサービス株式会社様の音声合成ソフトウェア「VoiceText」を、Web API経由で使えるというものになります。こちらが良く出来ていて、読み上げの精度も高いし、元となる声や感情を複数種類から選べるし、声のピッチやスピードも変えられるし、なかなか面白いです。

このサービスを使ってちょっと遊んでみようと思い、Twitterの自分のホームタイムラインを読み上げさせるスクリプトを書いてみました。

材料

できたもの

[Ruby]

require 'twitter' require 'voice_text_api' require 'open3'

CONSUMER_KEY = 'your_consumer_key' CONSUMER_SECRET = 'your_consumer_secret' OAUTH_TOKEN = 'your_oauth_token' OAUTH_TOKEN_SECRET = 'your_token_secret' API_KEY = 'your_api_key'

SPEAKER = ["haruka", "hikari", "takeru"] begin twcli = Twitter::REST::Client.new do |config| config.consumer_key = CONSUMER_KEY config.consumer_secret = CONSUMER_SECRET config.access_token = OAUTH_TOKEN config.access_token_secret = OAUTH_TOKEN_SECRET end vt = VoiceTextAPI.new(API_KEY)

twcli.home_timeline({"count"=>200}).each do |tweet| speaker = SPEAKER[rand(3)] text = "#{tweet.text}"

if /[!!]/ =~ text then emolevel = "2" else emolevel = "1" end

if /[喜嬉楽幸]/ =~ text then emotion = "happiness" elsif /[悲辛苦]/ =~ text then emotion = "sadness" elsif /[怒]/ =~ text then emotion = "anger" else emotion = nil end

if emotion == nil then wav = vt.tts(text, :"#{speaker}") else wav = vt.tts(text, :"#{speaker}",emotion: :"#{emotion}", emotion_level: "#{emolevel}") end Open3.capture3("/Users/sasakidaisuke/sox/play -", :stdin_data=>wav) end

rescue print "RuntimeError: ", $!, "\n"; end

[/Ruby]

まとめ

オフィスの中でPCの音量を最大にして実行したところ、オフィスが爆笑に包まれました...

VoiceText Web APIはもっと活用方法がありそうなので、今後面白いサービスが生まれてくるのでは無いでしょうか。楽しみです!