YouTube の英語音声をリアルタイムで文字起こししたくて Amazon Transcribe で試してみた

YouTube の英語音声を文字起こしできれば AWS re:Invent の学習が捗るのに...!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

AWS re:Invent のセッションなど、YouTube で英語の動画を観る機会がしばしばあります。 YouTube の字幕機能を有効化することで、自動で生成した字幕を表示してくれるので大変捗ります。

しかしながら字幕は流れていってしまうものなので、生成された字幕がテキストとして残るともっと嬉しいです。字幕のエクスポート機能があればよかったのですが、残念ながらそのような機能は用意されていません。(※)

であれば文字起こし機能を使うことで代替できないかなと考えました。AWSには Amazon Transcribe というASR(automatic speech recognition、自動音声認識)のサービスが用意されているので、まずはそれを試してみることにします。

目次

その前に:YouTube の文字起こし機能

ここまで読まれた方の中には、「そもそもめんどくさいことせず YouTube の文字起こし機能を使えばいいんじゃない?」と思った方がいるかもしれません。皆さん。結論から言うと、全くもってその通りです。

字幕のエクスポート機能があればよかったのですが、残念ながらそのような機能は用意されていません。(※)

この文章を書いた3分後に、文字起こし機能を知りました。見切り発車ですね。エクスポートそのものができるわけではありませんが、ほぼやりたいことに合致していそうです。早速使ってみましょう。

YouTube のメニューより「文字起こしを開く」を選択します。

そうすると、このように字幕と同じ内容が表示されます。タイムスタンプを非表示に切り替えることもできます。

この文字起こし結果をコピペすることもできるので、テキストに残したければそれで対応するのが手取り早そうです。便利ですね。これで学習がさらに捗ります。よかったです。

以上です。

......と思ったのものの、せっかくAmazon Transcribe のことを思いついたので試してみます。

Amazon Transcribe のリアルタイム文字起こし

Amazon Transcribe によるリアルタイム文字起こしは以下のリージョンで対応しています。

リージョン論理名 物理名
US East (N. Virginia) us-east-1
US East (Ohio) us-east-2
US West (Oregon) us-west-1
Asia Pacific (Sydney) ap-southeast-2
Canada (Central) ca-central-1
EU (Ireland) eu-wast-1

AWS マネジメントコンソールから Amazon Transcribe のサービス画面に遷移し、Real-time transcription を選択します。

言語(現状ここで対応しているのは English と Spanish )を選択し、「 Start streaming 」を押下すると音声の入力を受けつける形になります。文字起こしされた結果は、リアルタイムでコンソール上に表示されていきます。

追加オプションとして以下を設定することも可能です。

  • カスタム語彙(文字起こしが難しい単語に対する発音や表示の補助)
  • 語彙フィルタリング(指定した単語をマスク、除外などのフィルタリング)

それぞれの機能のイメージは、以下を参照してください。

今回は、以下のセッションの一部( 1:17:41 - 1:18:22 のあたり)を追加オプション無しで文字起こししてみます。

YouTube における文字起こし結果(比較対象)

先に YouTube の文字起こし機能による結果を記しておきます。

we call internally AWS hyperplane now be careful this is an internal service so why am I talking to you about an internal service well I'm telling you about the service because it underpins many of the AWS services that you likely use today let's look at those there are four services which are currently exposing functionality that's built on AWS hyperplane and I suspect there'll be more to come the first is the Amazon Elastic file system or EFS the second is Amazon managed NAT the third is our network load balancer and the fourth is private link

Google 翻訳にかけた結果は以下の通りです。

私たちは内部的にAWSハイパープレーンと呼んでいますが、これは内部サービスであることに注意してください。 内部サービスは、今日使用する可能性のあるAWSサービスの多くを支えているので、サービスについてお伝えします。AWSハイパープレーン上に構築されている機能を現在公開している4つのサービスがあることを確認しましょう。最初に来るのはAmazon Elastic File SystemまたはEFS、2番目はAmazonが管理するNAT、3番目はネットワークロードバランサー、4番目はプライベートリンクです

