Boto3를 활용한 S3의 오디오파일을 Transcribe를 이용하여 번역한 후 S3에 저장하는 방법

3분 분량
콘텐츠 수준: 중급
0

본 기사에서는 S3에 저장되어있는 영문 오디오 파일을 텍스트화 시키고 텍스트를 번역하여 S3에 저장하는 방법을 다룹니다.

사용사례

본인의 언어가 아닌 다른 언어로 되어있는 영상을 접할때가 있을 수 있습니다. 이러한 경우 언어의 차이로 인해서 영상을 이해하지 못하는 문제가 발생합니다. 이러한 문제를 해결하기 위해 아래의 단계를 거쳐 오디오 파일을 텍스트화 하고 텍스트를 번역하여 이해할수있는 솔루션을 제공해드립니다. 해당 솔루션에서는 영어로된 오디오 파일만을 예시로 삼고 있습니다. 하지만 코드의 일부를 수정하면 다른 언어에서도 한국어로 번역하여 저장할 수 있습니다.

전제조건

  • S3에 WAV/MP4 등의 영어로 된 오디오 파일 존재해야합니다.
  • Pycharm과 같은 Python IDE가 설치 되어 있어야합니다.
  • aws cli가 설치되어 있어야 합니다. [1]

1단계 : IAM 사용자 생성

  • IAM 페이지에 접속합니다.
  • [액세스 관리],[사용자],[사용자 생성]
  • [사용자 이름]에 이름을 입력하고 [직접 정책 연결]을 클릭하여 아래의 권한을 넣습니다.
  • AmazonS3FullAccess, AmazonTranscribeFullAccess, TranslateFullAccess

Enter image description here

  • 이후 만들어진 사용자를 클릭하여 [액세스키1],[액세스 키 만들기]를 클릭합니다.
  • [사용사례]에 Command Line Interface를 선택합니다.
  • 이후 [액세스 키만들기]를 누르고 액세스키와 비밀 액세스키를 노트에 저장해둡니다.

Enter image description here

2단계 : AWS CLI 에서 자격증명하기

  • 커맨드 프롬프트를 실행합니다.
  • aws cofigure를 이용하여 위의 액세스키와 비밀 액세스키를 입력하여 자격증명을 합니다.[2]

3단계 : Pycharm 에서 필요한 라이브러리 설치 및 코드 설정

  • Pycharm 터미널에서 코드에 사용되는 pandas, boto3를 아래의 명령어를 이용하여 설치합니다.
    • pip install pandas
    • pip install boto3
  • translate_s3.py 파일을 생성하고 아래와 같이 코드를 입력해줍니다.

(단 해당 코드는 예시코드로서 주석을 참고하여 고객님의 상황에 맞추어 변경이 필요합니다.)

import time
import boto3
import pandas as pd
from datetime import datetime

# Amazon Transcribe, Translate,S3 클라이언트 생성
# 버킷과 오디오 파일이름, 그리고 파일의 형식을 상황에 맞추어 변경하시면 됩니다. 

transcribe_client = boto3.client('transcribe')
translate_client = boto3.client('translate')
s3_client=boto3.client('s3')

# 오디오 파일이 있는 버킷지정
bucket_name = '<오디오 파일이 있는 버킷>'

# 오디오 파일의 경로 및 이름
audio_file_path = ''<파일의 경로를 포함한 오디오 파일명>'

timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
job_name = 'transcribe-job{}'.format(timestamp)

# 오디오 파일의 언어 및 형식(WAV,MP4..)
language_code = 'en-US'  
media_format = 'wav'
response = transcribe_client.start_transcription_job(
    TranscriptionJobName=job_name,
    LanguageCode=language_code,
    MediaFormat=media_format,
    Media={
        'MediaFileUri': f's3://{bucket_name}/{audio_file_path}'
    }
)
print("Transcription Job Started: " + response['TranscriptionJob']['TranscriptionJobName'])

while True:
    response = transcribe_client.get_transcription_job(TranscriptionJobName=job_name)
    job_status = response['TranscriptionJob']['TranscriptionJobStatus']
    if job_status in ['COMPLETED', 'FAILED']:
        break
    time.sleep(10)

if job_status == 'COMPLETED':
    data = pd.read_json(response['TranscriptionJob']['Transcript']['TranscriptFileUri'])
    text_to_translate=data['results'][1][0]['transcript']translate_client = boto3.client('translate')
    target_language_code = 'ko'  # 대상 언어 코드 (한국어: 'ko')
    response = translate_client.translate_text(
        Text=text_to_translate,
        SourceLanguageCode='en',  # 원본 언어 코드 (영어: 'en')
        TargetLanguageCode=target_language_code
    )
    translated_text = response['TranslatedText']

    object_name=job_name+"_translated.txt"

    # 번역 결과 S3에 txt형식으로 저장
    s3_client.put_object(Body=translated_text,Bucket=bucket_name,Key=object_name)
else:
    print("Transcription Job is not completed yet.")

4단계: 테스트 및 S3 버킷 확인

  • S3 버킷에 있는 오디오 파일(WAV)을 위의 코드에 넣어줍니다.
  • 이후에 코드를 실행시키면 아래와 같이 S3의 오디오 파일이 번역되어 텍스트가 되어 파일이 생성됩니다. Enter image description here Enter image description here

참고 자료

[1] AWS CLI 설치 및 업데이트 지침

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions

[2] 구성 설정 지정 및 보기

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods

profile pictureAWS
지원 엔지니어
게시됨 8달 전231회 조회
댓글 없음

관련 콘텐츠