柄スタイル

ここは文系のオッサンがITに立ち向かう所

Raspberry Piをしゃべらせてコドモ達を起こせ その2

   

meiの声で毎朝コドモ達を起こせ

コドモ達の部屋の目覚まし時計が鳴らなくなってしまいました。そこでRaspberry Piと音声合成システムを使って、目覚まし時計のようにしてみます。前回は発声するところまで出来ました。次は時間を読み上げて、定時に動作させます。

日時をしゃべってもらう

セルスクリプトjsayalarmclockmei_normal.shを作成します。mp3のアラーム音を鳴らしたあと日時時刻を読み上げます。
動作している様子。素材はMusic is VFRさんからいただきました。

#!/bin/sh
# mp3のアラーム音の後に文章を読み上げます

# mp3ファイルを再生する
mpg321 /home/pi/Documents/OpenJTalk\ Projects/sound/Clock-Alarm\ Dig01-1L.mp3

# mei_normalで発声する
TMP=/tmp/jsay.wav
echo おはようございます。今日は"`date +%m`月`date +%d`日`date +%A`です。`date +%k`時`date +%-M`分になりました。 起きろ!起きろ!" | open_jtalk \
        -m /usr/share/hts-voice/mei/mei_normal.htsvoice \
        -x /var/lib/mecab/dic/open-jtalk/naist-jdic \
        -ow $TMP && \

# 音声ファイルを再生する
aplay --quiet $TMP

# 音声ファイルを削除する
rm -f $TMPo

音声の合成に時間がかかるようでアラーム音の後に間が空いてしまいます。RaspberryPiでなくノートPCで行ったところ、アラーム音の後にすぐ音声が流れました。

mp3再生について

 
$ aply test.mp3

wavファイルを再生すると同じように「aply」で実行するとノイズ1)ひどいノイズが流れて、何が起きたかしばらくわかりませんでしたになってしまうので、「mpg321」をインストールします。

$ sudo apt install mpg321

次の様にすればmp3を再生できます。

$ mpg321 test.mp3

LEDを光らせる

しゃべらせる時にLEDも光らせます。部屋が明るくなるとより起きやすいかと思います。
led_Pika.pyを作成します。

# coding: utf-8

# ライブラリをインポートする
import RPi.GPIO as GPIO
import time

# 警告文を出さない
GPIO.setwarnings(False)

# GPIO指定をGPIO番号で行う
GPIO.setmode(GPIO.BCM)

# GPIO4番ピンを出力モードに設定する
GPIO.setup(4, GPIO.OUT)

# GPIO4番ピンを3.3Vに設定する
GPIO.output(4, GPIO.HIGH)

# 15分待つ
time.sleep(900)

# GPIO4番ピンを0Vに設定
GPIO.output(4, GPIO.LOW)

# GPIO設定をリセット
GPIO.cleanup()

cronで毎朝の繰り返しの設定

5時50分から6時までの10分間に5回しゃべらせます。2)土日は違う時間にするのもありです

50 05 * * * sh Documents/OpenJTalk\ Projects/jsayalarmclockmei_normal.sh
50 05 * * * python Documents/Gara\ Projects/led_Pika.py
52 05 * * * sh Documents/OpenJTalk\ Projects/jsaymei_happy.sh さあ、起きる時間だよ。目を覚まそう。
53 05 * * * sh Documents/OpenJTalk\ Projects/jsaymei_sad.sh 3分経ったよ。起きよう。 3分経ったよ。起きろ。
15 05 * * * sh Documents/OpenJTalk\ Projects/jsaymei_bashful.sh もう起きる時間過ぎてるよ。 起きる時間過ぎてるよ。
00 06 * * * sh Documents/OpenJTalk\ Projects/jsaymei_angry.sh こらー。早く起きろー。もう10分も経ってるよ。

1行目は先程作成したものです。日時と時刻などをしゃべります。2行目はそれと同時に15分間LEDを点灯します。3行目以降は「mei」のノーマルボイス以外の4つのボイスをそれぞれ発声させるようにしています。

まとめ

目覚まし時計としての目的は十分に達成出来ました。いきなり音声を流すとビックリするのでアラーム音を先に再生するのはうまく行っていると思われます。発展系として毎日違うことを言う。寝る時間をしゃべらせる。タクトスイッチ等を入力したら動作を止める、またはしゃべる。LEDの点灯パターンを変化させる。いろいろと機能を付け加えていくと面白いものになると思います。

 

References   [ + ]

1. ひどいノイズが流れて、何が起きたかしばらくわかりませんでした
2. 土日は違う時間にするのもありです

 - Raspberry Pi , , ,