2017-08

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Google翻訳の音声合成を使ってTwitterタイムラインを読み上げる

Google翻訳の読み上げ機能を使って、Twitterのタイムライン読み上げをやってみた。
いろいろやってみたけど、ユーザーエージェントをいじらないといかんらしい。
さて、これを使ってなにをやろうか?

使ったもの:
・pygame mp3再生
・tweepy タイムライン取得


以下ソースコード


# -*- coding: utf-8; -*-

import urllib2
import urllib
import time
import pygame.mixer as mixer
import tweepy
import pygame
import os

def read(keyword, id):

# google Translate のための諸設定
# これをやらないと翻訳が英語になったり、出来なかったりする
lang = "ja"
encoding = "utf_8"
query = {'q': keyword.encode(encoding),
'hl': lang,
'lr': 'lang_' + lang,
'ie': encoding,
'oe': encoding,
}
urlprefix = "http://translate.google.com/translate_tts?"
url = urlprefix + urllib.urlencode(query)
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-jp) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4'
headers={'User-Agent':user_agent,}

# リクエスト、mp3のダウンロード
try:
request=urllib2.Request(url,None,headers)
response = urllib2.urlopen(request)
data = response.read()
except Exception, e:
print "request error strlen" + str(len(keyword))
return

# 音声データ一時保存
try:
file_name = "./" + str(id) + ".mp3"
file = open(file_name,"wb")
file.write(data)
file.close()
except Exception, e:
print "cant open files"
return

# mp3 再生
try:
mixer.init()
mixer.music.set_volume(0.3)
mixer.music.load(file_name)
mixer.music.play()
while mixer.music.get_busy():
pass
except Exception, e:
print "cant play mp3"
return


def main():
  # アクセストークン等は各自取得
consumer_key = "■■■■■■■"
consumer_secret = "■■■■■■■"
access_key = "■■■■■■■"
access_secret = "■■■■■■■"
auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
latest_id = api.home_timeline()[0].id
print "start twitter reader id :" + str(latest_id)
read("start twitter", latest_id)

while True:
t=time.time()
timeline = api.home_timeline()
timeline.reverse()
for status in timeline:
if latest_id < status.id:
print str(status.id) + ": " + status.user.screen_name + "::" + status.text
read(status.text, status.id)
latest_id = status.id
interval = 30-time.time()-t
if interval > 0:
time.sleep(interval)

main()


● COMMENT FORM ●


管理者にだけ表示を許可する

トラックバック

http://chicklab.blog84.fc2.com/tb.php/30-cc3dc863
この記事にトラックバックする(FC2ブログユーザー)

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

FC2カウンター

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (7)
日記 (7)
wiiremote (1)
google (1)
回路 (3)
psp (1)
programing (15)
linux (0)
OpenWRT (3)
kinect (1)
Raspberry Pi (8)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

google adsense

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。