OK、京急!
ノリで買ったSpeaker pHat
ちょっと前にこれを買いました。
Pimoroni Speaker pHAT - スピーカー pHAT キット
- メディア: エレクトロニクス
Lチカ、電子ペーパー、と来たら、次は音。とりあえずスピーカーをチョッパヤで鳴らしてみたかったのでこれを購入。Raspberry Piにスピーカーが付けば、音を鳴らせることもできるし、喋れるし、なんでもできそうです。
とりあえず環境構築
とりあえず、GPIOで接続したSpeaker pHatから音が出るようにしなければなりません。上記の公式レポジトリの情報をもとに、以下のスクリプトを実行。
curl -sS https://get.pimoroni.com/speakerphat | bash
簡単ですね。この状態で、英語を喋らせるだけなら、espeak
コマンドを叩けばいいだけで、
espeak shithole
とか、汚い言葉を喋らせることも可能です。ただ、日本語のText-To-Speechには対応していません。そこで、gTTS
というPythonパッケージをインストールしてみることに。
sudo pip install gTTS
これで完了。mp3ファイルとしてアウトプットされるので、これをコマンドラインから簡単に再生するために、mpg321
もインストールしました。
sudo apt install mpg321
apt
もpip
も楽チンで最高ですね。
早速実装
gTTS
を使う関係上、メインのコードはPythonで書いていきます。
上記サイトの運行情報の文字列だけパースして、gTTS
でmp3ファイルを生成、それをmpg321
で再生するコードを書いてみました。
# coding=utf-8 import urllib2 import os from gtts import gTTS from HTMLParser import HTMLParser class KeikyuUnkoParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.flag = False self.unko = "" def handle_starttag(self, tag, attrs): attrs = dict(attrs) if tag == "div" and "class" in attrs and attrs["class"] == "unko-panel": self.flag = True def handle_data(self, data): if self.flag: self.unko = self.unko + data def handle_endtag(self, tag): self.flag = False def get_unko(self): return self.unko.replace("\n", "").replace("\r", "").decode("utf-8") if __name__ == "__main__": url = "http://unkou.keikyu.co.jp/" response = urllib2.urlopen(url) parser = KeikyuUnkoParser() parser.feed(response.read()) parser.close() response.close() tts = gTTS(text=parser.get_unko(), lang='ja') tts.save("unko.mp3") os.system("mpg321 unko.mp3")
unko
とは運行のことです、念のため。
どんな感じで喋るの?
たまたま、日ノ出町駅で人身事故が起こった後だったので、淡々と運行情報を喋ります。ちょっとぎこちない感じも否めなくはないですが、ちょっと鈍臭くて、逆に可愛いですね。