かなり精度高く文字起こしされている印象です。

試してみた

今回実施する Amazon Transcribe による文字起こしは、外部スピーカーからセッションの音声を出力し、MacBook のビルドインのマイクで入力することで実施しました。

なかなかスムーズに聞き取ってくれず、ボリュームを変えてみたり音声の再生速度を落としてみたりしたのですが、試行の度に結果が変わる状態になりました。

4回分の試行の結果と、それをGoogle翻訳した結果を貼ります。なお、コンソール上に出力される文字起こし結果には改行が含まれていますが、それを省略して記します。

1回目

文字起こし結果。

way call internally ws hyperplasia. Be careful. This is an internal service. So why Why am I talking to you about internal service? Well, I'm telling you about the service because it underpins many of the services that you likely used today. Let's look at those Four services, which currently exposing functionality that's built on eight of us hyper plain and I expect there'll be more to come. The first is the Amazon. Elastic file system or the second, his Amazon managed that third is our network load balancer, and the fourth is privately.

Google翻訳。

内部的にws hyperplasiaを呼び出す方法。 注意してください。これは内部サービスです。では、なぜ内部サービスについて話しているのですか?さて、私はあなたが今日使用した可能性のあるサービスの多くを支えているので、サービスについてあなたに話しています。それらを見てみましょう 4つのサービスは、現在8人のハイパープレーンに基づいて構築されている機能を公開しており、今後さらに増えると予想しています。 最初はアマゾンです。 Elastic file systemまたは2番目、彼のAmazonは3番目が私たちのネットワークロードバランサーであり、4番目が非公開であると管理しました。

2回目

文字起こし結果。

Wait, Call internally hyperplasia. Now be careful. This is Aventura ll service. So why? Why am I talking to you about internal service? Well, I'm telling you about the service because it underpins many of the eight of US services that you likely used today. There are four services which apparently exposing functionality that's built on eight of us hyper playing, and I suspect it will be more Come The first is the Amazon. Elastic file system or the second is Amazon managed that the third is our network load balancer on the fourth. Is privately.

Google翻訳。

待って、内部的に過形成を呼んでください。 注意してください。これはアベンチュラllサービスです。なぜ?なぜ内部サービスについて話しているのですか?さて、私はあなたが今日使用したと思われる米国の8つのサービスの多くを支えているので、このサービスについてお話します。 私たち8人のハイパープレイに基づいて構築された機能を明らかに公開している4つのサービスがあり、私はそれがもっとあると思う 来て 最初はアマゾンです。 2番目のエラスティックファイルシステムはAmazonが管理するもので、3番目は4番目のネットワークロードバランサーです。 個人的にです。

3回目

文字起こし結果。

we call internally careful. This is an internal service. So why Why am I talking to you about it? Internal service. I'm telling you about the service because it underpins many of the services that you likely used today. Let's forget those therefore, services, which are Carly, exposing functionality that's built. Eight of us hyper plain and I suspect there'll be more to come. The first is the Amazon. Elastic files. The Marquis event is Amazon managed. Third is our network load bouncer, and the fourth is privately

Google翻訳。

内部的に注意深く呼びます。これは内部サービスです。それで、なぜ私はあなたにそれについて話しているのですか?内部サービス。 このサービスについてお話ししたのは、今日使用されているサービスの多くを支えているからです。したがって、カーリーであるサービスを忘れて、構築された機能を公開します。 私たちのうちの8人は非常に平野で、これからもっと来ると思います。 最初はアマゾンです。 エラスティックファイル。 MarquisイベントはAmazonが管理しています。 3つ目はネットワーク負荷バウンサーで、4つ目は非公開です

4回目

文字起こし結果。

