ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2012年6月30日土曜日

Using Google Text-to-Speech

Googleのテキスト読み上げapiのText-to-Speechを使って、
文字列から音声ファイル(mp3)を作成する


http://translate.google.com/translate_tts?tl=ja&q=おはようございます。気持ちのよい朝ですね。

↑のURLにアクセスすると、mp3形式で返ってくるので、ブラウザにmp3再生プラグインが入っていればテキストを読み上げてくれる。
(URLをブラウザのアドレスバーをコピーしてアクセスしてもよい)


パラメータは、次のようになっている。


tl・・・言語の指定(日本語 ja、英語 en、中国語 zh-CN、フランス語 fr、ドイツ語 de、ロシア語 ruなど)

q・・・読み上げるテキスト(最大100文字)





試しにPythonでURLにアクセスして帰ってきたmp3をファイルに保存するようにしてみた。
実行すると、sample.mp3ファイルが作成される。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import urllib2

text = 'むかしむかしあるところにおじいさんとおばあさんがいました。'

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
url = 'http://translate.google.com/translate_tts?tl=ja&q=' + text
mp3data = opener.open(url).read()

f = open("sample.mp3","wb")
f.write(mp3data)
f.close


適当なUser-agentを付けないと、403エラーが返ってくるので注意

2012年6月23日土曜日

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 0: ordinal not in range(128)

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 0: ordinal not in range(128)

pythonプログラムを実行して、上記のようなエラーが発生するときは、
python のデフォルトエンコードをasciiからutf-8に変更する。

python-install-path/lib/site-packages/ディレトリ下(python-install-pathは自分の環境に合わせる)に、sitecustomize.pyという名前でファイルを作成し、utf-8を指定する内容を書いて保存する。


例えば、sitecustomize.pyのパスがこのようなとき、
/usr/lib/python2.6/site-package/sitecustomize.py

次のように書いて保存する。

import sys
sys.setdefaultencoding("utf-8")

2012年6月21日木曜日

UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position xxx-xxx: illegal multibyte sequence

Pythonで日本語をあつかう時に注意すること

shift_jisのファイルを読み込むと次のようなエラーが発生する場合

UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position xxx-xxx: illegal multibyte sequence

(xxxには数字が入ります)




解決方法



string = '何らかの機種依存文字'

通常shift_jisの時は下記のようにするところを

string.encode('shift_jis')



このように変更する

string.encode('cp932')



このcp932というのは、
Microsoft コードページ 932(以下 CP932)は、マイクロソフト及び、MS-DOSOEM ベンダが Shift JIS を独自に拡張した文字コードである。また同時に、CP932 は Shift_JIS の Windows アプリケーションにおける「実装」を指す用語であるとも言える。
(Wikipediaより引用: Microsoftコードページ932 - Wikipedia
だそうです。