VoiceText Web API のPythonラッパーを書いた
先日公開されたVoiceText Web APIのPythonラッパーを早速書いてみました。
https://github.com/who-you-me/pyVoiceText
本体はワンファイルなんで、ここにもコード貼り付けちゃいます。
#-*- coding: utf-8 -*- import json import requests from requests.auth import HTTPBasicAuth class VoiceText(object): VERSION = "v1" URL = "https://api.voicetext.jp/%s/tts" % VERSION def __init__(self, key): self.key = key def fetch(self, text, speaker, out=None, emotion=None, emotion_level=1, pitch=100, speed=100, volume=100): params = { "text": text, "speaker": speaker, "pitch": pitch, "speed": speed, "volume": volume } if emotion: params["emotion"] = emotion params["emotion_level"] = emotion_level wave = self._request(params) if out: self.save(wave, out) return True return wave def _request(self, params): auth = HTTPBasicAuth(self.key, "") resp = requests.post(self.URL, params=params, auth=auth) if resp.status_code == 200: return resp.content else: content = json.loads(resp.content) message = content["error"]["message"] raise Exception("%s: %s" % (resp.status_code, message)) def save(self, wave, out): with open(out, "wb") as f: f.write(wave)
使い方はreadmeに書いてあるんでそっちを見てください。
PyPiに登録したので、pipでインストールできます
$ pip install pyVoiceText
GistBoxを使ってみる
最近は技術ネタはQiitaに書いております。
それはいいんだけど、ブログにせよ、Qiitaにせよ投稿しようと思ったらある程度まとまった内容が
必要で、ちょっとした小ネタやTips、思いつきをそのまま書き散らかすには向いてないですよね。
とはいえどっかに書いとかないと、何度も同じ事調べたりする無駄が発生しちゃいます。
Evernote使えよという声が聞こえてきそうですが、我が愛機はUbuntuなのでよさげなEvernoteの
クライアントがないのが痛いところ。
Gistが良いんじゃないかとアタリをつけたんですが、どうもGistは検索周りが弱い印象。
ですが、この弱点を解消してくれるよさげなサービスを見つけました。
その名もGistBox
githubアカウントでログインすると、自分のgistがよさげなUIで管理できるようになります。
もちろん全文検索できるし、ラベルを付けたりもできるのでこれで自分の問題は解消されそう。
まだ使い始めたばっかなので、なんかノウハウ溜まってきたらまた書きます。
TokyoSNAの発表資料をまとめてみた
最近はQiitaに移行しつつあってこちらは更新してませんが、たまにはなんか投下しようかと。
去年自分がやってた勉強会の資料をまとめてみました。
今思えば第一回の資料とか若気の至りで恥ずかしい限りですが、あの時若さに任せて思い切ってやってみた結果、知り合いも増えたし視野も広がったし、よかったかなあ、と(あれ真面目?)
社会ネットワーク分析勉強会 その3
LT
発表者の方が来られなくなって中止だった。気がする。
社会ネットワーク分析勉強会 その4
社会ネットワーク分析勉強会 その5
LT
資料なしだった気がする。
社会ネットワーク分析勉強会 その6
LT
資料が見つからぬ
社会ネットワーク分析勉強会 その7(第1期最終回)
7章
LTの資料が見つからぬ、、、当時からこの辺の管理ちゃんとしとけばよかった、、、
あと「第1期最終回」ってあるけど2期はいつやるんですかね、、、
ElementTreeでEUC_JPとかShift_JISのxmlを読み込む方法
PythonでXMLを操作したい場合はElementTreeってのを使うといいらしいです。
ところが、euc-jpとかsjisでエンコーディングされたテキストをElementTreeに食わせようとすると
xml.etree.ElementTree.ParseError: unknown encoding: line 1, column 30
とかほざきやがります。euc-jpもsjisも知らないらしいです。アメ公ふざけんな。
ここから対処法
<?xml version="1.0" encoding="euc-jp"?>
こんなふうに書かれてると思います。こいつを削除した上で、エンコーディングをUTF8に変えてやります。
import xml.etree.ElementTree as ET lines = xml_string.split("\n") xml_string = "\n".join(lines[1:]) xml_string = xml_string.decode(API.encoding).encode('utf8') et = ET.fromstring(xml_string)
これでおkです。なんか釈然としない解決策ですが、、、
Ubuntu12.04にTremaをインストール
春からネットワークエンジニアになりました。まだ見習いですが。
というわけで、次の時代を見据えてOpenFlowに挑戦しようと思います。
PythonのPOXというフレームワークがあるらしいので本当はそっち使いたいんですが、まだ日本語情報が皆無のようなので、とりあえずは感じを掴むために、『OpenFlow実践入門』という本を参考に、RubyのTremaっていうフレームワークを使ってみます。
Tremaのインストール
まずは手持ちのUbuntu12.04マシンにTremaをインストール。
本ではgccやmakeも入れるって書いてあるんですが、さすがに最初から入ってるっしょw
つーわけで
sudo apt-get install ruby1.8 rubygems1.8 ruby1.8-dev irb libpcap-dev libsqlite3-dev
でインストール。Ruby1.9以降では動作しないようなのでバージョンに注意しましょう。
もろもろインスコできたらgemでTremaをインストールします。
sudo gem1.8 install trema
ちゃんと入ったか確認するためバージョン確認。
$ trema --version trema version 0.3.19
現時点(2013/4/8)でのバージョンは0.3.19みたいです。
インスコ後
これでとりあえずハロワはできます。
今後は、とりあえず本全部読んでみます。んで、本によれば2000円強でOpenFlowスイッチ作れるらしいんで読み終わったら実機で遊んでみようと思います。POXに挑戦するのはその後ですかね。