はじめに
WAF形式の音声ファイルを文字起こしする必要がでてきたのでその時に使用したスクリプトを紹介します。
準備
boto3に依存しているのでインストール
$ pip install boto3
スクリプト
音声ファイルはあらかじめバケットのaudio
ディレクトリに保存しています。
バケットからWAVファイルのパスを取得し、1件ずつAmazon TranscribeのJobを実行するようにしています。ここでは音声のチャネル識別のみ有効化しています。
生成された文字起こしのJSONファイルはどうバケットのtranscription
ディレクトリに保存されます。
import boto3
s3_client = boto3.client("s3")
tran_client = boto3.client("transcribe")
BUCKET_NAME = "your bucket name"
AUDIO_PREFIX = "audio"
TRANSCRIPTION_PREFIX = "transcription"
def main():
paginator = s3_client.get_paginator("list_objects_v2")
for page in paginator.paginate(Bucket=BUCKET_NAME, Prefix=AUDIO_PREFIX):
for content in page["Contents"]:
key = content["Key"]
if not key.endswith(".wav"):
continue
job_name = key.split("/")[-1].rsplit(".", 1)[0]
tran_client.start_transcription_job(
TranscriptionJobName=job_name,
LanguageCode="ja-JP",
Media={"MediaFileUri": f"s3://{BUCKET_NAME}/{key}"},
MediaFormat="wav",
OutputBucketName=f"{BUCKET_NAME}",
OutputKey=f"{TRANSCRIPTION_PREFIX}/",
Settings={"ChannelIdentification": True},
)
if __name__ == "__main__":
main()