以下の内容はhttps://relativelayout.hatenablog.com/entry/2018/01/24/002910より取得しました。


Raspberry Pi + Speaker pHat で京急の運行情報を喋らせてみる

OK、京急

Raspberry Pi Speaker pHat

ノリで買ったSpeaker pHat

ちょっと前にこれを買いました。

  • メディア: エレクトロニクス

Lチカ、電子ペーパー、と来たら、次は音。とりあえずスピーカーをチョッパヤで鳴らしてみたかったのでこれを購入。Raspberry Piにスピーカーが付けば、音を鳴らせることもできるし、喋れるし、なんでもできそうです。

とりあえず環境構築

github.com

とりあえず、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

aptpipも楽チンで最高ですね。

早速実装

gTTSを使う関係上、メインのコードはPythonで書いていきます。

unkou.keikyu.co.jp

上記サイトの運行情報の文字列だけパースして、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とは運行のことです、念のため。

どんな感じで喋るの?

京急運行情報を #speakerphat を使って#raspberrypi に喋らせてみた

A post shared by pokio (@pokiiiiio) on

たまたま、日ノ出町駅で人身事故が起こった後だったので、淡々と運行情報を喋ります。ちょっとぎこちない感じも否めなくはないですが、ちょっと鈍臭くて、逆に可愛いですね。




以上の内容はhttps://relativelayout.hatenablog.com/entry/2018/01/24/002910より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14