ふゆみけ このページをアンテナに追加 RSSフィード

2014-07-15

[]VoiceText Web APIPythonラッパーを書いた

先日公開されたVoiceText Web APIPythonラッパーを早速書いてみました。

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

2014-06-09

デザインを変えた

ブログのデザインを変えました。

最近はこちらはほぼうpしておらず、技術ネタは主にqiitaに書いております。ではこちらはこのまま放置のままかと言うとそうではなく、純粋な技術ネタ以外の、最近エンジニアやって感じてることとかを書いていこうと思います。

本音は「昔はTwitterで愚痴垂れ流してたけど、最近はリアルの知り合いが随分多くなってきてアレだから、誰も見てないだろうここに書いちゃえ」ですw

2014-03-08

GistBoxを使ってみる

最近は技術ネタはQiitaに書いております。

それはいいんだけど、ブログにせよ、Qiitaにせよ投稿しようと思ったらある程度まとまった内容が

必要で、ちょっとした小ネタやTips、思いつきをそのまま書き散らかすには向いてないですよね。

とはいえどっかに書いとかないと、何度も同じ事調べたりする無駄が発生しちゃいます。

Evernote使えよという声が聞こえてきそうですが、我が愛機はUbuntuなのでよさげなEvernote

クライアントがないのが痛いところ。

Gistが良いんじゃないかとアタリをつけたんですが、どうもGistは検索周りが弱い印象。

ですが、この弱点を解消してくれるよさげなサービスを見つけました。

その名もGistBox

http://www.gistboxapp.com/

githubアカウントでログインすると、自分のgistがよさげなUIで管理できるようになります。

もちろん全文検索できるし、ラベルを付けたりもできるのでこれで自分の問題は解消されそう。

まだ使い始めたばっかなので、なんかノウハウ溜まってきたらまた書きます。

2013-07-23

[]TokyoSNAの発表資料をまとめてみた

最近はQiitaに移行しつつあってこちらは更新してませんが、たまにはなんか投下しようかと。

去年自分がやってた勉強会の資料をまとめてみました。

今思えば第一回の資料とか若気の至りで恥ずかしい限りですが、あの時若さに任せて思い切ってやってみた結果、知り合いも増えたし視野も広がったし、よかったかなあ、と(あれ真面目?)


社会ネットワーク分析勉強会 #1

http://atnd.org/events/29767

#1 でナンバリングしてたら、Twitterだとハッシュタグ扱いされる事に気付いて2回めからは普通に「社会ネットワーク分析勉強会 その◯」になりましたとさ。

1章

LT


社会ネットワーク分析勉強会 その2

http://atnd.org/events/30431

2章

LT

資料が見つからぬ


社会ネットワーク分析勉強会 その3

http://atnd.org/events/30600

3章


LT

発表者の方が来られなくなって中止だった。気がする。


社会ネットワーク分析勉強会 その4

http://atnd.org/events/31128

4章

LT


社会ネットワーク分析勉強会 その5

http://atnd.org/events/31314

5章

LT

資料なしだった気がする。


社会ネットワーク分析勉強会 その6

http://atnd.org/events/31909

6章

LT

資料が見つからぬ

社会ネットワーク分析勉強会 その7(第1期最終回)

http://atnd.org/events/32299

7章


LTの資料が見つからぬ、、、当時からこの辺の管理ちゃんとしとけばよかった、、、

あと「第1期最終回」ってあるけど2期はいつやるんですかね、、、

2013-04-24

[][]ElementTreeでEUC_JPとかShift_JISxmlを読み込む方法

PythonXMLを操作したい場合はElementTreeってのを使うといいらしいです。

ところが、euc-jpとかsjisでエンコーディングされたテキストをElementTreeに食わせようとすると

xml.etree.ElementTree.ParseError: unknown encoding: line 1, column 30

とかほざきやがります。euc-jpもsjisも知らないらしいです。アメ公ふざけんな。

ここから対処法

XMLの1行目にXML宣言が

<?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です。なんか釈然としない解決策ですが、、、