OBS Studioの出力映像を外部レコーダーで負荷分散するTips

Pocket

OBS Studioは録画と配信が同時にできるスグレモノのフリーソフトですが、PCがあまりハイスペックではない場合(dGPU非搭載PC等)、1台に両方を賄わせようとすうると厳しいものがあります。そこでHDMI入力のある外部レコーダーやキャプチャ装置をつけた他のPCにどちらかを任せてしまうことを考えます。しかしその際に問題になるのが、PCの画面をHDMIでそのままミラーリング出力した場合、OBSのUIなども一緒に映り込んでしまいます。なんらかの方法で範囲指定してクロップした場合も、解像度が落ちてしまったり、うっかりウインドウ位置を変更したら録画位置から外れてしまうなどの問題があります。

これを解決するためのOBS Studioの便利技を見つけたので書き残しておくことにします。

皆さんは2画面モニタのPC(ノートPC+プロジェクターなどでも可能)PowerPointのスライドショーを使ったことはおありでしょうか。あれってメインモニタ(=内蔵モニタなど)側には様々な操作をするUI込みのスライドが映り、サブ画面(=プロジェクター側)にはスライドのみが全画面表示されます。あの状態であればサブ画面側のHDMI映像をそのまま録画すれば余計なものが映り込んだり、表示区域がズレたりといった事故は起きません。以下でお伝えるのはまさにそれをOBS Studioで実現するための方法です。

Windowsで説明しますが、Macでも基本同じようにできるはずです。

1) 録画(配信)機器をサブモニタとして認識させる

PCにサブ画面用のHDMI出力があればそこに録画機器をつなぎます。設定によってはメインモニタとサブモニタに同じ内容が表示されるミラーリング(複製)モードになっている場合があります。ディスプレイ設定を開き、「1|2」のような表示になっていたらミラーリングモードです。

ミラーリング設定になっている場合の表示

この場合、そのまま画面を下にスクロールし、「マルチディスプレイ」から「表示画面を拡張する」を選びます。

ミラーリング(複製)から拡張設定に変更

そうすると最初の図が下のように「1」と「2」が別々に分かれて配置されると思います。これでサブモニタが独立した第2モニタとして設定されたことを示します。1と2の位置関係は変更可能ですが、今回はどこにあっても構いません。解像度は録画機器が対応する最大解像度になっていると思いますが、必要なら変更しておきます。

デスクトップ拡張モードに変更した状態

■OBS Studioからサブモニタをプレビュー用に使う

次にOBSを起動し、プレビュー画面上で右クリックし下図のように「全画面プロジェクター」→外部モニタのモデル名を選びます。写真ではATEM Mini Proをつないでいますがメーカー名のBlackmagic Designを略した「BMD HDMI」という名前で認識されていました。

OBSのプレビューを右クリック

これで、OBSが出力用にレンダリングしている映像がセカンダリモニターに文字通り全画面表示されます。プライマリモニター上でOBSのサイズをかえたりしても影響を受けません。またスタジオモード(シーン変更などをプレビューしてから反映させる2画面モード)を使っても常に出力画面側が送られます。

後は録画機器側で録画するだけです。応用としては、外部接続を配信用のエンコーダー機器にするとか、HDMI-UVCキャプチャアダプタで別PCに取り込むとかも可能でしょう。

これでOBSが稼働するPC側では録画(配信)を行わなくてよくなるので、その分負荷を下げられるわけです。HDMIケーブル1本で接続できるので比較的距離をおいた場所に配置できる点も良いです。

試してないですが、キャンバスや出力解像度を4Kとかにして、Elgato 4K60S+のようなハードウェア4Kキャプチャ機器をつなげば、フルHD x4みたいなマルチカメラ映像も縮小無しで高解像度に安定して4Kキャプチャできちゃうのじゃないかなと。

参考になれば幸いです。

NDIを使ってTeamsインタビューの録画レイアウトをカスタマイズする

Pocket

TeamsやZoomを使ってリモートUTやリモートインタビューを実施することも増えているご時世かと思います。こうしたオンライン会議ツールはボタンひとつで録画が行われるのも便利な部分ですが、UTに使うににはやや難点あります。それは複数の画面ストリーム(UTだと、参加者カメラ、モデレーターカメラ、画面共有など)を1つの録画映像としてレイアウトする時の自由度の低さです。UTでは画面共有がメインで大きくみたいことがほとんどだと思いますが、そこの制御が自動まかせで意図通りにいかないことがあります。3ストリームが単純2×2の四分割とかになると、無駄に顔が大きく映っていて、共有画面が小さく文字が読めない、しかも1/4は真っ黒で無駄、みたいな。Zoomだといくつかのパターンから選べるみたいですが、これもやっぱり制約は残ります。画面の右上が重要だから話者は左下に置きたい、とか。こうしたレイアウトはサーバー側で組まれた状態で配信されるので、クライアント側ではどうしようもないと思っていました。

しかし、TeamsでNDI出力という機能を使うと、参加者毎、画面共有、アクティブスピーカー(自動切り替え)といったストリームを個別に取り出せ、しかもOBS Studioのプラグインを使えば独立のソースとして扱えるということがわかりました。OBS上で独立ソースとして受けられるのであれば、レイアウトは好きに組み放題で、それを録画したり別のサービスに配信したりも可能です。またこれらの映像/音声はネットワークを経由した伝送になるので、TeamsクライアントとなるPCとOBS Studioで録画/配信を行うPCを分けることができ負荷分散させることもできます。

ということで早速テストしてみました。

Teamsの映像/音声を外部送信するのはプライバシー的な問題もあって許可設定が多段になっていているので順を追って説明します。

■Teams管理者画面でNDI出力を許可する

はい、いきなりこれが一番大きな壁です。大元のところでNDIを許可する必要があります。私は個人契約なのでホイっとONにするだけですが、企業アカウントとかだと管理者に事情を説明してONにしてもらうのが大変かも知れません。頑張ってください。全員まとめてON/OFFではなく会議ポリシーというのを複数作成してわけることができるので、きちんと設定すればリスクは最低限にできるはずです。

