Amazon Web Services 한국 블로그

Amazon Transcribe, 자동 언어 식별 기능 출시 (서울 리전 포함)

2017년에 AWS에서는 개발자가 애플리케이션에 음성-문자 변환 기능을 쉽게 추가할 수 있는 자동 음성 인식(ASR) 서비스인 Amazon Transcribe를 출시했습니다. 이후 지원 언어를 더 추가하여 전 세계 고객은 6개 언어에 대한 실시간 음성 인식을 포함하여 총 31개 언어로 오디오 녹음을 인식 및 텍스트 변환할 수 있게 되었습니다.

Amazon Transcribe의 보편적인 용도는 고객 통화 내용을 인식하여 텍스트로 변환하는 것입니다. 이를 통해 기업에서는 자연어 처리 기술을 사용하여 음성 인식된 텍스트를 분석함으로써 고객 정서를 감지하거나 가장 흔한 전화 문의 사유를 파악할 수 있습니다. 여러 공식 언어를 사용하는 국가 또는 여러 리전에서 비즈니스를 운영하는 경우, 오디오 파일에 여러 개의 언어가 포함될 수 있습니다. 이 경우, 파일에 수동으로 적절한 언어를 태그해야 음성 인식 작업을 수행할 수 있습니다. 이렇게 하려면 보통 다국어를 구사할 줄 아는 팀을 꾸려야 하는데, 그러려면 추가 비용이 들고 오디오 파일 처리가 늦어지게 됩니다.

미디어 또는 엔터테인먼트 업계의 경우, Amazon Transcribe가 주로 미디어 콘텐츠를 검색 및 액세스 가능한 텍스트 파일로 변환하는 데 사용됩니다. 자막 또는 음성 인식 자료를 만들거나, 콘텐츠를 조정하는 등의 사용 사례가 대표적입니다. Amazon Transcribe는 운영 팀에서 품질 관리 업무를 처리하는 데도 쓰입니다. 예를 들어 추출된 텍스트에 있는 타임스탬프를 참고하여 오디오와 비디오 속도가 맞는지 확인할 수 있습니다. 그러나 비디오에서 쓰인 주 언어가 올바르게 레이블링되었는지 확인하여 비디오가 잘못된 언어로 스트리밍되지 않도록 방지하는 등의 다른 문제는 간단하게 해결할 수 없습니다.

오늘, Amazon Transcribe가 이제 오디오 녹음에서 주로 쓰인 언어를 자동으로 식별할 수 있게 되었다는 기쁜 소식을 알려드립니다. 이 기능을 사용하면 태그를 직접 지정할 필요가 없으므로 보다 효율적인 음성 인식 워크플로를 구축할 수 있게 됩니다. 위에서 언급한 예제 외에도, 이제 Amazon Transcribe를 사용하여 음성 메일, 회의 등 모든 형식의 녹음된 대화를 자동으로 인식하여 음성 인식할 수 있습니다.

자동 언어 식별 소개
Amazon Transcribe는 최소 30초 길이의 오디오 파일만 있으면 태그를 수동으로 지정하는 데 시간과 리소스를 낭비할 필요 없이 음성 언어 인식을 효율적으로 생성할 수 있습니다. 지원되는 모든 31개 언어에서 배치 트랜스크립션 모드를 사용하면 주로 쓰는 언어를 자동으로 식별합니다. 샘플링 기술 덕분에 언어 식별 작업은 몇 초에 걸쳐 음성 인식 자체에서보다 훨씬 빠르게 이루어집니다.

이미 음성 인식에 Amazon Transcribe를 사용 중인 경우, StartTranscriptionJob API에서 이 기능을 활성화하기만 하면 됩니다. 음성 인식 작업이 완료되기 전에 GetTranscriptionJob API의 응답을 통해 오디오 녹음의 주로 쓰는 언어와 더불어 신뢰도 점수(0~1)도 알 수 있습니다. 트랜스크립트에는 상위 5개 언어가 목록으로 나열되며 각각의 신뢰도 점수도 표시됩니다.

물론 Amazon Transcribe를 자동 언어 식별 기능에만 사용하고자 하는 경우, API 응답만 처리하고 트랜스크립트를 무시하면 됩니다. 이 경우, 비용을 최소화하기 위해 30~45초의 짧은 오디오 녹음을 고수해야 합니다.

또한 StartTranscriptionJob API에 언어 목록을 전달하여 Amazon Transcribe가 식별하려는 언어를 제한할 수 있습니다. 예를 들어 회사 콜센터에서 영어, 스페인어와 프랑스어로만 전화 문의를 접수하는 경우, 이 목록에서 식별 가능한 언어를 제한하면 언어 식별 정확도가 더 높아집니다.

이제 이 최신 기능의 사용법이 얼마나 쉬운지 직접 보여드리겠습니다!

Amazon Transcribe로 주로 쓰는 언어 감지
우선, 품질이 좋은 샘플부터 사용해 봅시다. 2019년 파리에서 열린 AWS Summit의 발표 세션 중 한 오디오 트랙을 사용하겠습니다. youtube-dl 도구를 사용하여 간편하게 다운로드할 수 있습니다.

$ youtube-dl -f bestaudio https://www.youtube.com/watch?v=AFN5jaTurfA
$ mv AWS\ \&\ EarthCube\ _\ Deep\ learning\ démarrer\ avec\ MXNet\ et\ Tensorflow\ en\ 10\ minutes-AFN5jaTurfA.m4a video.m4a

ffmpeg를 사용하여 오디오 클립을 1분 길이로 줄입니다.

$ ffmpeg -i video.m4a -ss 00:00:00.00 -t 00:01:00.00 video-1mn.m4a

