#!/usr/bin/python #-*- mode: python; coding: utf-8 -*- import urllib, urllib2 from os import path def get_tts_mp3( lang, sent, fname=None ): print "Retrieving .mp3 for sentence: %s" % sent baseurl = "http://translate.google.com/translate_tts" values = { 'q': sent, 'tl': lang } data = urllib.urlencode(values) request = urllib2.Request(baseurl, data) request.add_header("User-Agent", "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11" ) response = urllib2.urlopen(request) if( fname==None ): fname = "_".join(sent.split()) ofp = open(fname,"wb") ofp.write(response.read()) print "Saved to file: %s" % fname return def parse_list_from_file( lang, infile ): ifp = open(infile) for line in ifp: line = line.strip() get_tts_mp3( lang, line, fname=line+".mp3" ) ifp.close() return if __name__=="__main__": import sys, argparse example = "%s --lang ja --sent 日本語は難しい --fname outfile.mp3" % sys.argv[0] parser = argparse.ArgumentParser( description=example ) parser.add_argument('--lang', "-a", help='Input language abbreviation: Korean=kr, Japanese=ja, English=en, etc.', required=True ) parser.add_argument('--sent', "-s", help='An input sentence to synthesize.', default=None ) parser.add_argument('--slist', "-l", help='A file with a list of sentences to synthesize, one per line.', default=None ) parser.add_argument('--fname', "-f", help='Output filename, defaults to the input sentence .mp3', default=None ) args = parser.parse_args() if not args.sent==None: get_tts_mp3( args.lang, args.sent, args.fname ) elif not args.slist==None: parse_list_from_file( args.lang, args.slist ) else: print "Please supply either a value for either --sent or --slist."