はじめに
AWSチュートリアルにAmazon Transcribeを使ったチュートリアル「音声を文字起こしする」というのを見つけたので、これをaws-cliで試してみました。
準備
まずは文字起こしをする音声ファイルの置き場所となるバケットを作成します。
$ 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
}
}
}
TranscriptionJobStatus
がCOMPLETEDになり、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チュートリアル:音声を文字起こしする