AWS Transcribe를 활용하여 번거로운 의사록의 자동 기록을 구축하다
12004 단어 S3lambdaTranscribeAWS
회의 우울했죠?그리고 가속하듯'이 무질서한 의사록을 만들까'라는 생각에 우울함을 넘어 절망감을 느꼈다.
그럼 공부하면서 AWS Transcribe로 스스로 자동의사록을 구축하려고 했는데 이번에 해슨이 됐네요.
도대체 학습용이 강하고 기밀성을 어느 정도 확보해야 할지 고려하지 않았기 때문에 실제 회의에서 사용할 수 없다고 생각합니다.하지만 무료 애플리케이션을 이용해 모르는 서버에 올리면 람다의 서버 댓글을 사용하는 것이 안전한가?어느 정도 사람에 따라 비판을 받아들이는 인식으로 구축되기 시작한다.
참고 자료
다양한 참조 URL
AWS
AWS Harson - 음성 기록
AWS 문서 - Lambda자습서: Amazon S3을 사용하여 Lambda 함수 트리거 호출
Boto3
Boto 3 문서 - Transcribe Service starttranscription_job
참고 문장
S3 → Lambda → Transcribe → S3에 전송 파이프 만들기
【Amazon Connect】 콘택트렌즈 센터에서 사용 가능한가요? Amazon Transcribe로 대화를 텍스트화하십시오!
구성도
손수
1: 아마존 S3통(입출력) 2개 만들기
1.1 Amazon S3로 마이그레이션하여 "캔 만들기"누르기
1.2 세그먼트 이름을 입력하고 "세그먼트 만들기"를 누릅니다.
1.3 제작통(사운드 파일 입력용)
1.41.1-1.2 같은 순서로 통을 만든다(Amazon Transcribe에서 소리를 텍스트화한 후 출력하는 데 사용되는 파일)
2: AWS Lambda에서 S3 세그먼트를 가져오는 함수 만들기
2.1 AWS Lambda로 마이그레이션하고 함수 만들기
2.2'함수 생성'에서'설계도 사용'을 선택하고's3-get-object-pythhon'을 선택한 다음 오른쪽 아래에 있는'설정'을 눌러라
2.3 프로파일에 함수 이름, Lambda에 부여된 역할 이름 입력
2.4 Lambda의 트리거를 시작하고 S3의 세그먼트 이름을 입력합니다(접미사로 사용할 사운드 파일이라도 ".mp3"이 아니면 동작하지 않습니다).
※ 촬영을 잊고'2.1~2.4'단계를 다시 수행하는 중 발생한 오류
잘못된 문장
Lambda 関数「Transcribe_function」は正常に作成されましたが、トリガーの作成時にエラー Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: XXXXXXXXXX; S3 Extended Request ID: XXXXXXXXXX Proxy: null) が発生しました。
참조AWS Lambda 함수의 "Configuration is am biguory defined" 오류 대응 오류 처리2.5 Lambda 함수 설정 확인
python 코드가 자동으로 생성되었는지 확인
3: Lambda 함수에서 Amazon Transcribe 작업 수행
3.12에서 만든 Lambda 함수를 누르면 '설정' 을 선택하고 '접근 권한' 을 누르면 '편집' 을 실행합니다
3.2 2.3 에서 만든 캐릭터를 눌러 IAM으로 이동
3.3 AmazonS3 Full Access와 Amazon Transcribe Full Access 두 가지 정책 부여
※ AmazonS3 FlullAccess: S3 통에 담기 위해 부여
※ Amazon Transcribe Full Access: Amazon Transcribe를 호출하기 위해 부여
3.4 Lambda 함수의 코드 수정
상기 빨간 상자의 코드 대응 부분
lambda_function.py
import json
import urllib.parse
import boto3
import datetime
s3 = boto3.client('s3')
transcribe = boto3.client('transcribe')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
try:
transcribe.start_transcription_job(
TranscriptionJobName= datetime.datetime.now().strftime('%Y%m%d%H%M%S') + '_Transcription',
LanguageCode='ja-JP',
Media={
'MediaFileUri': 'https://s3.ap-northeast-1.amazonaws.com/' + bucket + '/' + key
},
OutputBucketName='transcription-20220205'
)
except Exception as e:
print(e)
print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
raise e
참고 자료Boto 3 문서 - Transcribe Service starttranscription_job
사용할 서비스 이름 설명
AWS Transcribe를 참조하여 개별 수정 기술(빨간색 상자 부분)
※ 파일명 사용 일자
import datetime
3.5 추출 Lambda 함수이렇게 구축하면 끝이에요.
4: 행동의 확인
4.1 S3 배럴'transribe-20220204'에'.mp3'형식의 사운드 파일 저장
4.2S3통 "transcription-20220205"에 ".json"형식으로 사운드를 텍스트화한 파일이 저장됨
4.3 S3에서 다운로드한 음성화된 시나리오와.json 비교
최후
물론 저도 처음부터 완벽하게 썼을 줄은 몰랐는데 이 정도(피부 느낌 6할 정도)까지 보충하면 의사록 작성도 예전보다 훨씬 쉬워질 거예요.이번에 S3에 저장된 파일을'.mp3'에 모아 사운드 파일 같은 것을 저장하면 AWS 측은 이를'.mp3'형태로 변환할 수 있고, 이런 구조도 구축할 수 있어 확장성도 높아진다.
게다가 의사록은 이번에도 한 명만 말했으니 여러 명의 상황을 고려할 필요가 있다.
그건 다음 주 구조 등에서 활용하면 좋을 것 같아요.
Reference
이 문제에 관하여(AWS Transcribe를 활용하여 번거로운 의사록의 자동 기록을 구축하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/i3no29/items/f690e8152f8405b81129텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)