freeeの開発情報ポータルサイト

アクセシビリティー研修でスクリーンリーダーの音声を届けるために

こんにちは、id:ymrlです。この記事はfreee Developers Advent Calendarの2日目です。

先日の記事で、全従業員向けのアクセシビリティ研修を紹介しました。

developers.freee.co.jp

この研修でとても大切にしていることのひとつに 「スクリーンリーダー(画面読み上げソフトウェア)の操作を実演する」 というものがあります。多くの人にとって「視覚的に見るもの」であるWebが、視覚障害の当事者にはこういう形になっているということを見て(聞いて)もらうことが、新たな視点を持つキッカケになることを期待してのことです(もちろん、中根さん(@ma10)が研修をやっているから特に説得力があるというのもあります)。

研修では中根さんがWindowsでNVDAを、私はmacOSでVoiceOverをそれぞれ実演しています。この記事では私の手元でやっていることを紹介しますが、中根さんも似たようなことをしているはずです。

ところで、この研修は今のところ完全リモートで、Google Meetを使ってやっています。開発者向けの研修を始めた当初は社内のセミナールームで研修を行っていたのですが、コロナウイルスの流行によってそれができなくなってしまいました。

Google Meetのような音声通話サービスを普通に使っていると意識する機会はあまりないですが、音声を伴うデモをするときには大きな問題があります。普通に使っているとPCで鳴っている音は通話には乗らない、つまり相手には届かないのです。そこで、機材の工夫が必要になります。

ループバック可能なUSBオーディオミキサーを使用する

PCで鳴っている音を音声通話サービスに載せるシンプルな方法は、スピーカーの音をそのままマイクで拾うことです。ただしこの方法では、PCの音をどの程度の音量で拾えているかわかりづらく、おそらく相手に届く音の質も良くないでしょう。試したことはないですが。

(私はアバターを着て仕事をしている関係で会社での音声通話にすらボイスチェンジャーを噛ませたりしているので、自分の声以外をマイクで拾う訳にいかないという事情もあります)

ということでもう少し良い方法を考えなければなりません。実は全く同じ問題は、PCゲームの実況配信でも発生するので、同じソリューションが使えます。私はヤマハのAG06という、動画配信用の定番ミキサーを使用しています(私物です)。

AG06の実機の写真。いろいろケーブルが繋がっている
AG06。ふだんから作業机でずっと稼働しています

このミキサーはPCにUSB接続するとPC側からはオーディオインターフェースとして扱うことができ、そしてTO PCスイッチでLOOPBACKを選ぶと、PCからの出力音声と他の入力音声をミックスして音声入力に戻すことができます。AG06のCH1にマイクを繋ぎ、ヘッドホンを繋ぎ、Google Meetの入力をと出力をAG06にすれば、それだけでPCの音声が通話に乗った状態にすることができます。

構成図(AG06にPC、マイク、ヘッドホンを繋ぎ、PCとヘッドホンにはPC上の音とマイクの音が渡される)

この状態では、ヘッドホンでGoogle Meetの音声とPC上の音声と自分の音声が混ざった聞ける状態になり、それと全く同じ音がGoogle Meetの入力にも渡されます。Google Meet側で上手くハウリングしたりしないようにしてくれるようで、相手にはPC上の音と自分の声が聞こえるようになります(Zoomでも問題なさそうです)。普通のヘッドセット等を使う場合と違ってヘッドホンからは自分の声も聞こえるようになりますが、個人的にはそのほうが通話がしやすいなと感じています。

スクリーンリーダーの音声を別のデバイスで出力する

上記のような構成で最初のころは研修をしていたのですが、この構成だとスクリーンリーダーの実演以外のときはスクリーンリーダーを止めておかないと、スライドの操作などのたびにスクリーンリーダーが喋りはじめて、通話にもその音声が乗ってしまいます。ヘッドホンでGoogle Meetの音声も聞きたいので、PCからの出力音声の音量を絞るわけにもいきません。では実演をするときだけVoiceOverを起動すればいいのですが、起動に十数秒かかり、起動した直後にいろんなウインドウの情報を読みにいったりするので、実演をはじめるときに起動するのではちょっと研修のテンポが悪くなってしまう問題がありました。

