kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Automator と say コマンドを組み合わせた簡単な音声テスト

「リモート研修」「リモート会議」をするときに,機材としては Blue Microphones YeticasterBeats Studio(有線)の組み合わせを使っている.特に「リモート研修」のように1日中配信を行う場合は遅延と充電の観点から意図的に有線を選びつつ,カジュアルな場であれば Bluetooth でも問題なく AirPods Pro を使っている.

オーディオ設定の確認 🎧

そのときに「オーディオ設定(特に出力側)はちゃんと機能している?相手の声をちゃんと聞ける状態になっている?」という個人的な不安があり,休憩時間など定期的に YouTube の適当なビデオを流して,音声テストをする癖がある.特に「リモート研修」では,なぜか BlackHole に設定されてしまう場面もあったりして「お客様の声をちゃんと聞ける状態になっている?」という確認を怠らないように意識している.

「Automator」+ say コマンド 🎧

繰り返し行うこともあり,毎回 YouTube を開きたくないし,最初に流れる広告で音声テストをすることになる場面も多いし(笑)もっと簡単な手順に移行したいと考えていた.現在は Mac (macOS) で使える「Automator」say コマンドを組み合わせた手順に移行して,数ヶ月使っている.個人的には便利で満足している!他にも実現方法はあると思うけど,特に配信中は Mac の負荷も高くなるため,不要なツールを常駐させたくなく,シンプルに実現したかった.今回は簡単に設定を紹介する!

できること 🎧

  1. アプリケーションの「サービス」メニューから「音声テスト(say コマンド)」を実行できる
  2. 任意のショートカットから「音声テスト(say コマンド)」を実行できる

f:id:kakku22:20210224181007p:plain

Automator を使う 🎧

まず「Automator」を開いたら「クイックアクション」を選択する.

f:id:kakku22:20210224181319p:plain

次に「アクション」「ライブラリ」「ユーティリティ」「シェルスクリプトを実行」を選択する.特に他サービスと連携する必要はなく「ワークフローが受け取る項目」「入力なし」にしておく.「検索対象」はデフォルトのまま「すべてのアプリケーション」にしておく.シェルスクリプトは以下のように say コマンドを実行する.文章は普通すぎて避難訓練のようになってしまった...!

$ say '音声テストです!聞こえますか?'

最後に「クイックアクション名」「音声テスト」と設定したら終了!簡単!

f:id:kakku22:20210224181455p:plain

ちなみに「クイックアクション」~/Library/Services に保存されている.最初すぐに見つけられなくて困った!

$ ls -1 ~/Library/Services
音声テスト.workflow

サービスを確認する 🎧

「クイックアクション」はすぐに使える.ChromeiTerm2 など,任意のアプリケーションを開いた状態から「サービス」「音声テスト」を選択すると say コマンドを実行できる.便利!うおおおおお!

f:id:kakku22:20210224182219p:plain

ショートカットを設定する

ショートカット経由で「クイックアクション」を実行することもできる.今のところ特に競合することのなさそうな「option + command + z」に割り当てて問題なく使えている.便利!ついつい押したくなってしまう!

f:id:kakku22:20210224183012p:plain

まとめ 🎧

Mac (macOS) で使える「Automator」say コマンドを組み合わせて気軽に「音声テスト」を実行できるようにした.今まで YouTube を使っていた手順をシンプルに移行できて満足している.なお,今まで「Automator」はほとんど使ったことがなかったけど,実はイロイロと使える便利なツールかも?と思った.他にも使えそうな場面があれば検討してみよう.

おまけ : say コマンド + Rubicure

なお,今回は最終的に「音声テストです!聞こえますか?」という普通すぎる文章になってしまったけど,検証段階では id:sue445 さんの Rubicure を使って,プリキュアの必殺技を読ませていたんだけど,say コマンドの声優さんとの相性が悪かったのと,間違って「リモート研修」中に配信してしまうとヤバイため,個人利用に留めている(笑)スクリプトは雑に書き捨てたからもっとシンプルに書けるはず!

require 'rubicure'
system("say #{Precure.healingood.girls.sample.attack_messages.first.gsub(/[\r\n]/,'')}")

github.com