9
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スマートスピーカーAdvent Calendar 2017

Day 9

Google-Home + 艦これ時報

Last updated at Posted at 2017-12-18

アドベントカレンダー 9日目
投稿されないようなので、先ほど作成したも物をご紹介します。

何をするの?

ラズパイを使ってGoogle-Homeに、艦娘たちの声で時報を行なってもらいます。

どうやる?

ラズパイ上のcronを使って、Google-homeからMP3を再生。
前提条件として、Google-Home-Notifierのインストールと
ApacheなどのWebサーバが動いている事が条件となります。

環境

  • Raspberry Pi
  • Apache (Webサーバとして)
  • Node.js
  • Google-Home-Notifier
  • Node-Cron
  • PM2
  • FTP (MP3アップロードにあったほうがいい)
  • 艦娘たちのボイスMP3
  • 録音を頑張って。

ボイスMP3の準備

艦娘の時報MP3ファイルの名前規則を以下としました。

金剛 → kongo_00.mp3 , kongo_01.mp3 ...
名前をローマ字に、その後に時刻を24hで表記、これで起動の際に数字を指定します。

これらをWebサーバが参照できる場所にFTPなどで保存します。
スクリーンショット 2017-12-18 00.11.08.png

発信スクリプト

Cron用のスクリプトが以下です。

cron.js
require('date-utils');
const googlehome = require('./google-home-notifier');
const language = 'ja';
googlehome.device('Google-Home', language);

// 艦娘のリスト現在は4人だけ収集しました。
var kanmusu = [
'kongo_',
'fubuki_',
'akatsuki_',
'hiei_',
'iku_'];

let cron = require('node-cron');
cron.schedule('0 0 18-23,0,1 * * *', () => {

var dt = new Date();
var H_word = dt.toFormat("HH24"); //24時間表記で取得
var date_word = dt.toFormat("DD"); //いずれは日によって振り分けしたい。

time_word = H_word; 
date_word = "4"; //現在は伊19限定、0にすれば金剛、1にすれば吹雪となる。

//URLの組み立て。
sp_text='http://192.168.1.207/~pi/jiho/'+ kanmusu[date_word] + time_word + '.mp3'

//アクション
googlehome.play(sp_text, function(res) {
  console.log(res);
});


});

Cronの時間表記で喋らせたい時間も変更可能。
応用編として艦これだけでなく、定期連絡のアナウンスに使えるかも。

この後、PM2でスタートすればデーモン化して常駐する。
pm2 start cron.js

テストショット。
0時の伊19

9
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?