参考までに「Teams管理センター」(Web)の画面を貼っておきます「会議ポリシー」を開くと、作成済みのポリシーセット一覧画面になるので、許可したいポリシーセットを選びます。私は個人なので「グローバル(組織全体の規定値)」を選んで丸ごと許可してしまいました。「NDIストリーミングを許可する」を「オン」にします。以下の第二、第三の壁があるので、意図せず会議が盗聴されるようなリスクはほぼないんじゃないかなと思います。

Web管理画面

■Teamsクライアントアプリ上で有効化する

次がTeamsアプリ上での許可です(ブラウザやモバイルアプリではできません)。「アプリのアクセス許可」を開くと「ネットワークデバイスインターフェイス(NDI)」という項目があるので有効化します。

PC用Teamsアプリの設定

これはトラップがあって、「Teamsアプリを起動する度にオフに戻る」仕様となっています。うっかり有効化したままにならないようにとの配慮なんでしょうが、忘れがちなので↓の操作ができなかったらここを再確認してみてください。

■会議ごとの開始操作

最後に会議中の開始操作が必要です。三点メニューから「NDIで送信」を選びます(止める時も同じところから)。

会議中に個別に開始操作

ここまでしてようやくネットワーク上にNDIフォーマットでのポートが開くことになります。

■OBS Studioで受信する

NDIはNewTek社が策定した規格なので、準拠している製品からなら送信や受信ができます。ここでは無料ツールのOBS StudioをTeamsと同一PC上で起動してテストします。

OBS Studioの基本操作はこちらの記事などを参考にしてください。

OBS Studio単体ではまだNDIに対応しておらず、別途こちらのプラグインをインストールします。Releaseページからお使いのOSにあわせたインストーラーをダウンロードしインストールします(Windows版は再起動が必要でした)。

インストール後にOBSを起動すると、ソース一覧に「NDI Source」が出現するはずです。こちらを追加してやるとプロパティ画面が開き、「Source name」プルダウンメニューにTeams会議上の参加者別のストリームが現れます。

NDI Sourceからストリーム一覧が選べる

この例だと「ローカル」が同一PC上のカメラ画像、「古田一義」がスマホから参加したカメラ画像、「共有画面」はその名の通り共有画面で、「アクティブなスピーカー」は今しゃべっている人のカメラ画像に自動で切り替わるストリームだと思います。

必要な数宇だけ「NDI Stream」ソースを追加し、ここでそれぞれのストリームを選んでやるだけです。

ちなみにTeamsはネットワーク速度にあわせて解像度を変化させていまうので、それに追随させずに大きさを固定にする方法はこちらの記事が参考になります(「余談」のすぐ上の辺り)。

「アクティブなスピーカー」をソースにする場合も設定しておくのが良いかも知れません(スマホ参加者だと縦長になったり)。

■まとめ

今まで名前くらいしか知らなかったNDIという規格ですが、色々と使い道がありそうです。Teamsから個別のストリームが取り出せるならば、インタビューをTeamsで実施しつつ、OBSで特定の画面だけ取り出したり自在にレイアウトをした映像を見学者向けにZoomで配信したりとかもできます。

またスマホのカメラ映像をNDI出力するアプリを使えば、OBSのソースに直接取りこめるので、なんらかのツールでいちどPCの画面に映したものをOBSでウインドウキャプチャする、みたいなことをしなくて済むようになり、画面の使用効率を良くなるしおそらく負荷的にも軽くなるんじゃないかと期待されます。そうしたアプリとしてはNDI HX CameraがiOS、Androidともにあります。

iOS版がちと良いお値段しますが、憶えておいて機会ができたら試してみようと思います。

他にもHDMI入力をNDI出力したり、その逆をするハードウェア製品も存在するようで、思索が広がります。

ちなみにATEM Miniシリーズで有名なBlackmagic Design社からも似たようなネットワーク映像/音声ストリーム->HDMI変換装置Streaming Bridgeが出ていますが、NDIとは互換性がないようです。どちらかといえばRTMP勢で、ATEM MiniやOBSからの配信を受けてHDMIでモニターに映すなどするものと思っておけばよさそう。NDIはローカルネットワークでのやりとりに使うものですが、RTMPならインターネット経由でも使えるので、用途で使い分ける感じですね。こちらも機会があれば試してみたいものです。

 

ノートPCでOBS Studioの負荷テスト(3カメラ、USBマイク、Teams送信)

Pocket

近く機材持ち込みUTで3カメラの映像をミックスしてTeamsに中継することになりそうなので、手持ち機材で追いつくかどうか検証してみました。

■機材説明

PC

2018年購入のDELL XPS 15 2-in-1(9575)で、第8世代のCore i7/定格3.1GHz、4コア8スレッドのCPUに、AMD Radeon Vega Mをオンチップで抱き合わせた8705Gという異色のモデル。メモリが16GB、SSDが1TBという感じ。

ゲーミングPCとまでは行かないまでも、独立GPU(dGPU)がついています。ただしOBS StudioはどちらかといえばNvidia (GeForce)贔屓で、最近ではNvidia Broadcast(音声ノイズ除去)相当のライブラリも搭載するなどして、「ノートでOBS Studio配信するならGeForce RTX搭載モデルだよね」という風潮があります。エンコード処理はCPU単体で回すかdGPUのハードウェア支援を受けられるかでかなり負荷が違うので、どうだろうなーと思っていました。

映像ソース

クライアントが所持するカメラを使用。UVC互換のフルHD Webカメラを3アングル。のでHDMIキャプチャなどは必要なし。そのままOBSの「映像キャプチャ」デバイスとして認識させられるはず。

今回のテストでは同型、同性能のWebカメラが3台手元になかったので、少し古い製品も含めての計測になりました。

  • 4K/60pのLogicool BrioをフルHD/30p設定
  • 同じくLogicoolのかなり古いWebカメラを864×480/15fps
  • XPS内蔵カメラを1280×720/30p

という設定。1920×1080/30pよりやや軽いコンディションになるので、代わりにというかタスクマネージャーのCPUグラフを「ウインドウキャプチャ」で取り込んで配置してみました。

(2021.6.15追記:フルHDx3ソースのテストも結果のところに追記しました)

