Nodeが入っていれば、
$ npx sana-voice てね
$ npx sana-voice エッチ
はい。という感じで再生されます。
もちろんインストールした方がいいでしょう。
$ npm i -g sana-voice
さなボタン から引数なしならランダムもしくはキーワード付きで再生します。また一度再生したものはキャッシュされます。
GitHub: akameco/sana-voice: さなボタンからランダムに再生するCLI
コマンドラインでmp3を再生するには
さて、sana-voice
を作るに当たりそれぞれのOSのmp3プレイヤーをラップしたmp3プレイヤーのCLIツールであるsymphogear
を書きました。
GitHub: akameco/symphogear: cacheable mp3 player from files and url for CLI
npm install --global symphogear
でインストールできます。
それぞれのOSにはコマンドラインで動作するシンプルなmp3プレイヤーがあります。
例えば、MacOSならデフォルトでafplay
が使えます。
mplayer等について以下の記事が役立つと思います。
mplayerというソフトが素晴らしすぎて困る - プログラムモグモグ
symphogear
は以下のプレイヤーのラッパーです。
- mplayer
- afplay
- mpg123
- mpg321
- play
- omxplayer
- aplay
- cmdmp3
ヒットしたプレイヤーによってmp3を再生します。
これによって、環境の差異を考えずに済みます。
Node.jsでこのようなコマンドを実行したいときは、Promiseベースでchild_process
を扱えるexecaが便利です。await execa(player, [await fetch(link)])
みたいな感じで書けます。
また、afplayなどはurl形式を直接再生できず、ローカルにファイルを保存する必要がありますが、symphogearはurlを指定して直接再生することが可能です。
また一度再生したファイルをキャッシュされるので同じurlが指定されてもhttpリクエストが飛ぶことはありません。
関連
さなボタン http://sanabutton.ojaru.jp/ は一言でいうと努力が素晴らしいので、一度その情熱を確認すべきだと思います。
名取さな関連でいうと、24時間名取さなのことを考えているオタクが作ったttene.nvimがオススメです。
改行する度に(InsertModeでEnterする度)に名取さなの「ってね」が再生されるプラグインです。https://t.co/JdmmOXw8Qv
— ひまのあ🍆🍆🍆@1日目 西め07a (@h1manoa) June 18, 2018