편집

다음을 통해 공유


텍스트 솔루션에 사용자 지정 음성 배포

Azure AI 서비스
Azure AI Speech
Azure Machine Learning

솔루션 아이디어

이 문서는 솔루션 아이디어입니다. 잠재적인 사용 사례, 대체 서비스, 구현 고려 사항 또는 가격 책정 지침과 같은 추가 정보로 콘텐츠를 확장하려면 GitHub 피드백을 제공하여 알려 주세요.

이 문서는 사용자 지정 음성 텍스트 변환 구현에 설명된 솔루션의 샘플 배포를 제공하는 구현 가이드 및 예 시나리오입니다.

아키텍처

사용자 지정 음성을 텍스트로 구현하기 위한 아키텍처를 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

  1. 사용자 지정 음성 모델을 학습하는 데 사용할 기존 대화 기록을 수집합니다.
  2. 대본이 WebVTT 또는 SRT 형식인 경우 대본의 텍스트 부분만 포함되도록 파일을 정리합니다.
  3. 구두점을 제거하고, 반복되는 단어를 분리하고, 큰 숫자 값을 맞춤법으로 입력하여 텍스트를 정규화합니다. 정리된 여러 대본을 하나로 결합하여 하나의 데이터 세트를 만들 수 있습니다. 마찬가지로 테스트용 데이터 세트를 만듭니다.
  4. 데이터 세트가 준비되면 Speech Studio를 사용하여 업로드합니다. 또는 데이터 세트가 Blob 저장소에 있는 경우 Azure Speech to Text(STT) API 및 Speech CLI를 사용할 수 있습니다. API 및 CLI에서 데이터 세트의 URI를 입력으로 전달하여 모델 학습 및 테스트를 위한 데이터 세트를 만들 수 있습니다.
  5. Speech Studio에서 또는 API나 CLI를 통해 새 데이터 세트를 사용하여 사용자 지정 음성 모델을 학습합니다.
  6. 테스트 데이터 세트에 대해 새로 학습된 모델을 평가합니다.
  7. 사용자 지정 모델의 성능이 품질 기대치를 충족하는 경우 음성 대본에 사용할 수 있도록 게시합니다. 그렇지 않으면 Speech Studio를 사용하여 WER(단어 오류율) 및 특정 오류 세부 정보를 검토하고 학습에 필요한 추가 데이터를 결정합니다.
  8. API 및 CLI를 사용하여 모델 빌드, 평가 및 배포 프로세스를 운영할 수 있습니다.

구성 요소

시나리오 정보

이 문서는 다음 가상 시나리오를 기반으로 합니다.

Contoso, Ltd.는 올림픽 이벤트에 대한 브로드캐스트와 논평을 브로드캐스트하는 브로드캐스트 미디어 회사입니다. 브로드캐스트 계약의 일부로 Contoso는 접근성 및 데이터 마이닝을 위한 이벤트 대본을 제공합니다.

Contoso는 Azure Speech Services를 사용하여 올림픽 이벤트에 대한 실시간 자막 및 오디오 대본을 제공하려고 합니다. Contoso는 다양한 악센트로 말하는 전 세계의 여성 및 남성 해설자를 고용합니다. 또한 각 개별 스포츠에는 대본을 어렵게 만들 수 있는 특정 용어가 있습니다. 이 문서에서는 이 시나리오에 대한 애플리케이션 개발 프로세스(정확한 이벤트 대본을 제공해야 하는 애플리케이션에 대한 자막 제공)에 대해 설명합니다.

Contoso에는 다음과 같은 필수 구성 요소가 이미 있습니다.

  • 이전 올림픽 이벤트에 대해 인간이 생성한 대본. 대본은 다양한 스포츠와 다양한 해설자의 해설을 나타냅니다.
  • Azure Cognitive Service 리소스입니다. Azure Portal에서 만들 수 있습니다.

Custom Speech 기반 애플리케이션 개발

음성 기반 애플리케이션은 Azure Speech SDK를 사용하여 Azure Speech 서비스에 연결해 텍스트 기반 오디오 대본을 생성합니다. Speech Services는 다양한 언어와 두 가지 유창성 모드(대화 및 받아쓰기)를 지원합니다. Custom Voice 기반 애플리케이션을 개발하려면 일반적으로 다음 단계를 완료해야 합니다.

  1. Speech Studio, Azure Speech SDK, 음성 CLI 또는 REST API를 사용하여 음성 문장 및 발화에 대한 대본을 생성합니다.
  2. 생성된 대본을 인간이 생성한 대본과 비교합니다.
  3. 특정 도메인 관련 단어가 잘못 기록된 경우 해당 특정 도메인에 대한 사용자 지정 음성 모델을 만드는 것이 좋습니다.
  4. 사용자 지정 모델을 만들기 위한 다양한 옵션을 검토합니다. 하나 또는 여러 개의 사용자 지정 모델이 더 잘 작동할지 여부를 결정합니다.
  5. 학습 및 테스트 데이터를 수집합니다.
  6. 데이터가 허용 가능한 형식인지 확인합니다.
  7. 모델을 학습, 테스트 및 평가하고 배포합니다.
  8. 대본에 사용자 지정 모델을 사용합니다.
  9. 모델 빌드, 평가 및 배포 프로세스를 운영합니다.