그런 다음, 이 클립을 Amazon Simple Storage Service(S3) 버킷에 업로드합니다.

$ aws s3 cp video-1mn.m4a s3://your-bucket-name/

다음으로, 언어 식별 기능을 활성화한 상태에서 AWS CLI를 사용하여 이 오디오 클립에서 트랜스크립션 작업을 실행합니다.

$ awscli transcribe start-transcription-job --transcription-job-name video-test --identify-language --media MediaFileUri=s3://your-bucket-name/video-1mn.m4a

몇 초만 기다렸다가 작업 상태를 확인합니다. Amazon CloudWatch 이벤트를 사용하여 언어 식별이 완료되면 알림을 받을 수도 있습니다.

$ awscli transcribe get-transcription-job --transcription-job-name video-test
{
    "TranscriptionJob": {
        "TranscriptionJobName": "video-test",
        "TranscriptionJobStatus": "IN_PROGRESS",
        "LanguageCode": "fr-FR",
        "MediaSampleRateHertz": 44100,
        "MediaFormat": "mp4",
        "Media": {
        "MediaFileUri": "s3://your-bucket-name/video-1mn.m4a"
    },
    "Transcript": {},
    "StartTime": 1593704323.312,
"CreationTime": 1593704323.287,

    "Settings": {
        "ChannelIdentification": false,
        "ShowAlternatives": false
    },
    "IdentifyLanguage": true,
    "IdentifiedLanguageScore": 0.915885329246521
    }
}

출력에 강조 표시된 것과 같이, 91.59%의 높은 신뢰도 점수와 함께 몇 초 안에 주로 쓰는 언어가 올바르게 감지되었습니다. 몇 초가 더 지난 뒤, 트랜스크립션 작업이 완료됩니다. 같은 CLI 호출을 실행하면 이 트랜스크립션에 대한 링크를 회수할 수 있으며, 여기에는 해당 오디오 클립에 쓰인 상위 5개 언어도 포함되어 있습니다(점수를 내림차순으로 정렬).

"language_identification":[{"score":"0.9159","code":"fr-FR"},{"score":"0.0839","code":"fr-CA"},{"score":"0.0001","code":"en-GB"},{"score":"0.0001","code":"pt-PT"},{"score":"0.0001","code":"de-CH"}]

프랑스어와 캐나다 프랑스어를 합하면 100%에 달하는 점수가 나온 셈이므로, 이 클립은 틀림없이 프랑스어입니다. 경우에 따라 이 정도의 상세한 수준은 원치 않을 수도 있습니다. 다음 예제에서는 감지되는 언어 목록을 제한하는 방법을 확인할 수 있습니다.

감지된 언어 목록 제한
고객 통화 변환은 Amazon Transcribe의 보편적인 사용 사례입니다. 이것은 제가 Amazon Transcribe 페이지의 프랑스어 버전에서 한 단락을 소리 내어 읽은 40초 길이의 오디오 클립(WAV, 8KHz, 16비트 해상도)입니다. 들으신 것처럼 음질이 별로 좋지 않은 데다 배경 음악(바흐 작품)까지 더했습니다.

다시 한번 이 클립을 S3 버킷에 업로드한 다음, AWS CLI를 사용해 트랜스크립션합니다. 이번에는 언어 목록을 프랑스어, 스페인어, 독일어, 미국 영어와 영국 영어로 제한했습니다.

$ aws s3 cp speech-8k.wav s3://your-bucket-name/
$ awscli transcribe start-transcription-job --transcription-job-name speech-8k-test --identify-language --media MediaFileUri=s3://your-bucket-name/speech-8k.wav --language-options fr-FR es-ES de-DE en-US en-GB

몇 초 후 작업 상태를 확인해보았습니다.

$ awscli transcribe get-transcription-job --transcription-job-name speech-8k-test
{
    "TranscriptionJob": {
    "TranscriptionJobName": "speech-8k-test",
    "TranscriptionJobStatus": "IN_PROGRESS",
    "LanguageCode": "fr-FR",
    "MediaSampleRateHertz": 8000,
    "MediaFormat": "wav",
    "Media": {
        "MediaFileUri": "s3://your-bucket-name/speech-8k.wav"
    },
    "Transcript": {},
    "StartTime": 1593705151.446,
"CreationTime": 1593705151.423,

    "Settings": {
        "ChannelIdentification": false,
        "ShowAlternatives": false
    },
    "IdentifyLanguage": true,
    "LanguageOptions": [
        "fr-FR","es-ES","de-DE","en-US","en-GB"
    ],
    "IdentifiedLanguageScore": 0.9995
    }
}

출력에서 강조 표시된 것과 같이, 음질이 매우 나쁨에도 불구하고 주로 쓰는 언어가 매우 높은 신뢰도 점수로 올바로 감지되었습니다. 언어 목록을 제한하면 확실히 도움이 되므로 가능한 이 기능을 사용하시는 것이 좋습니다.

시작하기
현재 자동 언어 식별 기능을 사용할 수 있는 리전은 다음과 같습니다.

  • 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(캘리포니아 북부), 미국 서부(오레곤), AWS GovCloud(미국 서부).
  • 캐나다(중부).
  • 남아메리카(상파울루).
  • EU(아일랜드), EU(런던), EU(파리), EU(프랑크푸르트).
  • 중동(바레인).
  • 아시아 태평양(홍콩), 아시아 태평양(뭄바이), 아시아 태평양(도쿄), 아시아 태평양(서울), 아시아 태평양(싱가포르), 아시아 태평양(시드니).

기존 요금 외에 추가 요금을 부과하지 않습니다. 이 기능을 사용해보시고 AWS Support 담당자 또는 AWS 포럼을 통해 Amazon Transcribe에 대한 피드백을 보내주세요.

– Julien