AWS SDK는 AWS의 다양한 기능을 개발자가 손쉽게 활용할 수 있도록 지원하는 도구 모음입니다. 이 중에서도 음성을 텍스트로 변환하는 기능은 음성 데이터를 효과적으로 처리하고 이를 텍스트 형식으로 변환하여 활용할 수 있는 중요한 기능 중 하나입니다. 이 글에서는 AWS SDK를 사용하여 음성을 텍스트로 변환하는 과정에 대해 설명하겠습니다.
AWS Transcribe 으로 음성을 텍스트로 변환
AWS Transcirbe에 대한 자세한 설명은 AWS > 설명서 > Transcirbe > 개발자 가이드에 있습니다.
1. AWS 가입 : AWS에 계정을 생성합니다.
2. IAM 사용자 생성 : 1-1에서 생성한 계정은 root계정, 사용자 계정을 생성합니다.
3. 액세스 ID/Key 받습니다.
4. AWS CLI 버전2 설치합니다.
- aws config
AWS Access Key ID : 액세스 ID 입력
AWS Secret ACCESS Key : 액세스Key 입력
Default region name : ap-northeast-2
Defalut output format : json
5. 사용자 계정으로 로그인 하여 s3버킷 만듭니다.
1. AWS SDK for Python 활용
AWS Transcribe 사용하여 음성파일을 텍스트로 변환할 수 있는 코드입니다.
AWS의 SDK를 파이썬 환경에서 사용합니다.
from urllib import request
from ast import literal_eval
import boto3
from botocore.config import Config
bucket = '버킷이름'
file_nm = '음성파일이름'
file_dir = '음성파일위치'
# 음성파일
audio = open('{}{}.wav'.format(file_dir,file_nm), 'rb')
# 파일 S3에 업로드
s3 = boto3.resource('s3')
upload = s3.Bucket(bucket).put_object(Key='{}.wav'.format(file_nm), Body=audio)
# Transcribe를 위한 Config 설정
my_config = Config(
region_name = 'ap_northeast-2',
signature_version = 'v4',
retries={
'max_attempts':5,
'mode':'standard'
}
)
# Transcribe 실행
transcribe =boto3.client('transcribe', config=my_config)
# s3에 업로드한 파일 URL
job_uri = 'https://s3.ap-northeast-2.amazonaws.com/{}/{}.wav'.format(bucket,file_nm)
transcribe.start_transcription_job(
TranscriptionJobName=file_nm,
Media={'MediaFileUri': job_uri},
MediaFormat='wav',
LanguageCode='ko-KR',
Settings={
'ShowSpeakerLabels' : True, # 화자분리 기능 True or False
'MaxSpeakerLabels' : 2 # 화자수
}
)
# Transcribe job 작업이 끝나면 결과값 불러옴
while True:
status = transcribe.get_transcription_job(TranscriptionJobName=file_nm)
if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:
save_json_uri = status['TranscriptionJob']['Transcript']['TranscriptFileUri']
break
# Transcribe 결과가 저장된 웹주소
save_json_uri = status['TranscriptionJob']['Transcript']['TranscriptFileUri']
# 웹서버 결과 파이썬으로 불러오기
load = request.urlopen(save_json_uri)
confirm = load.status
rst = load.read().decode('utf-8')
# 문자열을 딕셔너리로 변환 후 결과 가져오기
transcribe_text = literal_eval(rst)['results']['transcripts'][0]['transcript']
print(transcrib_text)
Transcribe Job name은 중복 불가합니다.
즉, 같은 이름으로 Transcirbe를 실행하면 Badquest오류가 발생합니다.
2. AWS Transcribe Job 삭제 코드
등록된 Job을 삭제하는 코드입니다.
# Job 삭제하기
del_transcribe =boto3.client('transcribe', config=my_config)
res = del_transcribe.delete_transcription_job(
TranscriptionJobName = file_nm
)
res['ResponseMetadata']['HTTPStatusCode'] == '200'
3. AWS S3에 업로드된 파일 삭제 코드
s3에 업로드된 파일을 삭제하는 코드입니다.
# 같은 이름으로 s3에 업로드하면 덮어쓰기가 됨
client = boto3.client('s3')
s3_client_delete_object(Bucket=bucket, Key='{}.wav'.format(file_nm)
결론적으로, AWS가 제공하는 SDK for Python 코드를 참고하면 더 많은 기능 활용할 수 있습니다. AWS SDK로 음성을 텍스트로 변환하는 기능은 음성 데이터 처리 및 텍스트 변환에 매우 유용합니다. 이를 활용하여 다양한 응용 프로그램 및 서비스를 개발할 수 있으며, 이를 통해 사용자 경험을 향상시키고 비즈니스에 가치를 더할 수 있습니다.
'취미' 카테고리의 다른 글
[Git] 깃허브 사용법 / 깃허브 시작하기 (0) | 2024.01.24 |
---|---|
[Anaconda] Install Anaconda3, Jupyter notebook with CLI (0) | 2024.01.24 |
[Bokeh] 파이썬 그래프 bokeh - 파이썬 시각화 도구 bokeh 여러개 차트를 한번에 (0) | 2024.01.23 |
[DB] Linux MariaDB 설치하기 (0) | 2024.01.22 |
[DB] Python DB 데이터베이스 연결 (0) | 2024.01.21 |