리눅스에서 현재 시각 음성으로 알려주기

매시 마다 현재 시각을 아름다운 음성으로 알려주면 편할거 같아 만들었다.

집 거실에 Odroid 싱글보드컴퓨터Single-board computer가 설치되어 있고 스피커에 연결해서 인터넷 라디오, 웹서버 등등으로 이용중인데 매30분마다 현재시각을 음성으로 알려주도록 했다.

최대한 단순하게 구현하기 위해 흔한 3가지 프로그램을 조합했다

  1. cron : 스케줄 기반으로 매30분 마다 쉘을 호출

  2. shell script : 현재 시각을 읽어와서 mplayer 호출

  3. mplayer : 해당 음성 파일 재생.

    • TTS를 써도 되겠지만 리눅스용 한글 TTS를 구하기가 어렵고 목소리가 아름답지 않아서 별로임 -.- 그래서 구글 TTS 를 mp3로 변환해서 만들었다.
    • ffplay로도 테스트 했다.

쉘 스크립트 sayCurrHourAndMin.sh

#!/bin/bash
# mp3파일의 경로는 절대경로로 넣어야 cron에서 문제 없이 재생가능
baseDir="/home/bluedskim/utils/shell/sayCurrHourAndMin"

# 현재 시각 가져오기
currHour=$(date +"%I")
echo $currHour
# 현재 분 가져오기
currMin=$(date +"%M")
echo $currMin

vol=80
# 볼륨을 파일에서 읽어오려 할 때
#vol=`cat /home/odroid/Util/shell/sayCurrHourAndMin/volume.txt`
echo "volume : $vol"

# 시간 mp3 파일 
currHourMp3=$baseDir"/"$currHour"h.mp3"
# 분 mp3 파일
currMinMp3=$baseDir"/"$currMin"m.mp3"

# 해당 파일을 재생
#ffplay -nodisp -autoexit $currHourMp3 
#ffplay -nodisp -autoexit $currMinMp3
mplayer -volume $vol $currHourMp3 $currMinMp3
# 1초 쉬었다가
sleep 1
# 한번 더 파일을 재생
#ffplay -nodisp -autoexit $currHourMp3 
#ffplay -nodisp -autoexit $currMinMp3
mplayer -volume $vol $currHourMp3 $currMinMp3

cron 설정

*/30 * * * * /home/odroid/Util/shell/sayCurrHourAndMin/sayCurrHourAndMin.sh