BRIOはなぜかUSBハブ経由では映らず本体Type-Cポートに直結する必要がありました。ここらへん、当日のカメラでどうなるかわからないのでハブやA->C変換アダプタはいくつか予備をもっていこうと思います。

2021.6.15追記:BrioのハブはXPS9575の左側のThuderbolt3対応ポートにしたらハブ経由でも映像がとれました。

音声ソース

本番でも使う予定のRODE Wireless Go IIをUSB接続。送信機を2台起動しステレオの単一トラックとして入力。

またいつも使用しているNVidia Broadcastのノイズキャンセルが使えないので、代わりにKrispをインストールして試してみました。

設定周り

OBS Studioでのエンコード出力レートは2.5Mbps。また仮想ビデオ機能をオンにして、Teamsのカメラソースに選択し無人のオンライン会議に流した状態で計測を行いました。本番でも自分以外はすべて見学者でカメラ、マイクをオフにする想定なので、おそらくTe

■OBSでハードウェア支援は受けられる?

CPUダイにRadeon Vega Mが統合されているので、obs-media-encoderをインストールすればOBS Studioでハードウェア支援を受けられるかと思いきやメニューの現れず。

ただしIntel側の支援機能である「QuickSync H.264」が出ていたのでそれを使うことに。

■測定結果

結論からいうと「どうにかいけそう」という感じ。OBS上の読みで10%前後、タスクマネージャーによるシステム全体の負荷が50%前後で推移して30分くらいは正常に録画できました。録画したままKrispをインストールしたらOBSが落ちたのでそれはまぁそのせいだと思って一旦計測は終了。本来は90分程度のセッションになるので本番前に一度は回しておきたいところ。

そしてKrisp(CPU演算を使うノイズキャンセラー)を有効にしたところ、システム負荷が+10%といったところです。つまり60%台。一応余裕はあります。

ゲームをしながらOBSで録画/配信をするとなると厳しいですが、そういうメインタスクなしで純粋にエンコードするだけならなんとか賄えそうかなという感想です。各ソースが1080p/30pになったりするとどう変わってくるかですが、一応次のテストではこの構成でいってみようと思います。

あるいはそれまでにAMDのハードウェア支援も試してみたいところ。

追記:結局OBSでAMDのハードウェア支援(VCE)を有効にできてはいませんが、代わりにXSplit Broadcasterを使って同じフルHDx3ストリームで録画しながら仮想カメラ機能でTeams配信を行ってみたところ、システム全体のCPU使用率は50~60%の微増。かつ同時にブラウザを起動すると100%になりがちとなりました。警告ダイアログも出ました。OBS使用中でも同じ様に跳ね上がるものの80~90%台に収まる感じ。XSplitでは明示的にCPU/Intel QuickSyncVideo/AMD VCEの使い分けを指定できるので、QSVに固定してみても傾向はかわらず。XSplit自体の重さなんでしょうか。エフェクトなどは充実していてちょっと使ってみたいとも思ったんですが、今回の案件ではちょっと厳しいかな。余裕のあるリモート調査(デスクトップPCが使える時)などに試してみようと思います。

フルHD x3入力で追試

Brio、ATEM Mini Pro、AverMedia BU110を組み合わせて本番に近いフルHDの3入力体勢を組んで追試しました。結果は大差なし。むしろ下がったくらいで40%前後(タスクマネージャー読み)で録画&Teams配信できました。またソースをON/OFFしたり、入力解像度をフルHDと720pで切り替えたりしてもさほど変わらなかったことから、「入力ソース解像度に寄らず、レンダリング後の出力映像のエンコード負荷が大半を占める」ということが言えそうです。もちろんソースをOFFにする毎に僅かずつCPU負荷は下がっていくんですが、全部OFFにしてタスクマネージャーの画面キャプチャのみにしても30%台のままで、1ソース辺りの負荷は2,3%の誤差という感触でした。

OBS Studioでの録画(H.264変換)と、仮想カメラ機能を経由してTeamsがエンコードしてるのと同じ映像を2ストリームで変換してる気がしますが、どちらもハードウェアエンコードが効いているんでしょうかね。

■もしダメだったら…

近日中に予定されている接続テストで本番通りのセットアップをして検証する予定ですが、もし負荷が厳しそうとなったら、この辺りのeGPU箱を買って、自宅メイン機のRTX3070を一時的に付け替えてみようかと思っています。幸いXPS 9575はThunderbolt3に対応しています。これならばRTX Broadcastも使えた上でかなり余裕ができるんじゃないかと。

内蔵Radeonがある状態できちんと動いてくれればいいんですが、、、

もう少し安い3万円台のものもあるし、Chromaの光る要素とかは別にいらないですがw、USB3.1のAポートが4つと、Ethernetポートがついているので、ごちゃつきがちな出張荷物、配線を多少でもスッキリさせられるならこれでいっかなと思っています。

あるいはDSP内蔵オーディオインターフェイスのUA AppoloシリーズにC Suice C-Vox Noise & Ambience Reductionというノイキャンプラグインが出ていて気になっています。

これはプラグインソフトウェアをDSPで動かしPC側に負荷をかけないで音声フィルターをかけられる製品らしいのです。ただプラグインだけでも$300以上するし、ハードもDSPコア数が1つのもっとも安いものでも数万円。あわせると結構なお値段だし、そもそもこのプラグインが1DSPモデルでちゃんと動くかどうかもよくわからず手を出しあぐねています。自宅で使う分にはRTX3070 + NVidia Broadcastで特に不満がないので悩ましいです。

むしろ今後少しずつ会場実査が戻ってくるならばノート向けRTXグラフィックが載ったPCに買い換えるのが一番いいかなと思いいます。ちょうどRazerのBlade 14の新モデルが海外で発表され、中モデルが$2,200なら日本はいくらよ、、とドキドキしています。

■画面共有かカメラ映像か?

OBS Studioに「仮想カメラ」機能があるため、ついTeamsやZoomでは参加者カメラの映像として送信しがちですが、本当にそれがベストかはケースバイケースだと思います。まずZoomは基本的にカメラ映像が720pになる模様。法人ライセンスの場合は申請すれば1080p封印が解かれるらしいですが、それが難し場合は画面共有を使ってOBS Studioの画面なしろキャプチャした方が綺麗な可能性もあります。

