Google Homeと違って、RaspberryPiでは決まった時間に自発的にニュースを喋ってもらうことが可能です!便利なので少し進化させてみました!
スポンサーリンク
今までのラズパイの機能
以前、RaspberryPiで音声合成を使ってニュースを読み上げる機能を紹介しました。
前回の記事で紹介したものは音声合成なので「どんな内容のニュース伝えようとしてくれてるのかな?」と、聞き手が注意して聞かないと理解できないニュースがあるんですよね。(RSSからニュース記事を取得していることもあって、概要を把握したいだけならとても良い感じです)
先日、Google Homeを購入したこともあり、やっぱり音声合成でも聞きやすい方が良い!というのと、やっぱりNHKニュースは聞きやすくて良いな…と再認識してしまいました。
ということで、今回はラズパイでNHKニュースを読み上げてもらおうと思います!
システムの概要
システムとしては超シンプルです!
- NHKラジオニュースの音源を取得する
- ラズパイで再生する
この2つだけです!やりたいことはGoogle Homeで「OK Google, ニュースを聞かせて」と言った時と同じです。(Google Homeでは最新のNHKラジオニュースが再生される)
Google Homeとラズパイの大きな違いは、ラズパイだと自発的にNHKニュースだけを再生してくれる!ということです。
ニュース音源について
再生するニュースは、NHKラジオニュースが配信している最新のニュース音源を使うことにします。
NHKラジオニュースの配信時間は24時間となっているので、過去のニュースを再生するのには向いていません。
ちなみに、第三者が提供する音源などは自己責任でお願いします、との記載があるので今回紹介する方法で再生すること自体は特に問題ないように見えますね。
実装
早速実装してみましょう!今回もPHPを使って実装することにします!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php ///////////////////// // 2017.12.18 wrote. ///////////////////// //コマンドのパスを指定する $wget_cmd = '/usr/bin/wget'; $mpg321_cmd = '/usr/bin/mpg321'; //一時ファイルの名称 $tmp_file = "/tmp/news.mp3"; //最新のニュース音源のURLを取得する $news_url = get_news_url(); //ニュースの音源を取得する exec($wget_cmd.' -O '.$tmp_file.' '.$news_url); //ニュースを再生する exec($mpg321_cmd.' '.$tmp_file); function get_news_url() { //XMLファイルを取得する $rss = simplexml_load_file('http://www.nhk.or.jp/r-news/podcast/nhkradionews.xml'); //先頭のアイテム(最新のニュース)のURLを取得する $result = $rss->channel->item[0]->enclosure['url']; return $result; } ?> |
ソース中のコメントの通りですが簡単に紹介します。
- 実行コマンドのパスや一時ファイルの場所を設定する
- PodcastのXMLをパースし、最新のニュース音源のURLを取得する
- wgetで音源を取得する
- 取得した音源をmpg321で再生する
wgetコマンドで直接ニュース音源のURLを指定しても再生できますが、再生中に止まることがあったのでwgetでちゃんと受信したものを再生するようにしてみました。(受信が追っつかずに止まったのが原因かもしれません)
上記コマンドをphpで実行すればOKです。再生する毎にファイルをダウンロードしていますが、再生後に削除していないので気になる方は削除して下さい。
cronスケジューラで任意のタイミングで実行すれば、指定した時間に最新のNHKラジオニュースが再生されます。
これでラズパイがGoogle Homeに近づきました(笑)
最後に
いかがでしょうか。ラズパイで再生しているだけですが、使えるツールになったことでまた一歩進化した気がします!
みなさんもNHK受信料はちゃんと払いましょうね(笑)