くまのつぶやき

かんがえる、きめる、はかる、つくる、つたえるにまつわるスキルやテクニックを書いてます。ときどき、はたらきかたとか、気になったこととかも。

Zoomでレコーディングした音声ファイルをAmazon Transcribeで文字起こしして、議事メモにしちゃうの巻

こんにちは、くまごろうです。

Work From Home花盛りの日本、そしてZoomによるミーティングも真っ盛りになりました。

Zoomはミーティングを記録することができます。
記録は動画ファイルと音声ファイルとして保存されます。

もちろんこれだけでも価値があるのですが、
今日はAWS Transcribeを使って文字起こししてみます。



事前準備:AWSのアカウントを作る

Amazonのページに手順があるので、それをもとに作ってみましょう。
aws.amazon.com

無料枠がついてくるのでTranscribe以外もお試ししてみるといいですね。
Transcribeの無料枠は最初の60分間となります。
aws.amazon.com

USで処理させれば1時間でも$1.44、およそ150円くらいですので、
人間が文字起こしすることを考えれば格安ですね。

Zoomのミーティングをレコーディングする

Zoomの画面下にある”レコーディング”をクリックして、
保存の仕方を選びます。
無料版でも使える”このコンピュータにレコーディング”を選んでみます。
f:id:kumabro:20200411084245p:plain

ミーティングが終わったら、音声ファイルを確認する

ミーティングが終わるとレコーディング結果を保存するプロセスが始まります。
終わるとフォルダが開かれて、3つのファイルが作られています。
”audio_only.m4a"が音声のみの録音ファイルです。
f:id:kumabro:20200411084559p:plain

AWS S3バケットを作る

ここからAWSでの設定に入ります。
AWSに音声ファイルを格納するため、S3サービスに保存先フォルダとなる”バケット”を作ります。

S3を起動

AWSのコンソールからサービス>S3をクリックします。
f:id:kumabro:20200411084820p:plain

バケットの作成をクリック

f:id:kumabro:20200411085018p:plain

バケット名を入力して、バケットを作成

”パブリックアクセスをすべてブロック”はそのままで。
そうしないと悪意ある人にいいように使われて、
とんでもない請求がくるかもなので。
f:id:kumabro:20200411085235p:plain

AWS S3に音声ファイルをアップロードする

作成したバケットに音声ファイルをアップロードします。

作成したバケットを開く

こんな画面が出てきます。
f:id:kumabro:20200411085428p:plain

audio_only.m4aをドラッグアンドドロップしてアップロードする

ダイアログが出てくるので”次へ”を押していき、最後に”アップロードする”でアップロード開始します。

ファイルの所在をコピーする

アップロードしたファイルをクリックして、画面右に出てくる”コピーパス”をクリックします。
コピーした内容は、Transcribeの設定で必要になるので、メモ帳などにペーストしておくといいですね。
f:id:kumabro:20200411090104p:plain

AWS Transcribeで音声ファイルを文字起こしする

Transcribeを起動する

AWSコンソールからサービス <> Machine Learning > Transcribeをクリックします。
f:id:kumabro:20200411090303p:plain

Create Jobをクリックする

f:id:kumabro:20200411090430p:plain

Jobの設定を行う

NameはTranscribeで実行するジョブの名前を入力します。あなたがわかればなんでもいいので英数字で設定。
Languageは音声ファイルの言語を入力します。日本語ならば”Japanese,JP(ja-JP)"です。
Input file location on S3にさきほど”コピーパス”でコピーしたS3のファイルパスを入力します。
最後に”次へ”を押します。
f:id:kumabro:20200411090554p:plain

Optionで、会話に参加した人数を設定する。

議事メモにしたいので、喋った人が識別できるといいですね。
その設定はOptionで行います。
”Audio Identification"をオンにします。
続いて”Speaker Identification"をオンにします。
最後に識別したい人数を”Maximum number of speakers”に入力します。
4人の声を識別するならば、4と入力します。
最後に”Create"ボタンを押して、ジョブの作成が完了し、文字起こしジョブが始まります。
f:id:kumabro:20200411091007p:plain

文字起こしジョブ実行中はStatusが”In progress"と表示されます。
f:id:kumabro:20200411091226p:plain

ジョブが終わるとStatusが”Complete"となります。
f:id:kumabro:20200411091346p:plain

30分程度の会議をTranscribeしてみたところ、10分ほどでジョブは終わりました。

文字起こしした結果をダウンロードする

Statusが”Complete"になったら、ジョブ名をクリックし、結果を確認します。
画面を下にスクロールして”Transcription Preview"に結果の一部が表示されます。
f:id:kumabro:20200411091554p:plain

このとき話した言葉はこちらです。
Transcribeが誤認識したところを赤文字にしています。

これ は テスト です これ は テスト で す いま 喋っ て 見 て い ます 今、 音楽 を 聴き ながら ズーム で の レコーディング の 仕方 について ブログ を 書い て いま ます

けっこうな精度で正しく認識してくれていますね。

画面上部の”Download Full Script"ボタンをクリックすると、すべての文字起こし結果をjson形式でダウンロードできます。
f:id:kumabro:20200411091653p:plain

ここからが課題

実はここからが課題です。
ひとり語りならば、jsonの最初のブロックにあるTranscriptの結果をとってくれば完結します。
しかし会話となるとTranscribeが判定したSpeaker IDごとにデータをまとめてあげる必要があります。

Pythonがかける方であれば、tscribeというライブラリを使って処理してみてください。
pypi.org

ただちょっとこれも英語の解析結果が前提となっていて、少し日本語では使いづらいです。

ということで、tscribeをベースに、日本語解析結果をきれいにするプログラムを開発中です。

もう少しかかりそうなのですが、できあがったら公開いたします。


ということで、ちょっと中途半端でしたが、Zoomのレコーディングデータを使って、Amazon Transcribeで文字起こしでした!

copyrights kumagorou all rights reserved.