そこで、最近はVoiceOverからの音声を別系統でミキサーに流し込むようにしています。そこで、VoiceOverの音声出力には、家に余っていたベリンガーのXENYX 302USBという別のUSB接続ミキサーを使用しています(私物です)。

VoiceOverユーティリティの「サウンド」タブで出力デバイスを切り替えることで、システムデフォルト以外のデバイスにVoiceOverの音声を流し込めるようになります。 VoiceOverユーティリティの「サウンド」タブ

XENYX 302USBのLINE/USBスイッチはFROMをUSB PLAY、TOをMAIN MIXにして、それをAG06の3/4チャンネルに入力しています。AG06のTO PCスイッチはINPUT MIXにします。

AG06とXENYX 302USBを並べた状態
ミキサー2台並んでると邪魔なので、狭いなぁと思いながら研修をやっています

構成図(PCとAG06のあいだにXENYX 302USBを挟む)

これをAG06の適当なチャンネルに繋いで、実演するとき以外は音量を完全に絞って通話に音が乗らないようにして、必要なときだけ音量を上げたり、VoiceOverの操作をしながら口頭で説明をするときはすこし音量を下げたりしています。

AG06とは別系統でVoiceOverの音声が出力できれば何でもいいので、PC本体のイヤホンジャックからミキサーに接続してもいいのですが、外部オーディオインタフェースを使用すると、別のイヤホンを繋いで通話に音を乗せずにVoiceOverの動作を確認できたりするので便利です。

UDトークによる文字起こしを追加する

普段の研修は上記のような構成にしているのですが、以前開催した春だ!既存プロダクトのWebアクセシビリティ改善ことはじめというイベントでは、音声認識による書き起こしを提供するための機材をここに加えていました。

(ツイートではXENYX 502USBを使ってるっぽいですが、構成はほぼ同じです)

これにはAG06からの音声出力をベリンガーのUCA202というオーディオインタフェース(私物です)に入力し、それをUSBアダプタ経由でiPadに接続して、iPad上のUDトークアプリに認識させるということをしています。

UDトークは、別々の端末で音声認識させることで誰の発言なのかをアプリ上に表示することができるのですが、オンラインのイベントでは準備が煩雑で難しくなってしまう都合上、このように私の端末ですべての発言を認識させるようにしています。

ハイブリッド時代の研修はどうなるのか

ここまでの工夫は、アクセシビリティー研修をオンラインでやらざるを得ない状況になって試行錯誤して生まれたものでした。最初にも書きましたがオフラインで集まって研修をするのであればここまでの機材は必要ないはずで、開催がずいぶん楽になるはずです。いまの構成は、なんだか色々とデバイスやらケーブルが部屋にたくさんあったからできているものの、他の人にも研修の講師をお願いしていくには難しい状態になってしまっています。

オンラインで研修するのはやはり受講者の反応が見えづらい問題もあり、コロナが収束したらもしかしたらオフラインに戻したほうが良いのかもしれません(オフィスも広くなるらしいので)。しかし、東京以外の拠点があったり、対象を全新入社員に広げたりしていることを考えると、完全にオフラインにも戻せるとも限らず、オンラインとオフラインのハイブリッドになるのが現実的にも思えます。その場合にスクリーンリーダーの音声をどう届けるのか、特に中根さんと交代でスクリーンリーダーを実演したりするのをどう配信するのかを考えると、いろんな課題と選択肢がありそうでワクワクしてきます。

来年にはまた違った姿で研修をやるようになっていて、またそれを紹介できるといいなと思っています。そして、その研修を、このブログを読んている人が受けてくれるとさらに良いですね(宣伝)!

jobs.freee.co.jp

さて、明日のAdvent Calendarはスクラムマスターをやっているichyさんです。去年のペペロンチーノに続いてどんな記事になるのかが楽しみです。