ev3devでmindstorm-EV3のスピーカーを使ってしゃべらせてみる


はじめに

ev3devを使ってmindstorm-EV3インテリジェントブロックのLEDを制御する方法を紹介します。
この記事は、EV3にev3devをインストールし、SSH接続できている状態であることを前提にしています。環境構築ができていない方はこちらの記事を参考にしてください。

mindstorm-EV3をLinuxで制御しよう! ev3dev OSのインストールととSSH接続

beepコマンドで音を鳴らそう

beepコマンドで音の周波数や再生時間を指定することができます。
周波数は1以上20000未満を指定できます。あまり周波数を高くすると、人間の耳には聞こえなくなってしまいますので、まずは400Hz低度で試してみましょう。また、再生時間をミリ秒単位で指定できます。

# beep # 440 Hzの音を200ms再生
# beep -f [周波数/Hz] -l [再生時間/ms]
robot@ev3dev:~$ beep -f 440 -l 200 

きらきら星を演奏させてみる

きらきら星を演奏するシェルスクリプトファイルを作ってstar.shとして保存しましょう。

star.sh
#!/bin/sh

beep -f 262 -l 180 -d 20 -r 2 \
-n -f 392 -l 180 -d 20 -r 2 \
-n -f 440 -l 180 -d 20 -r 2 \
-n -f 392 -l 380 -d 20 \
-n -f 349 -l 180 -d 20 -r 2 \
-n -f 330 -l 180 -d 20 -r 2 \
-n -f 294 -l 180 -d 20 -r 2 \
-n -f 262 -l 400

実行
robot@ev3dev:~$ sh star.sh

デバイスファイルを使う方法

音の再生

beepコマンド以外にも、デバイスファイルを使って音を再生することが可能です。

# 440 Hzの音を200ms再生
robot@ev3dev:~$ echo 440 200 >  /sys/devices/platform/snd-legoev3/tone
# 1000Hzの音を再生(連続)
robot@ev3dev:~$ echo 1000 >  /sys/devices/platform/snd-legoev3/tone
# 再生停止
robot@ev3dev:~$ echo 0 >  /sys/devices/platform/snd-legoev3/tone

ボリュームの調整

音量を調整することができます。デフォルトの音量は75に設定されていて、最小0最大100の範囲で設定可能です。

#デフォルトのボリューム(75)
robot@ev3dev:~$ cat /sys/devices/platform/snd-legoev3/volume
75
#ボリュームを100に設定
robot@ev3dev:~$ echo 100 >  /sys/devices/platform/snd-legoev3/volume

テキストをしゃべらせる

本題です。
espeakコマンドとwavファイルを再生するaplayコマンドを組み合わせて、EV3をしゃべらせてみましょう。

robot@ev3dev:~$ espeak "hello, I am an EV3." --stdout | aplay
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono

「hello, I am an EV3.」ev3がしゃべりました。男性の声でしたね。
女性の声にしたいならこうです。

# 女性声バージョン
robot@ev3dev:~$ espeak -ven-us+f4 -s170 "hello, I am an EV3." --stdout | aplay
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono

音声をwavファイルとして保存したい

先程のEV3がしゃべった音声をファイルとして保存するのは簡単です。

# hello.wavとして保存
robot@ev3dev:~$ espeak "hello, I am an EV3." --stdout >> hello.wav

再生

robot@ev3dev:~$ aplay hello.wav
Playing WAVE 'hello.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono

参考

ev3dev 公式ページ