Amazon Transcribeで韓国語を文字起こししてみた

はじめに

今年3月にAmazon Transcribeが韓国語とドイツ語をサポートしました。

実際ドイツ語については弊社ベルリンオフィスのirbbbがすでにブログ化しています。

じゃ、韓国語の文字起こしやってみるかな!と思ったのですが、ここで一つ問題が。僕は韓国語の音声ファイルを所持していません。

こんなときに便利なのはYoutubeですが、Youtubeは動画をダウンロードすることを利用規約で禁じています。

5. お客様によるサイト上のコンテンツの使用
上記の一般的な制限に加え、以下の制限及び条件が、お客様による本コンテンツの使用について特に適用されます。
(---snip---)
B.本コンテンツは、「現状有姿」でお客様に提供されています。お客様は、本コンテンツに、本サービスの機能により意図されており本サービス条件により認められている限度で、参考目的での個人的な利用のためにのみアクセスすることができます。お客様は、「ダウンロード」または同様のリンクが本コンテンツについて本サービス上でYouTubeにより表示されている場合を除き、いかなる本コンテンツもダウンロードしてはなりません。

さてどうしたものか...作るか!ということで、日本語の文章をAmazon Translateで韓国語に翻訳し、Amazon Pollyで読み上げ、そしてAmazon Transcribeで文字に起こしてみます。

やってみた

まずは元となる日本語文章を。クラスメソッドのコーポレートサイトに記載されている以下の文章を使います。

クラスメソッドは、クラウド、モバイルアプリ、ビッグデータ、AIにおける企業向け技術支援を展開しています。AWS分野においては世界トップクラスの技術力で1000社以上の導入実績を持ち、2019年には国内8社のみの最上位コンサルティングパートナーの中でパートナー・オブ・ザ・イヤーに選出されました。

ではこの文章をAmazon Translateを使って韓国語に翻訳してみます。

$ aws translate translate-text --text 'クラスメソッドは、クラウド、モバイルアプリ、ビッグデータ、AIにおける企業向け技術支援を展開しています。AWS分野においては世界トップクラスの技術力で1000社以上の導入実績を持ち、2019 年には国内8社のみの最上位コンサルティングパートナーの中でパートナー・オブ・ザ・ イヤーに選出されました。' --source-language-code ja --target-language-code ko --region us-east-1

{
    "TargetLanguageCode": "ko",
    "TranslatedText": "클래스 메소드는 클라우드, 모바일 앱, 빅 데이터 및 AI에서 엔터프라이즈 기술 지원을 확장합니다. 세계 최고 수준의 기술 AWS 분야에서 1000개 이상의 기업을 보유하고 있으며, 2019년에는 8곳의 국내 최고 컨설팅 파트너 중 올해의 파트너로 선정되었습니다.",
    "SourceLanguageCode": "ja"
}

次に翻訳結果の韓国語をPollyで音声ファイルに変換します。韓国語の音声はSeoyeonという女性タイプのみです。

$ aws polly synthesize-speech --text "클래스 메소드는 클 라우드, 모바일 앱, 빅 데이터 및 AI에서 엔터프라이즈 기술 지원을 확장합니다. 세계 최고 수준의 기술 AWS 분야에서 1000개 이상의 기업을 보유하고 있으며, 2019년에는 8곳의 국내 최고 컨설팅 파트너 중 올해의 파트너로 선정되었습니다." --voice-id Seoyeon --output-format mp3 korean.mp3 --region us-east-1

{
    "ContentType": "audio/mpeg",
    "RequestCharacters": "147"
}

アウトプットされたのがこれ。

作成されたMP3ファイル(上記の例だとkorean.mp3)をS3にアップロードします。

さて、大本命。Amazon Transcribeを使ってMP3ファイルを読み上げます。

aws transcribe start-transcription-job \
  --transcription-job-name korean\
  --media-format mp3 \
  --language-code ko-KR \
  --media MediaFileUri=https://BUCKET.s3.amazonaws.com/korean.mp3
  
 {
    "TranscriptionJob": {
        "TranscriptionJobName": "korean",
        "LanguageCode": "ko-KR",
        "TranscriptionJobStatus": "IN_PROGRESS",
        "Media": {
            "MediaFileUri": "https://BUCKET.s3.amazonaws.com/korean.mp3"
        },
        "CreationTime": 1567152600.312,
        "MediaFormat": "mp3"
    }
}

こんな感じでTranscription jobが作成されます。

Jobがコンプリートされると、Outputの場所が表示されます。

OutputされたJSONファイルの中身。長いので割愛します。

{"jobName":"korean","accountId":"486932999342","results":{"transcripts":[{"transcript":"글래스 메소드 는 클라우드 모바일 빅데이터 및 AI 에서 엔터프라이즈 기술지원을 확장 합니다. 세계 최고 수준의 기술 NWS 분야에서 천 개 이상의 기업을 보유하고 있으며, 이천십구 년에는 여덟 곳의 국내 최고 컨설팅 파트너 중 올해의 파트너로 선정됐습니다."}],"items":
(---snip---)

文字列として比較してみます。

元文章 結果
클래스 메소드는 클 라우드, 모바일 앱, 빅 데이터 및 AI에서 엔터프라이즈 기술 지원을 확장합니다. 세계 최고 수준의 기술 AWS 분야에서 1000개 이상의 기업을 보유하고 있으며, 2019년에는 8곳의 국내 최고 컨설팅 파트너 중 올해의 파트너로 선정되었습니다 글래스 메소드 는 클라우드 모바일 빅데이터 및 AI 에서 엔터프라이즈 기술지원을 확장 합니다. 세계 최고 수준의 기술 NWS 분야에서 천 개 이상의 기업을 보유하고 있으며, 이천십구 년에는 여덟 곳의 국내 최고 컨설팅 파트너 중 올해의 파트너로 선정됐습니다.

微妙に違う...しかし韓国語をDiffできるようなツールが見当たらなかったので、とりあえず結果の文章を再度Amazon Translateで日本語に戻してみます。

$ aws translate translate-text --text '글래스 메소드 는  클라우드 모바일 빅데이터 및 AI 에서 엔터프라이즈 기술지원을 확장 합니다. 세계 최고 수준의 기술 NWS 분야에서 천 개 이상의 기업을 보유하고 있으며, 이천십구 년에는 여덟 곳의 국내 최고 컨설팅 파트너 중 올해의 파트너로 선정됐습니다.' --source-language-code ko --target-language-code ja --region us-east-1

{
    "TargetLanguageCode": "ja",
    "TranslatedText": "Glass Methodは、クラウドモバイルビッグデータとAIからエンタープライズテクニカルサポートを拡張します。 世界有数の技術NWS部門で千以上の企業で、同社は25年間で年間の国のトップコンサルティングパートナーの8の間で今年のパートナーとして選ばれています。",
    "SourceLanguageCode": "ko"
}

なんとも惜しい。まぁ大体合ってると言って良いのではないでしょうか!

さいごに

完全自動化は難しいかもしれませんが、ざっくり読み上げて細かい精度を手動で調整するのであれば、使いみちは色々あるかと思います!