Teamsの場合はネットワーク速度に応じて自動調整されてしまいますが、一応1080pが最初から使えるようです。

■Krisp所感

ついでにはじめて使ってみたKrispの感想をNvidia Broadcast(以下NB)と比べて。ぶっちゃけNBの方が品質は高いです。ノイズキャンセル力は甲乙つけがたいですが、フィルターをすり抜けた人の声がNBの方が自然で違和感がない。Krispのはよく聞くと人の声の中にノイズのようなクリップのようなザリザリ感があります。会場でどうにも外来ノイズが酷いようなら検討しますが、いまのところお金を払ってまで使いたいクオリティじゃないなというのが正直な感想です。

■まとめ

eGPUボックス買ったり、自宅デスクトップからRTX3070を付け外ししたりはしんどいなと思ってましたが、今回はCPUが100%に貼り付くみたいなギリギリ感はなくなんとか乗り切れそうな気がして一安心です。でもまぁファンはずっとシューシュー言い続ける状態だし、より静かに安定して実査録画ができるならeGPUボックス導入してしまうのもアリかなぁと思わなくもないです。ただIntel、AMD、NVidiaのグラボが混在してしまう状態になって、まともにOBS Studioが動いてくれるかって面も不安でいまいち思い切れないというところ。

大量の写真を(スクショ)を1枚1スライドでPowerPointに貼る

Pocket

ユーザビリティ調査の報告書を作るとき、画面毎の考察をするセクションで大量のスクショを1枚1枚パワポに貼っていくことがあります。今回それが特に手間に感じる量だったので、なんかバッチ処理する方法がないか調べてみたところ、普通にPowerPointの機能がありました。

「挿入」→「フォトアルバム」がそれです。選択するとこんなダイアログが表示されます。

操作手順はこんな感じ。

  1. 「ファイル/ディスク(F)…」ボタンで取り込みたい写真を一括選択する。
  2. 「写真のレイアウト(P)」を「1枚の写真(タイトル付き)」にする。
  3. 「枠の形(M)」は「四角形、背景の影付き」がオススメ
  4. 「作成(C)」をクリック

「Boom!」(死語)

「挿入」のくせに新しいスライドファイルが作成されるのはご愛敬。また黒背景がデフォルトになっているので、「デザイン」タブで白地のものに切り替えます。

2.で「タイトル付き」を選ばないとスライド全面に写真が貼り付けられるのでリサイズが手間になります。3.で影付きを指定するのは、白背景のスクショだと背景との境界線がわからなくなるからですがそこは好き好きで。

あらかじめドキュメントテンプレートがある場合は「テーマ(T)」で選んでおいても良いでしょう。

[オマケ] スクショを連続撮影する時のおすすめツール

画面の特定部分をスクショするのはWindows10標準の「切り取り&スケッチ」でも可能ですが、ブラウザ内に表示されたプロトタイプの外枠にあわせて毎回矩形指定したり、ファイル名を指定して保存するのは手間です。そんな時は太古から存在するWinShotがオススメ。

