<GravioテクニカルTIPS>Windows10版限定機能の“音声ファイル再生”と“テキストリーディング”アクションをMacで行なうためのシェルスクリプト作成と実行の方法
ご存知Gravioの機能として“音声ファイル再生”と“Amazon Pollyを利用したAI音声再生”というアクションがあるのですが、こちら、残念ながらWindows 10版のみでの動作となっております。
しかしながら、Macでも「アラームや警報音などの音源ファイル」を再生したり、「固定のテキストを読み上げたい」というニーズはございます。実はちょっと裏技的になりますが、これらは「シェルスクリプト」を利用することで実行可能です。少し遠回りではありますが、音声ファイル再生/固定テキストの自動読み上げに関するシェルスクリプトの作成と実行をMac上でどのように行なうか、Tipsとしてご紹介いたします。
なお、今回はchmodを使ってファイルやフォルダの権限を変更する必要が発生しますので、少し難しい内容となりますが、ご興味がございましたらぜひお試しください。
今回使うRunscriptアクション
Gravioに実装されている「Runscript」というアクションで、ユーザーが作成した「シェルスクリプト」をGravio Hub内で実行することができます。
こちらを使って音声ファイル再生や固定テキストの読み上げをローカル(エッジ)で行います。
全体の流れと使用するコマンド
音声が再生できるように作った「シェルスクリプト」をGravio HubにGravio Studio経由でUploadし、上記のアクション実行指示があった場合にHub内で起動させる、という仕組みになります。
なお、
- テキスト読み上げによる音声発出は ”say” コマンド
- 音源ファイルの再生は ”afplay” コマンドをシェルスクリプト上で利用します。
作業開始!
1. Mac上で動作する「シェルスクリプト」をつくる
まずはテキスト読み上げのスクリプトを書いてみましょう。
スクリプトの記載方法はQiitaなどに各種情報がありますので、ぜひ勉強してください
今回は
#!/bin/sh
say "hello world"
という内容のスクリプトを作成すればOKです。
(作成したスクリプトのファイル名はhogesay.shなど、お好きに命名してください)
なお、スクリプトの記述はMacであればテキストエディターで問題ありません。
次に、音源再生のスクリプトも作ってみましょう。
#!/bin/sh
afplay "/path/to/the/audio/file.mp3"
という内容が記載されたスクリプトを記載すればよいですね。
こちらもわかりやすいファイル名をつけておきましょう(ファイル名例:hogeplay.sh)。
なお、音源再生の場合は、再生するファイルの指定が必要です。
上記を見て頂くとおわかりかと思いますが、afplayに続くパスに、再生したい音源ファイルがおいてある場所を指定します。
さて、上記2つの「シェルスクリプト」が完成したら、動作するか確認しておきましょう。
スクリプトを実行するには、source か . (ピリオド)を作成したファイル名の頭につけて、ターミナルから実行します。
ターミナルを開き、先ほど作成したシェルスクリプトのあるディレクトリに移動し、そこで
source hogeplay.sh
とか
. hogesay.sh
と打つことで作成したシェルが走ります。
ハローワールド、とMacがしゃべったり、指定した音声ファイルが再生されれば成功です。
2. 作成したシェルスクリプトをGravioにアップロードする
Gravio Studioの「アクション設定画面」→「アクションの新規作成」を行います。
次に、「ステップの追加」で、「Runscript」を選択し追加します。
次に、作成したシェルスクリプトファイルをアップロードします。
通常ですと、Gravioをインストールした
/Library/Application\SUPPORT/Gravio/action/scripts/
にアップロードしたスクリプトは格納されます。
ここで注意!
作成したこれらの.shスクリプトをGravioのRunscriptアクションでアップロードするのですが、OSのセキュリティ上、そのままではスクリプトが実行できません。
アップロードしたファイルの属性を変更し、実行できるようにしてあげないとなりません(ここがひと手間お願いするところです)。
そこで、Mac上のターミナルを利用して、
cd /Library/Application\SUPPORT/Gravio/action/scripts/
当該のディレクトリにたどり着いたら、
sudo chmod 755 hogesay.sh
とか
sudo chmod 755 hogeplay.sh
と入力し、パスワードを入力して属性を変更します。
これでそれぞれのスクリプトがGravio経由で実行可能となります。
ここまで出来たら、作ったscriptを走らせてみましょう。
いつもどおり、アクション作成画面の右上の▶ボタンですね。
設定した音源ファイルが再生されるか、もしくは記載したテキストが読み上げられると思います。
以上がスクリプトの作成、及び実行の方法の説明となります。
今回はシェルスクリプトを活用して、音源ファイルの再生や、固定テキストの読み上げなどを行いましたが、シェルによって記述できるものであれば、基本的には同じ形で動作させることができます。
Wake On LAN対応のTVやスマート家電に信号を送るなども可能です(別途プログラムやコマンドのインストールが必要になる場合もあります)。
是非使いこなしてみてください。