다음 단계를 자세히 살펴보겠습니다.

1. Speech Studio, Azure Speech SDK, 음성 CLI 또는 REST API를 사용하여 음성 문장 및 발화에 대한 대본 생성

Azure Speech는 SDK, CLI 인터페이스REST API를 제공하여 오디오 파일에서 또는 마이크 입력에서 직접 대본을 생성합니다. 콘텐츠가 오디오 파일인 경우 지원되는 형식이어야 합니다. 이 시나리오에서 Contoso는 .avi 파일에 이전 이벤트 녹화(오디오 및 동영상)를 가지고 있습니다. Contoso는 FFmpeg와 같은 도구를 사용하여 동영상 파일에서 오디오를 추출하고 Azure Speech SDK에서 지원하는 형식(예: .wav)으로 저장할 수 있습니다.

다음 코드에서 표준 PCM 오디오 코덱 pcm_s16le은 샘플링 속도가 8Khz인 단일 채널(모노)에서 오디오를 추출하는 데 사용됩니다.

ffmpeg.exe -i INPUT_FILE.avi -acodec pcm_s16le -ac 1 -ar 8000 OUTPUT_FILE.wav

2. 생성된 대본을 인간이 생성한 대본과 비교

비교를 수행하기 위해 Contoso는 여러 스포츠의 해설 오디오를 샘플링하고 Speech Studio를 사용하여 인간이 생성한 대본을 Azure Speech Services에서 전사한 결과와 비교합니다. Contoso 인간이 생성한 대본은 WebVTT 형식입니다. 이러한 대본을 사용하기 위해 Contoso는 이를 정리하고 타임스탬프 정보 없이 정규화된 텍스트가 포함된 간단한 .txt 파일을 생성합니다.

Speech Studio를 사용하여 데이터 세트를 만들고 평가하는 방법에 대한 자세한 내용은 데이터 세트 학습 및 테스트를 참조하세요.

Speech Studio는 인간이 생성한 대본과 비교를 위해 선택한 모델에서 생성된 대본을 병렬 비교합니다. 테스트 결과에는 다음과 같이 모델에 대한 WER이 포함됩니다.

모델 오류율 삽입 대체 삭제
모델 1: 20211030 14.69% 6(2.84%) 22(10.43%) 3(1.42%)
모델 2: Olympics_Skiing_v6 6.16% 3(1.42%) 8(3.79%) 2(0.95%)

WER에 대한 자세한 내용은 단어 오류율 평가를 참조하세요.

이러한 결과에 따르면 사용자 지정 모델(Olympics_Skiing_v6)이 데이터 세트의 베이스 모델(20211030)보다 우수합니다.

삽입삭제 비율은 오디오 파일이 비교적 깨끗하고 백그라운드 노이즈가 적음을 나타냅니다.

3. 특정 도메인별 단어가 잘못 전사된 경우 해당 특정 도메인에 대한 사용자 지정 음성 모델을 만드는 것이 좋습니다.

이전 표의 결과에 따라 베이스 모델 모델 1: 20211030의 경우 단어의 약 10%가 대체됩니다. Speech Studio에서 세부 비교 기능을 사용하여 누락된 도메인별 단어를 식별합니다. 다음 표는 비교의 한 섹션을 보여 줍니다.

인간이 생성한 대본 모델 1 모델 2
올림픽 챔피언은 998 독일의 위대한 카자 압수 94 및 98 이후 내리막으로 돌아 갈 1998년 이후 내리막길로 돌아가는 올림픽 챔피언은 독일이 94번과 98번이라는 큰 캐치를 잡았습니다. 올림픽 챔피언은 998 독일의 위대한 카자 압수 94 및 98 이후 내리막으로 돌아 갈
she has dethroned the olympic champion goggia she has dethroned the olympic champion georgia she has dethroned the olympic champion goggia

모델 1은 운동 선수 "Katia Seizinger" 및 "Goggia"의 이름과 같은 도메인 특정 단어를 인식하지 못합니다. 그러나 사용자 지정 모델이 운동 선수의 이름과 기타 도메인별 단어 및 구가 포함된 데이터로 학습되면 이를 학습하고 인식할 수 있습니다.

4. 사용자 지정 모델을 만들기 위한 다양한 옵션을 검토합니다. 하나 또는 여러 사용자 지정 모델이 더 잘 작동할지 결정