ショートカットキーを自由に決めて、同じ矩形範囲をバシャバシャ撮れますし、保存先を決めておけば連番で自動保存できます。古すぎてPNG保存ができない(JPEG、BMPのみのが玉に瑕ですが、使い勝手でこれに勝るものに出会えていません(もしあったら教えてください!)。私はBMPで保存して(これまた古の)IrfanViewあたりでバッチ変換かけます。PhotoShopでももちろんできますがIrfanViewの方が手になじむ。

またカーナビなど実機製品の画面写真を撮りたい時は三脚を立てて画角を固定したカメラでバシャバシャ撮っておき、あとでLightroom Classicで切り抜き、角度補正、露出補正、ホワイトバランス補正などを一括でかけるのがオススメです。リモコンシャッターやリモートアプリが使えるカメラなら、シャッター押す度にちょっとずつカメラがズレるなんてことも防げるので確実です。

 

オンラインインタビュー/プレゼン中のスライド操作を簡便化する

Pocket

ZoomやTeamsなどオンライン会議ツールでプレゼンテーションや資料共有しながら会議をすることが増えてきたと思います。そんな時、PowerPointでスライドを表示しつつ、Zoomでチャットコメントを読み書きしたり、さらに予定表を確認したりWeb検索したりと様々なアプリケーションを併用してデスクトップがわちゃわちゃしがちです。私もオンラインインタビュー等をする場合、資料提示用のパワポ、参加者プロフィールや予定表のExce、インタビューガイドのWord、Zoom/Teamsなどオンライン会議ツールのウインドウ、さらにはカメラ映像をOBS Studioで制御しようなどとすると大変です。

そんな時でも最優先でPowerPointのスライドを制御(ページめくり)したくて方法を模索しました。

ちなみに最新のZoomやTeamsではPowerPointファイルを直接共有ウインドウやバーチャル背景として選択できるようになっており、これを使うとZoom/Teamsのミーティングウインドウ上でスライドめくりボタンで移動することができかなり使い勝手が良いです。ただPowerPoint固有の機能(ペン記入とか)が制限されたり、そもそもPowerPoint以外のツールを使いたいこともあるので、今回はややマニアックな方法で実現することにしました。

完成イメージとしては、「そのアプリがフォアグラウンドにいても(=PowerPointがバックグラウンドにいても)、Ctrl + PageUp/Downを押すとPowerPointがフォアグラウンドに来た上でページが移動する」というスタイル。PageUp/Downはカーソルキーやスペースキー操作の陰に隠れて忘れられがちですが、こちらもPowerPointの標準のスライドめくりショートカットです。これにCtrlを追加することで、グローバルなキーボードショートカットにする、というワケです。普段からPageUp/Downなんて使わないよって人なら、Ctrlなしをトリガーにしてもいいでしょう。

実現方法としてはAutoHotKeyという多機能キーボードショートカットカスタマイズツールを使います。
AutoHotKeyの使い方をイチから説明すると大変なボリュームになるので、とりあえずコード例だけ。AutoHotKeyをインストール後、これをメモ帳などにコピペし、「いつでもパワポ.ahk」みたいな名前で保存(拡張子のahkはAutoHotKeyの頭文字です)し、ダブルクリックすればAutoHotKeyが起動してこの設定が読み込まれます。タスクトレイにグリーンの「H」アイコンがいれば常駐している証です。

「^PgDn::」が起動キーの定義で「^」がCtrlキーです。Altなら「!」、Shiftなら「+」に変更します。Altキーを押しながら右カーソルなら「!Right::」でいけると思います。
ミソは「if WinExist(“ahk_exe POWERPNT.EXE”)」のところで、起動中のアプリにパワポがあったらという条件設定を意味します。「WinActivate」でアクティブ化(フォアグラウンド化)し、「Send {PgUp}」で文字通りキーコードを送信しているという寸法です。

個人的にはパワポウインドウはOBSなどで見えていれば良い場合もあるので、バックグラウンドのままとか最小化したまま、仮想デスクトップの別画面に追い出した状態のまま、とかもチャレンジしたんですが上手くいきませんでした。ControlSendコマンド辺りを使ってどうにか、と思ったんですが成功しませんでした。なんか方法をご存じの方がいたら是非お知らせください。

またこの例ではあまり使っていないキーコンビネーションをトリガーに使いましたが、先日裏ブログで紹介したマクロパッドなどに割り付けて1キーで制御するのもアリかなと思います。

この手のことはElgatoのStream Deckがメジャーですが、AutoHotKeyを駆使すれば「特定のアプリに対して送信」「特定のアプリがフォアグラウンドにいる時だけ送信」などの制御も可能なため、安価に近いことが実現できると思います。

キートップが液晶で動的に変化はしませんが、既製品ではこういう小型キーボードも使えると思います。

AutoHotKeyは究めればかなり複雑な制御ができるので是非研究してみてください。

OSを問わずブラウザで使える「動画眼Lite」をリリースしました

Pocket

前記事のチラ見せからそう間を置かずリリースしていたのに、ブログでお知らせするのを忘れていました。

ひと言でいうと、インストール不要でWindows以外でも使える動画眼のビューワーを作ったよ、というお話です。JavaScriptベースの専用データ形式ファイルを用意する必要がありますが、同時にリリースした動画眼2.4で出力できるようにしてあります。なので、インデックスデータを作る人だけはWindows版動画眼をインストールして使う必要がありますが、閲覧オンリーであれば動画ファイル、htmlファイル、JSファイルの3点セットがあればWebブラウザを使ってインデックス付き動画を再生、頭出しすることができます。Macはもちろん、Webサーバーに置けばタブレットOS(iPadOS、Android、ChromeOS)でも利用可能です(スマホは画面レイアウト的に未対応です)。

動画眼Liteの詳細はこちら。GitHubリポジトリはこちら。ただしわざわざダウンロードしなくても、動画眼2.4からJSファイルをエクスポートする時にHTMLファイルも自動的に最新版を落として適切にリネーム保存してくれるようになっています。

動画眼Liteの動作デモはこちら。ガチのUT動画素材で公開可能なものがないので、個人でYoutubeにアップしたレビュー動画です。またテキストはPremiere Proのβ版機能の「音声のテキスト化」を使って書き起こしたものです。この機能で書き起こしたデータを動画眼にインポートする機能を2.3で実装しています。

組み合わせてご活用いただくとかなり簡単/安価にテキスト書き起こしUT動画見返し環境が構築できると思います。

 

UT/インタビュー動画見返しツール「動画眼」の簡易ビューワーをチョイ見せ

Pocket

謹製の動画再生ツール「動画眼2」は動画再生中のメモをタイムインデックスとセットで記録し、メモをクリックすることで簡単に当該シーンを頭出しして再生できるツールです。

最近、手軽に利用できるようになってきた各種クラウド音声書き起こしサービスを使ってUT/インタビューの全発話を文字起こしすることで、全文検索などの新しい利用方法が見えてきており、先日も動画編集ソフトのAdobe Premiere Proが先行公開機能として「音声テキスト化」をリリースして、早速その結果を取りこめるバージョンアップをいたしました。

こうして利用シーンが広がってくると、足枷になるのが

  • 専用ツールのインストールが必要になること
  • Windows専用であること

といった部分になってきます。動画眼2はフリーで提供しているため、年額数万円かかる電子署名を取得するに至っておらず、Windows8/10ですとダウンドーロ/インストール時にSmartScreenによる警告が出る状態です。法人ですとPCへのソフトインストールは許可制だったりして、私自身も実務でクライアントに薦めづらい状況があります。Mac版も作りたいと思いつつなかなか着手できていません。

そんな状況を改善するため、HTML5/JavaScriptを使った簡易ビューワー「動画眼Lite」を作ってみました。特徴として、

  • 動画ファイル、発話データファイルに加えHTMLファイルを同一フォルダにおくだけ
  • Webサーバーに配置せず、PCのローカルストレージ上に置いた状態からでもOK
  • 互換ブラウザさえ入っていれば追加インストール無しで使用可能(現状ChromeとChromeium Edgeで優先検証。FireFoxとSafariも一応動くが一部表示が崩れる。Web経由ならiPadのSafariでも動きました)

となっています。これなら動画と一緒にHTMLファイルと書き起こしデータファイル(せいぜい数KB)を渡せば相手にも簡単に使ってもらえるのではないかと。

実際にこちらで動いている状態をご確認いただけます。UTの動画は使えないのでプライベートで録ったレビュー動画ですが、、また書き起こしはPremiere Proによる処理ママですので一部不正確な部分もありますが、逆にPremiereに放り込むだけでこれくらいの品質の書き起こし&閲覧環境ができますよというサンプルとして。

アプリ版「動画眼2」と比べての制約としては、

  • テキストの編集はできない
  • 検索もできない(ブラウザの検索機能は利用可能)
  • 話者毎の色付け非対応

となります。編集はJavaScriptのセキュリティモデル(ブラウザでローカルファイルを上書きできると危ないから禁止されている)の関係上、実装は難しそうです。検索と色付けは正式リリースまでにはなんとかしたいと思っています。検索と色付けは対応しました。

またデータファイル形式も動画眼2の.dggn.txtを直接読み込むことは難しいので、動画眼2側で動画眼Lite形式のファイルを吐き出す機能を追加する予定です。

■技術的詳細

以下、JavaScriptの制限など技術的なメモ、課題を書き記しておきます。どなたかお詳しい方に「こんなやり方あるよ」などアドバイスをいただければ有り難いです。

・ファイルを減らす

動画に同梱するファイルをなるべく減らすという意図で、CSSなども久しぶりにHTMLのヘッダー内に置く書き方をしました。またjQueryなどの外部ライブラリも基本使わないでPure JavaScriptで書いています(単に私がjQueryあまり得意でないというのもあるけど…)。

再生制御系のアイコン(▶/II)くらいはもう少し綺麗に描画したいんですが、font-awesomeみたいな外部記号フォントやビットマップを使うとファイルが増えるので躊躇しています。インターネット上のリソースにリンクするのも手だと思いますが、どうせここまでやったなら完全スタンドアローンにこだわってみたいなとか。フォントとかビットマップのようなバイナリをbase64でHTMLに埋め込む方法もあるんでしたっけ?でももし下記のようにメモデータもHTMLに埋め込む場合、あんまりHTMLの可読性が落ちるのもなんだなという気がしますね。

・データファイルの読ませ方

HTMLファイル上のJavaScriptに外部ファイルを自動で読ませるには、外部.jsファイルしかなさそうで、現状はタイムコードとメモのレコードをjson形式にしてあります。HTML側にフォームをもたせて、INPUTタグでユーザがファイルを選択すれば任意のデータファイルを食わせられるんですが、ユーザビリティとしてHTMLファイルを開いたら動画もメモ一覧もパっと出る方が楽だし間違いなくていいかなと思って、自動で読めることを重視しています。

.jsファイル内でオブジェクトを宣言するのであればjsonにこだわらず、オリジナルの.dggn.txtに近いカンマ区切り形式でもいいはずと思ったんですが、なんとなくJavaScriptならjsonだよね、みたいな感覚があったのと、手編集時にもミスが起きにくいかなくらい(そうでもないかな?)。

もっといえば、HTMLファイル内にデータまでもたせてしまえば、動画とHTMLファイルの2つだけで完結できるのでそれはそれでアリかも知れないとか思っています。どのみち動画ファイルのファイル名はハードコーディングするしかないなと思ってますし。1つのフォルダに複数セッションの動画をつっこんで渡すような場面で、ファイルが1つでも減るのは良いかも知れません。

あるいはJavaScriptで同一フォルダ内のファイル一覧が取得できればプルダウンで複数動画選択とかもできそうとか。でもこれもセキュリティ上の制約でできない気がします。

インタビュー収録に最適なRODE Wireless GOが進化してII型に

Pocket

コロナ禍で感染対策を行いつつのインタビュー収録では、マイクが肝となります。繰り返し書いて来ましたが、

  • マスクをする
  • 話者同士が距離をあける
  • 間にアクリル仕切り板を立てる
  • 換気のために窓やドアを開ける
  • 換気装置、空気清浄機などを稼働させる

など、すべてが音声収録の障害となります。通常インタビュールームでは二人の間にバインダリーマイクを1機設置で足りることが多いですが、上記対策を行うとそれではかなり聞き取りづらくなります。特に今はセミリモートで遠隔の見学者に生配信をしなければならないことも多く、後編集でノイズを消したりゲインを上げたりするのでなく、リアルタイムに品質の良い収録をする必要があります。

また先日紹介したPremiere Proを使った書き起こしなども視野にいれると、話者毎の高品質な音声収録は更に重要度を増してきます。

当ブログでは小型で便利なワイヤレスマイク、RODE Wireless GO(以下GO)を以前紹介したことがあります。

私も当初1台購入し、バウンダリーマイクの補助として使用していましたが、非常に便利だったので結局2つ目も購入し、モデレーターとインフォーマントの双方がワイヤレスマイクで収録できるように強化しました。

が、発売から1年半ほど経ち、後継機となるWireless Go II(以下GO2)が発表されました。海外で先行して発売されていましたが、一ヶ月ほどしてようやく日本でも発売が開始となりました。

■進化ポイント

もっとも大きな違いは送信機が2台になった点。受信機が1つで二人(二箇所)の音声を収録できるので、インタビュー用途にはフィットします。従来は2ペアで使うには2台の受信機からのケーブルをミックスして録音機器に入れる工夫などが必要でした。その為のオプションケーブルやカメラに2台マウントするステーなども発売されていました。

GOを2セット買うと約5万円、このステーとケーブルでさらに5千円ほどかかることも考えるとGO2の実売4万円はかなりコスパが高いと言えるでしょう(本国で$299だと思うとちょいと高い気しちゃいますが…)。値段が安いだけでなく、セッテイングがシンプルになり、バッテリー管理する機器が1つ減ることもプライスレスです。

しかも進化点はこれだけではありません。

・送信機内にバックアップ録音ができる

送信機内に24時間分の録音データが残るため、万一電波状態が悪く録音機器への送信が途切れても、あとで正常な音声ファイルをサルベージできます。更にVer1.6.0から受信機とリンクしなくても送信機の電源を入れるだけで録音されるAlwaysモードも追加され、単体のICレコーダーx2台としても使えるようになりました。

・USB-CでPCやスマホにデジタル録音できる

GOはアナログ3.5mmジャック専用でしたが、最近のPCやスマホではこのマイク端子がないことも多く、実質ビデオカメラ用という感じでした。しかしGO2はUSBデバイスとして認識できるようになったことでPC/スマホに直接挿し、ZoomやTeamsへダイレクトに音声を渡せるようになりました。iPhone用のUSB-C – Lightningケーブルも発売されます。スマホ内蔵カメラで映像を撮って、音声は2台のワイヤレスマイクで高品質に収録、なんてミニマルなセッテイングも可能です。

・伝送距離が見通し70mから200mに拡大

インタビュー用途でそこまでの見通し距離は必要ないですが、到達距離スペックが向上したということは普通にノイズ耐性も上がっていることが期待されます。特に2.4GHz帯の無線はWi-Fiだけでなく古いコードレス電話や電子レンジとも干渉しやすいので、基本スペックの底上げは有り難いです。

■早速予約して購入しました

まだまだリモート調査が多くて、すぐに必要というほどでなないですが、現在増補版を執筆中の下記書籍にも載せたいと思って速攻で予約しました。

マーケティング/商品企画のための ユーザーインタビューの教科書 (プレミアムブックス版)

マーケティング/商品企画のための ユーザーインタビューの教科書 (プレミアムブックス版)

奥泉 直子, 山崎 真湖人, 三澤 直加, 古田 一義, 伊藤 英明
3,300円(06/23 13:07時点)
Amazonの情報を掲載しています

開封動画はこちら。

サイズ感は初代と全く同一。重さも手で持った感じは違いを感じません。液晶保護フィルムすら互換性ありそう。まだGo2用3枚セットは出てなさそうなのでこれを2セット買うか悩みます。結構お高い。

とりあえず書籍用の写真を撮ってみました。こんな感じでICレコーダー、ビデオカメラ、PC、スマホとなんにでも組み合わせられるようになったのが新型の進化ポイントでしょう。

ICレコーダーにアドオンで離れた話者2名の音声を明瞭に収録
PCにUSB接続で外部マイクとして認識。OBS、Zoom、Teamsなどの音声ソースとしても直接使用可能

付属のアナログケーブル(赤色)はカールコードからややフラットなものに変更されました。カールコードはカールコードでなにかに引っ掛けた時に千切れにくくて良かったですが、新しいケーブルの方がよりスッキリしていいかも知れません。幅は少し広めなので強度もそれなりにありそう。

付属USBケーブルはUSB A to Cが3本。これは充電にも使いやすいという配慮でしょうか。こんな感じの3ポート充電器を用意しておくと捗りそうです。

他方、USB C to CのケーブルやiPhone/iPadにつなぐUSB-C – Lightningなケーブルは別売り。RODE純正のもあるんですが30cmと長めなので、別途ショートケーブルを注文。とりあえずUSB-C to Cケーブルは自宅にあったものでも普通に使えたので、へんな制限はかかってなさそうです。

2021.4.4追記:

サードパーティ製ケーブルについて少し検証してみました。購入したのはこちらの2点。

USB-CとLightning用でそれぞれできるだけ短いのが欲しくてチョイス。USB-C用はPCでもiPad Proでも問題なく使えました。PCはArm64 WindowsのSurface Pro Xでも大丈夫。ただChromebookでは認識されているか画面で識別不能。感度で調べた限り切り替わってなさそう。これはChromebookの問題かもですね。

Lightningの方は残念ながらNGでした。公式の説明によると「Note that you must use a Lightning Accessory Cable, such as the SC15, to connect the Wireless GO II to an iOS device. This is different to the ‘charge and sync’ cable that may have been included with your device.(SC15のようなLightningアクセサリケーブルが必要で、これは端末付属の”充電と同期”用のケーブルとは別物)」とのことです。Lightningアクセサリケーブルという規格は初めて聞きました。ググってもそれと謳う製品は見つけられず。現状確実なのはRODE純正のSC15くらいでしょうか。

SC15は30cmと長いので保留。私は当面iPhoneで使う必要はないので、そのうちいいのが見つかれば買うくらいで。

(追記おわり)

送信機上のバックアップ録音はPC/Mac用設定ツールRODE Centralから有効化しておく必要がありますが、有効にしてあれば電源オンのあいだは常時録音してくれるようで、録り忘れもなく良さそう。バッテリーの減りがどれだけ変わるのかとかは記載が見当たらず。

音質や電波到達距離などはもう少し使ってみないとなんともですが、2チャンネルのワイヤレスマイクシステムとしては非常にコンパクトで多機能、ユーザビリティも高い、とコロナ下のインタビュー録りには最適な製品に進化したなと思います。

Premiere Proの音声テキスト化をユーザテスト見返し効率化に活用する

Pocket

■Long story short…

  • Adobe Premiere Proがクラウド音声書き起こし機能を実装し、簡単に字幕付き動画が作成できるようになった
  • 書き起こしたテキストはsrtフォーマットでエクスポート可能だった
  • 拙作の動画インデクシングツール「動画眼」をsrtインポートに対応させた
  • ユーザテスト(UT)やインタビュー動画をテキスト検索で頭出ししながら視聴できるようになった!

■Premoiere Proの「音声テキスト化」機能がβリリース中

Adobeの動画編集ソフトPremiere Proが音声テキスト化に対応しました。2021年3月現在、まだ正式リリースではなく、事前登録制なのですが、こちらのページから申し込みをしておくと順次利用可能になるようです。

私は12月に申し込んで3月までかかりました。今はもっと早く有効化されるかも知れません。正規機能となった後の料金システムは不明ですが、AdobeのクラウドAI機能はいままで追加料金をとったケースがない気がするので、このまま無料で使えるのかなという望みを抱いています。

精度は他のSTT(Speech To Text)サービス同様、完璧とはいきません。Watsonのように辞書登録機能もないので、例えばユーザーテスト動画を食わせた場合、製品固有の機能名とか画面名みたいな台詞はほぼ壊滅的でしょう。

それでも動画をドロップして数クリックでテキスト化され、字幕として動画に入れることができてしまうので非常に重宝すると思います。

■このテキストを「動画眼」でも使いたい!

動画眼は私が作って配布している動画インデックス付き再生ツールです

動画を再生しながらメモを書くと再生タイムインデックスとセットで記録してくれて、次にそのメモをクリックすると当該シーンが瞬時に頭出しされる、という特徴をもっていて、ユーザテストやインタビュー動画の見返しやプレゼンテーションに活用できます。現状Windows向けでフリーで配布しており、オープンソース化もしています。

このツールで、自分でメモを手打ちするのではなく、各種STTサービスの出力データを食わせて、全発話をインデックス化したら検索とかもできて便利じゃね?ということは3年くらい前に思いつきました。ちょうどAmazonやGoogle、Microsoft、そしてIBMなどがこぞってクラウドSTTサービスに参入しだした頃です。これらのサービスを使えばGoogle Documentなどで書き起こすのと違って、タイムインデックス情報付きの結果が得られるのでフォーマットさえあわせてやれば「動画眼」で簡単にインポートすることができるのです。ただこれらのAPIサービスは初心者には利用が難しく、また動画から音声データを抽出して送信する必要もあったため、そこら辺をGUIで簡単にできるツールとしてLynxTipsをかなり動くところまで作成しました(今はちと事情があってしばらく放置中)。

そんな折り、今回Premiere Proが音声テキスト化機能をβながらサポート。この手のでいつも後回しにされがちな日本語もいきなり対応しています。これなら黒画面(ターミナル)を叩くことなくGUIで動画ファイルから直接書き起こしができます。しかも無料(執筆時点)!これを使わない手はないだろうというわけです。

■Premiere Pro → srt形式書き出し → 動画眼2読み込み → (゚д゚)ウマー

早速同サービスを申し込んで試して見たところ、書き起こしたデータはsrt形式という動画字幕形式のデファクトスタンダード的なフォーマットでエキスポートできることがわかりました。動画字幕用なので当然タイムコードも含んでいます。

そこで早速「動画眼2」にもsrt形式のインポート機能を追加(v2.3)。黒画面なし、マウスクリックだけで発話インデックス再生、検索ができるUTふり返り環境が構築できるようになりました!

実際の様子をYoutubeにあげておきますので、よろしければ見てみてください。

なお、Adobe Premiere Proはサクブクリプション形式のソフトウェアです。

単品、もしくはPhotoshopやIllustratorとセットのコンプリートプランを契約する必要があります。安価で買い切りのPremiere Elementsではこの機能は使えないのでご注意ください。

 

リモートUT/インタビュー時、カメラ映像に時計やメッセージを入れる

Pocket

リモート(ウェブ会議)でユーザテストやインタビューをする時、こちらのカメラ映像に時計を出せないかなとふと思いました。例えばパイロットセッションをする際、どのタスクが何分くらいかかるか目安を把握するのも重要なわけですが、画面に共通の時計が出てれば記録係や見学者の人とも疎通しやすいかなと。UTの本番ではあまりタイムプレッシャーになるようなことは避けるのが王道ですが、まぁパイロットなら利便性の方が勝るかなと。

で、パッと思いついた方法は、別PCでグリーンスクリーン上に時計(ストップウォッチ)を表示した画面を作って、ATEM Miniでクロマキー合成する、というやり方でしたが、少し調べてみたらもっと簡単にソフトウェアだけで実現可能でした。

■OBS Studioの「テキスト」ソースを使う

OBS Studioは本ブログでも以前に取り上げたフリーの配信ツールです。最近のアップデートで仮想カメラ機能が搭載されました。仮想カメラというのはOBS Studio上で作った画面を、あたかもWebカメラ入力であるかのように見せかける仕組みです。これをONにすると(右下のボタンで「仮想カメラ開始」をクリックするだけ)、ZoomやTeams、Skypeといったウェブ会議ツールのカメラ選択メニューに「OBS Virtual Camera」が出現し選択できるようになります。

そしてOBS StudioにはWebカメラを初めとする様々な映像入力ソースに加え「テキスト(GDI+)」という項目があり、OBS上で指定した固定テキストもしくは特定のテキストファイルの中身を画面上に指定したフォントやサイズで合成することができるのです。テキストファイルを指定した場合、その中身はリアルタイムで反映されるので、時刻やタイマー、ストップウォッチを文字列で「00:00:00」みたいに上書き保存し続けるソフトさえあれば、、、ということで、まさにそれをしてくれるソフトがSnazです。

このOBS StudioとSnazの組み合わせはこちらの記事で知ることができました。詳しい設定方法などもこちらをご覧ください。

OBSでカウントダウンや時計が表示できるタイマー”Snaz”の使い方 | しふぁチャンネルのゲーム実況ブログ (shifa-channel.com)

で実際にウェブ会議で使う想定で作って見たレイアウトがこちら。フォントカラーの他に縁取りの色や太さも指定できるので背景映像に埋もれて醜くなるのを避けることができます。

■時計以外にもテロップを入れられることの価値は?

OBSは複数のソースを自在に重ねることができるので、ついでにインタビュー中の話題をテロップとして入れてみたらどうかな?と思って画面下部に字幕のように入れてみました。こんな感じでインタビュワーが聞きたいことや、ユーザテストでのタスク内容、ダミー個人情報のような提示情報を重ねられると便利なんじゃないでしょうか。多くのウェブ会議システムでは画面共有機能があるので、メモ帳でもWordでも使って映せばイイジャナイ?と思われるかも知れません。しかし、ユーザテストではそもそもユーザがプロダクトを操作する様子を画面共有を使って映してる場合もあり、そのチャンネルを占有しないで簡単な情報を伝えられるメリットはあるんじゃないかと。

また複数行も扱えるので、議事録テキストファイルを指定すれば、こんな感じで記録を参加者間で確認しながら会議を進めることもできるかも知れません。設定画面内の「チャットログモード」という機能を有効にすると、テキストファイル中の指定した最後の行数だけを表示してくれる(UNIXでいうtailフィルタ)ので、書き進めるにつれてスクロールしていく感じになります。

■簡単な専用ツールを作ってみようかなって

基本的な機能としてはOBS Studio単体で実現できるんですが、実査/会議中にリアルタイムでテキストを書き換えるのはちと手間です。要はテキストファイルに都度落とし込めばいいので、例えばインタビューのスクリプトに沿った話題の見出し一覧をクリックするとそれが書き出されるとかいうツールがあったらヨサゲ。実際、OBSの標準機能だとセンタリングや折り返しに制限があるので、いい感じに前後にスペースを入れてくれるような処理を入れるといいかも。

また議事録モードに関しても、任意の箇所にスクロールして戻る、みたいなことが標準ではできないので、そういう部分も考慮したテキストファイルをリアルタイム生成する、みたいな。

そんなに難しい仕組みではないので、たぶん1日仕事でしょう。.NET 5.0の練習にいいお題かも知れない。年末年始の宿題ですかね。