Not product We call internally. Be careful. This is an internal service. So what? Why am I talking to you about it? Interim service. I'm telling you about the service because it underpins many of the services that you likely used today. Look at those assurances which apparently exposing functionality that's built on a diaper and I suspect it will be more Come on. The first is the Amazon. Elastic files. His Amazon managed that Is our network load bouncer before this privately. 

Google翻訳。めっちゃ怒るじゃん。

製品ではありません内部的に呼び出します。 注意してください。これは内部サービスです。 だから何?なぜ私はそれについてあなたに話しているのですか?暫定サービス。 このサービスについてお話ししたのは、今日使用されているサービスの多くを支えているからです。 おむつに組み込まれている機能を明らかに公開している保証を見てください。 いい加減にして。 最初はアマゾンです。 エラスティックファイル。彼のアマゾンはそれを管理しました これの前に私たちのネットワーク負荷バウンサーは非公開です。

試してみた結果

今回文字起こしを行った箇所は AWS に関する独自の用語が多く、それらを正確に文字起こしするのは難しいようでした。こういった部分の精度を上げるには、カスタム語彙を活用するのが良さそうです。

先に確認した YouTube の字幕はリアルタイムで生成されているわけではなく、そこと比較すると精度は流石に低いな、と率直に感じました。ただ、改行や文末のピリオドを入れてくれるのは個人的に好きな部分です。

ちなみに文字起こしにかかる料金は以下の通りです。10分間ストリーミングを行うと数十円かかる、という金額感ですね。

Amazon Transcribe API (ストリーミングとバッチ文字起こしの両方) は、1 秒あたり 0.0004USD のレートで月ごとに請求されます。使用料は 1 秒ごとに発生し、15 秒未満のリクエストについては 15 秒分の料金が発生します。

https://aws.amazon.com/jp/transcribe/pricing/

Real-time Audio Transcription を使ったリアルタイム文字起こし

AWS マネジメントコンソールを利用したリアルタイム文字起こしより、もう少しお手軽に試すこともできます。こちらです。

Real-time Audio Transcription は、WebSocket を使用した Amazon Transcribe のリアルタイム文字起こしのためのサンプルの静的 Web サイトです。

以下のブログにおいて紹介されました。

画面イメージはこのようになっていて、アクセスキーとシークレットアクセスキーを入力後、言語とリージョンを選択し「Start」を押下することで文字起こしが開始されます。

呼び出しているAPIが異なるのか、対応している言語がマネジメントコンソールより多くなっていました。

アクセスキーを発行するユーザーには、以下の権限を割り当てておけば大丈夫です。

{
"Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "transcribestreaming",
            "Effect": "Allow",
            "Action": "transcribe:StartStreamTranscriptionWebSocket",
            "Resource": "*"
        }
    ]
}

文字起こしの精度は、マネジメントコンソールで行った場合と同程度の印象です。

Product called Internally KWS hyperplasia. Be careful. This is an internal service. So why Why am I talking to you about an internal service? Well, I'm telling you about the service because it underpins many of the eight of US services that you likely used today. There are four services which are currently exposing functionality that's built on eight of us hyper plan and I suspect will be more to come. The first is the Amazon. Elastic file system or the second is Amazon managed that the third is our network load balancer, and the fourth is privately.

Google翻訳。

内部的にKWS過形成と呼ばれる製品。注意してください。これは内部サービスです。では、なぜ内部サービスについて話しているのですか?さて、私はあなたが今日使用したと思われる米国の8つのサービスの多くを支えているので、このサービスについてお話します。現在、8人のハイパープランに基づいて構築されている機能を公開している4つのサービスがあり、今後さらに増えると思われます。最初はアマゾンです。Elasticファイルシステムまたは2番目はAmazonが管理するもので、3番目はネットワークロードバランサーであり、4番目は非公開です。

Private Link を文字起こしするのはハードルが高いようですね。こちらはオプションが設定できないので、カスタム語彙や語彙フィルタリングは使えません。

Google ドキュメントと音声入力を利用した文字起こし

もう一つ文字起こしのツールとして興味があったのが Google ドキュメントと音声入力の組み合わせです。早速試してみます。