사용자 지정 모델을 빌드하는 다양한 방법을 실험함으로써 Contoso는 언어 및 발음 모델 사용자 지정을 사용하여 더 나은 정확도를 달성할 수 있음을 발견했습니다. (이 가이드의 첫 번째 문서 참조) 또한 Contoso는 사용자 지정 모델 빌드를 위한 음향(원본 오디오) 데이터를 포함할 때 약간의 개선 사항을 언급했습니다. 그러나 이점은 사용자 지정 음향 모델을 유지 관리하고 학습할 가치가 있을 만큼 충분히 중요하지 않았습니다.

Contoso는 각 스포츠에 대해 별도의 사용자 지정 언어 모델(알파인 스키용 모델 1개, 루지용 모델 1개, 스노보드용 모델 1개 등)을 만드는 것이 더 나은 인식 결과를 제공한다는 사실을 발견했습니다. 또한 언어 모델을 보강하기 위해 스포츠 형식에 따라 별도의 음향 모델을 만들 필요가 없다고 언급했습니다.

5. 학습 및 테스트 데이터 수집

사용자 지정 모델 학습에 필요한 데이터 수집에 대한 자세한 내용은 학습 및 테스트 데이터 세트 문서를 참조하세요. Contoso는 다양한 해설자로부터 다양한 올림픽 스포츠에 대한 대본을 수집하고 언어 모델 적응을 사용하여 스포츠 형식당 하나의 모델을 빌드했습니다. 그러나 모든 사용자 지정 모델에 대해 하나의 발음 파일을 사용했습니다(각 스포츠마다 하나씩). 테스트 데이터와 학습 데이터가 별도로 유지되기 때문에 사용자 지정 모델을 빌드한 후 Contoso는 모델 평가를 위해 학습 데이터 세트에 포함되지 않은 대본이 있는 이벤트 오디오를 사용했습니다.

6. 데이터가 허용 가능한 형식인지 확인

학습 및 테스트 데이터 세트에 설명된 대로 사용자 지정 모델을 만들거나 모델을 테스트하는 데 사용되는 데이터 세트는 특정 형식이어야 합니다. Contoso의 데이터는 WebVTT 파일에 있습니다. 언어 모델 적응을 위해 정규화된 텍스트를 포함하는 텍스트 파일을 만드는 몇 가지 간단한 도구를 만들었습니다.

7. 모델 학습, 테스트, 평가 및 배포

학습된 모델을 추가로 테스트하고 평가하기 위해 새로운 이벤트 기록이 사용됩니다. 모델을 미세 조정하려면 몇 번의 테스트 및 평가 반복이 필요할 수 있습니다. 마지막으로 모델에서 허용 가능한 오류율이 있는 대본을 생성하면 SDK에서 사용할 수 있도록 배포(게시)됩니다.

8. 대본에 사용자 지정 모델 사용

사용자 지정 모델이 배포된 후 다음 C# 코드를 사용하여 대본을 위해 SDK에서 모델을 사용할 수 있습니다.

String endpoint = "Endpoint ID from Speech Studio";
string locale = "en-US";
SpeechConfig config = SpeechConfig.FromSubscription(subscriptionKey: speechKey, region: region);
SourceLanguageConfig sourceLanguageConfig = SourceLanguageConfig.FromLanguage(locale, endPoint);
recognizer = new SpeechRecognizer(config, sourceLanguageConfig, audioInput);

코드에 대한 메모:

  • endpoint는 7단계에서 배포된 사용자 지정 모델의 엔드포인트 ID입니다.
  • subscriptionKey Azure region AI 서비스 구독 키 및 지역입니다. Azure AI 서비스 리소스가 만들어진 리소스 그룹으로 이동하여 해당 키를 확인하여 Azure Portal에서 이러한 값을 가져올 수 있습니다.

9. 모델 빌드, 평가 및 배포 프로세스 운영

사용자 지정 모델이 게시된 후 정기적으로 평가하고 새 어휘가 추가되면 업데이트해야 합니다. 비즈니스가 발전할 수 있으며 더 많은 도메인에 대한 적용 범위를 늘리기 위해 더 많은 사용자 지정 모델이 필요할 수 있습니다. 또한 Azure Speech 팀은 더 많은 데이터에 대해 학습된 새로운 베이스 모델을 릴리스합니다. Automation을 통해 이러한 변화를 따라잡을 수 있습니다. 이 문서의 다음 섹션에서는 이전 단계를 자동화하는 방법에 대해 자세히 설명합니다.

시나리오 배포

스크립팅을 사용하여 학습 및 테스트용 데이터 세트를 만들고, 모델을 빌드 및 평가하고, 필요에 따라 새 모델을 게시하는 전체 프로세스를 간소화하고 자동화하는 방법에 대한 자세한 내용은 GitHub의 Custom-speech-STT를 참조하세요.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계