7
7

More than 3 years have passed since last update.

Amazon Transcribeで音声の文字起こしを行う。

Posted at

はじめに

AWSチュートリアルにAmazon Transcribeを使ったチュートリアル「音声を文字起こしする」というのを見つけたので、これをaws-cliで試してみました。

準備

まずは文字起こしをする音声ファイルの置き場所となるバケットを作成します。

S3バケットの作成
$ aws s3 mb s3://trnsrb-test
make_bucket: trnsrb-test

作成したら、そのバケットへ音声ファイルをアップロードします。
今回はチュートリアルにあるサンプル音声を使いたいと思います。

ファイルのアップロード
$ aws s3 cp ./transcribe-sample.mp3 s3://trnsrb-test
upload: ./transcribe-sample.mp3 to s3://trnsrb-test/transcribe-sample.mp3
確認
$ aws s3 ls s3://trnsrb-test
2020-03-07 11:27:35     420049 transcribe-sample.mp3

実践

準備ができたら文字起こしの開始です。

文字起こし

文字起こしで実行するには start-transcription-job を使います。このコマンドで「非同期ジョブを開始して、オーディオファイルの音声をテキストに文字起こし」を行います。

文字起こしの開始
$ aws transcribe start-transcription-job \
> --transcription-job-name trans-test \
> --language-code en-US \
> --media-format mp3 \
> --media MediaFileUri=s3://trnsrb-test/transcribe-sample.mp3 \
> --output-bucket-name trnsrb-test
{
    "TranscriptionJob": {
        "TranscriptionJobName": "trans-test",
        "TranscriptionJobStatus": "IN_PROGRESS",
        "LanguageCode": "en-US",
        "MediaFormat": "mp3",
        "Media": {
            "MediaFileUri": "s3://trnsrb-test/transcribe-sample.mp3"
        },
        "StartTime": "2020-03-07T11:44:32.349000+09:00",
        "CreationTime": "2020-03-07T11:44:32.316000+09:00"
    }
}
オプション 説明
--transcription-job-name 実行するジョブ名
--language-code メディアファイルで使われている言語コード
--media-format メデイアファイルのフォーマット
--media メディアファイルのURI
--output-bucket-name 書き起こしたテキストの出力先

ジョブの確認

では、ジョブを確認してみます。
まず、list-transcription-jobs では開始された文字起こしジョブのリストを確認できます。

ジョブの一覧
$ aws transcribe list-transcription-jobs
{
    "TranscriptionJobSummaries": [
        {
            "TranscriptionJobName": "trans-test",
            "CreationTime": "2020-03-07T11:44:32.316000+09:00",
            "StartTime": "2020-03-07T11:44:32.349000+09:00",
            "CompletionTime": "2020-03-07T11:45:16.075000+09:00",
            "LanguageCode": "en-US",
            "TranscriptionJobStatus": "COMPLETED",
            "OutputLocationType": "CUSTOMER_BUCKET"
        }
    ]
}

さらに、文字起こしジョブの結果は get-transcription-job で確認することができます。

ジョブ情報の確認
$ aws transcribe get-transcription-job --transcription-job-name trans-test
{
    "TranscriptionJob": {
        "TranscriptionJobName": "trans-test",
        "TranscriptionJobStatus": "COMPLETED",
        "LanguageCode": "en-US",
        "MediaSampleRateHertz": 44100,
        "MediaFormat": "mp3",
        "Media": {
            "MediaFileUri": "s3://trnsrb-test/transcribe-sample.mp3"
        },
        "Transcript": {
            "TranscriptFileUri": "https://s3.ap-northeast-1.amazonaws.com/trnsrb-test/trans-test.json"
        },
        "StartTime": "2020-03-07T11:44:32.349000+09:00",
        "CreationTime": "2020-03-07T11:44:32.316000+09:00",
        "CompletionTime": "2020-03-07T11:45:16.075000+09:00",
        "Settings": {
            "ChannelIdentification": false,
            "ShowAlternatives": false
        }
    }
}

TranscriptionJobStatusCOMPLETEDになり、TranscriptFileUriに文字起こしされた結果の出力先URIが確認できます。

確認

それでは保存先に指定したバケットを確認してみます。
バケットの中を確認するとtrans-test.jsonができているのが確認できます。

ファイル確認
$ aws s3 ls s3://trnsrb-test
2020-03-07 12:27:06          2 .write_access_check_file.temp
2020-03-07 12:28:11       9861 trans-test.json
2020-03-07 11:27:35     420049 transcribe-sample.mp3

それではダウンロードして確認してみます。

ダウンロード
$ aws s3 cp s3://trnsrb-test/trans-test.json ./
download: s3://trnsrb-test/trans-test.json to ./trans-test.json

ファイルには文字起こしされたテキストだけではなく、実行ジョブに関する情報なども保存されているため、jqを使うと見易く表示できるのでおすすめです。

内容確認
$ cat trans-test.json |jq .results[][0].transcript
"machine learning is employed in a range of computing tasks where designing and program explicit algorithms with good performance is difficult or infeasible. Example. Applications include email filtering, detection of network intruders and computervision. Machine learning is closely related to computational statistics, which also focuses on predictions making through the use of computer. It has strong ties to mathematical optimization, which delivers methods, theory and application domains to the field."

今回文字起こしした内容が確認できました。

後片付け

今回テストで作成したものは削除しておきます。削除作業は作成した順番とは逆に行うとスムーズに行えます。

ジョブの削除

まずはジョブの削除です。delete-transcription-job で登録されたジョブを削除します。

ジョブ削除
$ aws transcribe delete-transcription-job --transcription-job-name trans-test
削除確認
$ aws transcribe list-transcription-jobs
{
    "TranscriptionJobSummaries": []
}

s3バケットの削除

最後にバケットの削除を行います。

バケットの中身の削除
$ aws s3 rm s3://trnsrb-test --recursive
delete: s3://trnsrb-test/transcribe-sample.mp3
delete: s3://trnsrb-test/.write_access_check_file.temp
delete: s3://trnsrb-test/trans-test3.json
バケットの削除
$ aws s3 rb s3://trnsrb-test
remove_bucket: trnsrb-test

以上で完了です。

おわりに

普段触れない分野と言うこともあり、まずは「どんなものなのか触れてみる」というのを目的に試しました。
とてもサクッとできて面白いので、今度は何か自分で言葉を録音して試してみようと思います。


[参考ドキュメント]
AWS CLI Command Reference - transcribe
AWS CLI Command Reference - s3
AWSチュートリアル:音声を文字起こしする

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7