画面上部のツールから、音声入力を選択します。

表示されたマイクのアイコンの上部で言語を切り替え、クリックして入力を開始します。

対応している言語が英語だけでもこれだけあり、このセッションではどれが該当するかがわからなかったので、「英語(アメリカ)」を選択しておきました。

英語(オーストラリア)、英語(カナダ)、英語(ガーナ)、英語(インド)、英語(アイルランド)、英語(ケニア)、英語(ニュージーランド)、英語(ナイジェリア)、英語(フィリピン)、英語(南アフリカ)、英語(タンザニア)、英語(イギリス)、英語(アメリカ)

音声で入力する - ドキュメント エディタ ヘルプ

音声を入力するとこのような形で文字起こしされていきます。YouTube の文字起こし同様、改行や文末のピリオドは含まれません。

試してみた結果は以下です。

AWS hyperplane be careful this is an internal service service long telling you about the lady of the AWS services that you likely use today let's look at those built on AWS hyperplane Amazon elastic file system DFS II is Amazon manage that the third is our Network load balancer and the fourth is private link

AWSハイパープレーンに注意してくださいこれは、今日使用する可能性が高いAWSサービスの女性について長い間説明している内部サービスサービスですAWSハイパープレーンで構築されたものを見てみましょうAmazonエラスティックファイルシステムDFS IIはAmazonが管理しますそして4番目はプライベートリンクです

2回目。

Call internally many of the AWS services that you likely use today and I suspect they'll be more to come Amazon elastic file system DFS II is Amazon manage that the third is our Network load balancer and the fourth is private like

現在使用している可能性が高いAWSサービスの多くを内部で呼び出します。AmazonエラスティックファイルシステムDFS IIはAmazonが管理するものです。3番目はネットワークロードバランサーで、4番目はプライベートです。

Amazon Transcribe と比較して、AWS用語に関する精度が高いと感じました。一方で、使いどころが難しいと思った点もあります。

入力が長く続くと、途中で音声を受け付けてくれなくなりました。文字起こしの分量がこれまでのものと比較して少ないのはそのためです。

また、入力を行っているブラウザのタブが非アクティブになる(平たく言うと、他のタブや他のウインドウを選択する)と、文字入力が中断されます。あくまでキーボード入力の代替として使うのが正解のようです。

その他の文字起こし

他にもいくつか調べる中で興味があったものを取り上げます。

Amazon Transcribe のリアルタイム文字起こしのAPIを利用したデモアプリです。手元で確認できるのは面白そうですね。

リアルタイムでなくバッチでの文字起こしも選択肢としてはあります。音声ファイルの S3 へのPutをトリガーに、 Lambda を利用してサーバレスで文字起こしができる構成を過去に学びました。(必要に応じて翻訳まで続けて可能)

セッションの音声ファイルをどうやってうまいこと入手しよう?となった時に妙案が浮かばなかったので見送りました。

終わりに

Amazon Transcribe による文字起こしを試してみました。リアルタイム文字起こしという特性上、精度はまだ発展途上という印象です。精度がアップデートしていくのに期待しつつ、現状は YouTube の文字起こし機能を利用するのがユースケースに合致していそうです。

あとは自分自身のリスニング能力もアップデートしなくては......という決意を新たにしました。

さいごにお気に入りの翻訳結果と共にお別れです。疲れた時に見ると元気が出ます。

製品ではありません内部的に呼び出します。 注意してください。これは内部サービスです。 だから何?なぜ私はそれについてあなたに話しているのですか?暫定サービス。 このサービスについてお話ししたのは、今日使用されているサービスの多くを支えているからです。 おむつに組み込まれている機能を明らかに公開している保証を見てください。 いい加減にして。 最初はアマゾンです。 エラスティックファイル。彼のアマゾンはそれを管理しました これの前に私たちのネットワーク負荷バウンサーは非公開です。

それではまた次回お会いしましょう。