この記事はPyCon JP 2020 Tutorialの準備から当日の様子をお伝えします。準備から当日までいくつかの記事にしました。
8/30(日)に開催されたPyCon JP 2020 チュートリアルはお陰様で無事に終了しました。ご参加頂いた皆さん改めてですがありがとうございます。
この記事では文字起こしシステムを作ってみて、チュートリアル当日に利用してみたまでの様子をお伝えします。
文字起こしできるようにしたかった理由については準備のときにも書いた通り、UDトークを体験したことがあるのと、Google音声文字変換をつかった事例をみて、似たようなことにトライしてみたくなりました。
- UDトーク | コミュニケーション支援・会話の見える化アプリ
- 【運用レポート】シビックテックオンラインアカデミー(ZOOMとUDトークの活用) | UDトーク
- 落 合 陽 一さんはTwitterを使っています 「#xdiversity @xdiversity_org #stayhometokyo #音声文字変換 https://t.co/VNKQcZONsR」 / Twitter
- 音声文字変換 - Google Play のアプリ
おはようございます!
— Hiroshi Sano (@hrs_sano645) August 30, 2020
PyCon JP 2020チュートリアル。今日が本番な人なのでがんばります。準備できた。#pyconjp pic.twitter.com/t5IGPtChM2
(この写真の左下にAndroidスマホを設定している)
Twitterの写真だと見づらいので改めて取り直した写真を乗せるとこうなります。チュートリアルの時と構成は違いますがUSB-Cのハブを省いているだけです。
文字起こしの文字は、スマホで起動したGoogle音声文字変換アプリ画面をPC側で表示させてウィンドウの1つとしてPCで表示させていました。
このウィンドウを半透明にして画面共有の合成を行う方法がわからなかった(多分OSB経由でもない限り難しいかも)ため、ウィンドウ単体で画面の一部に表示させていました。
システムの概要
形になったシステムの全体図です。こうなるまでに試行錯誤しました。音声を取り入れるためのオーディオインターフェイスやケーブルなどの扱いが難しのですが、何とかなったレベルです。
その様子はこちらのissueで扱っています。 -> 文字起こし的な技術が利用できるか調べる · Issue #4 · py-suruga/pycon-jp-2020-tutorial
Google音声文字変換アプリはスマホ内蔵のマイクでも十分機能しますが、より精度を上げられるか試してみたくて、オーディオインターフェイスを介してマイク音声をスマホ側に入力させました。
システムを用意する
マイクとマイク入力を渡すためのオーディオインターフェイスは機材編で。ここではそのほかに利用した機材やアプリの紹介をします。
scrcpy
PCにGoogle音声文字変換アプリの画面を表示させる方法としては、ミラーリングツールのscrcpyをつかいました。
Genymobile/scrcpy: Display and control your Android device
adb(Android Debug Bridge)を経由してPC上でAndroidの画面をミラーリング、操作が可能になります。
この時にスマホとPCの接続は、USB接続とWifi接続が利用できます。ただUSB接続だとスマホに1つしかないUSB差込口を利用してしまいます。
今回はWiFi接続でscrcpyを利用しました。こうすることでUSB差込口はUSBオーディオインターフェイスが刺せるようになります。
Genymobile/scrcpy: Connection Wireless
WiFi経由でのscrcpy起動方法を箇条書きすると
- USBデバッグ設定済みのAndroidをUSBでPCへ接続
adb tcpip 5555
でPCへデバイスを登録してサーバー起動- PCを信頼するかのポップアップは許可
- USBケーブルを外す
adb connect [デバイスのip]:5555
で接続- (PCを信頼するかのポップアップは許可)
scrcpy.exe
を起動すると接続可能- もう利用しないなら
adb.exe kill-server
をする
後はUSBで接続したときとほとんど変わらず利用できます。遅延もほとんど気にならないレベルでした。
(チュートリアル当日ではスマホとUSBオーディオインターフェイスの間にAppleのUSB-C VGAアダプターを挟んでます。AppleのアダプターにはUSB-A端子以外にUSB-C端子も刺さり、そこから電源供給できます。想像ですがPCとも接続できると思われます。ほかのUSB-Cハブでもできるかも。)
Apple USB-C VGA Multiportアダプタ | |
ASIN : B00VU2NHVG こちらはAmazonアソシエイトプログラム参加リンクです |
スマホ向けUSBオーディオ
マイク入力をスマートフォンに入れるため、当初はスマートフォン内蔵3.5mmジャックを経由してマイク入力を試みました。マイクとイヤホンが別個のプラグから4極プラグにまとめるアダプターを通してみましたが、手持ちのスマホではどれも扱えませんでした。
オーディオファン ヘッドホン マイク 用 変換 ケーブル 3.5mm 4極 オス - 3.5mmステレオミニメス マイク入力 メス | |
ASIN : B07QKS6PQC こちらはAmazonアソシエイトプログラム参加リンクです |
(Xperia X Compact、HTC U11、Pixel 3a、を使いましたがどれも扱えず)
そこで、手持無沙汰になっていたこちらのUSBオーディオインターフェイスを使いました。
USB 外部サウンドカード 100CM MillSO USB 3.5mm変換アダプター USBオーディオインターフェース Windows Vista/XP、Linux、Mac OS/X、 Chrome OS、 Unix等適用(100CM) | |
ASIN : B0828JY2B9 こちらはAmazonアソシエイトプログラム参加リンクです |
こちらもオンライン会議でヘッドセットを使いたいときに4極のマイク付きイヤホンをPCと接続するために購入しました。新しいオーディオインターフェイスを購入したため必要なくなったものですが、ここで大活躍となりました。
まずAndroidはUSBオーディオインターフェイスに対応していて、この製品も、USB-A to Cの変換アダプターを使いAndroid端末に接続は可能でした。(この時にXperiaだけうまく行かなくて、この時点でXperia脱落)
USB デジタル オーディオ | Android オープンソース プロジェクト | Android Open Source Project
認識すると、Google音声文字変換でも設定が変わり利用できます。今回はHTC U11で試しています。
このUSBオーディオインターフェイスはマイク、ステレオイヤホンの4極変換アダプターでマイクのみを入れた状態で接続してもマイクを認識して利用できます。動作させることに成功しました。
使ってみた
完成した文字起こしシステムをチュートリアル当日で利用してみました。
Google音声文字変換はログ保存できますが有効期限が3日までで、外部に保存し忘れてしまったため、具体的な例を挙げずに雑感を述べると(検証まで考えていなかったのでこうなりました...)
チュートリアル実施中にチラチラ見ていた限りだと、普通に話すような言葉には変換が失敗している様子はなかったのですが、専門用語を入れると厳しそうに見えました。比較してみると、
普通に話した様子
チュートリアルの一部分を読んだ様子
専門用語はやはり専門の辞書がないと難しいだろうと思います。
最近見た記事だと、やはり専用の辞書(が備わってるサービス)も存在するようです。この記事の話なかなか良いかも。
Zoomでつかえる自動字幕ツール(AmiVoice/Go) - エムスリーテックブログ
まとめ
以上が文字起こしシステムの全容です。当日はいかがだったでしょうか?
Zoomには字幕機能があります。ただこの字幕機能は文字起こし自体できません。文字を入力するユーザーの割り当てを行うか、別途音声識別をするツールと一緒に使う必要があります。
UDトークも連携可能だそうです。
Zoomで自動的に字幕を出す方法. ちょっとした工夫でWeb会議にライブ感を出そう | by たかはしひろゆき | WingArc1st Inc. | Medium
Zoomの字幕連携機能はAPIベースで行えるので、音声認識して文字変換するAPIを使って作成してもおもしろいかもしれません。
Speech-to-Text: 自動音声認識 | Google Cloud
字幕はアクセシビリティとしても重要だと思いますし、音が出せない環境では目視でも確認できるリソースになります。昔はあまり意識していませんでしたが、今ならスマホだけでも気軽にできる環境作れるので、これからも機会があれば積極的に試していこうと思ってます。