사용자 지정 음성 모델 학습

이 문서에서는 Microsoft 기본 모델에서 인식 정확도를 개선시키기 위해 사용자 지정 모델을 학습시키는 방법을 알아봅니다. 새 기본 모델이 릴리스되더라도 사용자 지정 음성 모델의 음성 인식 정확도와 품질이 일관되게 유지됩니다.

참고 항목

사용자 지정 음성 모델 사용량 및 엔드포인트 호스팅 비용을 지불합니다. 기본 모델이 2023년 10월 1일 이후에 만들어진 경우, Custom Speech 모델 학습에 대한 요금도 청구됩니다. 기본 모델이 2023년 10월 이전에 만들어진 경우에는 학습에 대한 요금이 청구되지 않습니다. 자세한 내용은 Azure AI 음성 가격 책정음성 텍스트 변환 3.2 마이그레이션 가이드의 적용 요금 섹션을 참조하세요.

모델 학습은 일반적으로 반복적인 프로세스입니다. 먼저 새 모델의 시작점이 되는 베이스 모델을 선택합니다. 텍스트 및 오디오를 포함할 수 있는 데이터 세트를 사용하여 모델을 학습시킨 다음, 테스트합니다. 인식 품질 또는 정확도가 요구 사항을 충족하지 않는 경우 추가 또는 수정된 학습 데이터를 사용하여 새 모델을 만든 다음, 다시 테스트할 수 있습니다.

학습시킨 후 제한된 시간 동안 사용자 지정 모델을 사용할 수 있습니다. 개선된 정확도와 품질을 활용하려면 최신 베이스 모델에서 사용자 지정 모델을 주기적으로 다시 만들고 조정해야 합니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

Important

오디오 데이터를 사용하여 사용자 지정 모델을 학습하는 경우 오디오 데이터 학습을 위한 전용 하드웨어가 있는 음성 리소스 지역을 선택합니다. 모델을 학습시킨 후에 필요에 따라 다른 지역에 있는 음성 리소스에 복사할 수 있습니다.

사용자 지정 음성 학습을 위한 전용 하드웨어가 있는 지역에서 Speech Service는 최대 20시간의 오디오 학습 데이터를 사용하고 하루에 약 10시간의 데이터를 처리할 수 있습니다. 다른 지역에서는 Speech Services가 최대 8시간의 오디오 데이터를 사용하고 하루에 약 1시간의 데이터를 처리할 수 있습니다. 자세한 내용은 지역 표의 각주를 참조하세요.

모델 만들기

학습 데이터 세트를 업로드한 후 이러한 지침에 따라 모델에 대한 학습을 시작합니다.

  1. Speech Studio에 로그인합니다.

  2. 사용자 지정 음성> 내 프로젝트 이름 >사용자 지정 모델 학습을 선택합니다.

  3. 새 모델 학습을 선택합니다.

  4. 기준 모델 선택 페이지에서 기준 모델을 선택한 후 다음을 선택합니다. 확실하지 않은 경우 목록 상단에서 최신 모델을 선택합니다. 기본 모델의 이름은 YYYYMMDD 형식으로 릴리스된 날짜에 해당합니다. 기본 모델의 사용자 지정 기능은 Speech Studio에서 모델 이름 뒤의 괄호로 나열됩니다.

    Important

    적응 만료 날짜를 기록해 둡니다. 학습에 베이스 모델을 사용할 수 있는 마지막 날짜입니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

  5. 데이터 선택 페이지에서 학습에 사용할 데이터 세트를 하나 이상 선택합니다. 사용 가능한 데이터 세트가 없으면 설정을 취소한 다음 음성 데이터 세트 메뉴로 이동하여 데이터 세트를 업로드합니다.

  6. 사용자 지정 모델의 이름과 설명을 입력하고 다음을 선택합니다.

  7. 선택적으로 다음 단계에서 테스트 추가 확인란을 선택합니다. 이 단계를 건너뛰면 나중에 동일한 테스트를 실행할 수 있습니다. 자세한 내용은 인식 품질 테스트정량적으로 모델 테스트를 참조하세요.

  8. 저장 후 닫기를 선택하여 사용자 지정 모델 빌드를 시작합니다.

  9. 사용자 지정 모델 학습 페이지로 돌아갑니다.

    Important

    만료 날짜를 기록해 둡니다. 음성 인식을 위해 사용자 지정 모델을 사용할 수 있는 마지막 날짜입니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

학습을 위한 데이터 세트가 있는 모델을 만들려면 spx csr model create 명령을 사용합니다. 다음 지침에 따라 요청 매개 변수를 생성합니다.

  • project 매개 변수를 기존 프로젝트의 ID로 설정합니다. Speech Studio에서 모델을 보고 관리할 수 있도록 하기 위해 이 매개 변수가 권장됩니다. spx csr project list 명령을 실행하여 사용 가능한 프로젝트를 가져올 수 있습니다.
  • 필수 dataset 매개 변수를 학습에 사용할 데이터 세트의 ID로 설정합니다. 여러 데이터 세트를 지정하려면 datasets(복수형) 매개 변수를 설정하고 ID를 세미콜론으로 구분합니다.
  • 필수 language 매개 변수를 설정합니다. 데이터 세트 로캘은 프로젝트의 로캘과 일치해야 합니다. 로캘은 나중에 변경할 수 없습니다. Speech CLI language 매개 변수는 JSON 요청 및 응답의 locale 속성에 해당합니다.
  • 필수 name 매개 변수를 설정합니다. 이 매개 변수는 Speech Studio에 표시되는 이름입니다. Speech CLI name 매개 변수는 JSON 요청 및 응답의 displayName 속성에 해당합니다.
  • 필요에 따라 base 속성을 설정할 수 있습니다. 예: --base 1aae1070-7972-47e9-a977-87e3b05c457d base을 지정하지 않으면 로캘의 기본 모델이 사용됩니다. Speech CLI base 매개 변수는 JSON 요청 및 응답의 baseModel 속성에 해당합니다.

다음은 학습을 위한 데이터 세트를 사용하여 모델을 만드는 Speech CLI 명령의 예입니다.

spx csr model create --api-version v3.1 --project YourProjectId --name "My Model" --description "My Model Description" --dataset YourDatasetId --language "en-US"

참고 항목

이 예제에서는 base이 설정되지 않으므로 로캘의 기본 모델이 사용됩니다. 기본 모델 URI가 응답에 반환됩니다.

응답 본문은 다음 형식으로 표시되어야 합니다.

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/86c4ebd7-d70d-4f67-9ccc-84609504ffc7",
  "baseModel": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "datasets": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/69e46263-ab10-4ab4-abbe-62e370104d95"
    }
  ],
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/86c4ebd7-d70d-4f67-9ccc-84609504ffc7/manifest",
    "copyTo": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/86c4ebd7-d70d-4f67-9ccc-84609504ffc7:copyto"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/5d25e60a-7f4a-4816-afd9-783bb8daccfc"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2023-01-15T00:00:00Z",
      "transcriptionDateTime": "2024-07-15T00:00:00Z"
    }
  },
  "lastActionDateTime": "2022-05-21T13:21:01Z",
  "status": "NotStarted",
  "createdDateTime": "2022-05-21T13:21:01Z",
  "locale": "en-US",
  "displayName": "My Model",
  "description": "My Model Description"
}

Important

adaptationDateTime 속성의 날짜를 기록해 둡니다. 학습에 베이스 모델을 사용할 수 있는 마지막 날짜입니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

transcriptionDateTime 속성의 날짜를 기록해 둡니다. 음성 인식을 위해 사용자 지정 모델을 사용할 수 있는 마지막 날짜입니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

응답 본문의 최상위 self 속성은 모델의 URI입니다. 이 URI를 사용하여 모델의 프로젝트, 매니페스트 및 사용 중단 날짜에 대한 세부 정보를 가져옵니다. 또한 이 URI를 사용하여 모델을 업데이트하거나 삭제합니다.

모델에 대한 Speech CLI 도움말을 보려면 다음 명령을 실행합니다.

spx help csr model

학습을 위한 데이터 세트가 있는 모델을 만들려면 음성 텍스트 변환 REST APIModels_Create 작업을 사용합니다. 다음 지침에 따라 요청 본문을 생성합니다.

  • project 속성을 기존 프로젝트의 URI로 설정합니다. Speech Studio에서 모델을 보고 관리할 수 있도록 하기 위해 이 속성이 권장됩니다. Projects_List 요청을 수행하여 사용 가능한 프로젝트를 가져올 수 있습니다.
  • 필수 datasets 속성을 학습에 사용할 데이터 세트의 URI로 설정합니다.
  • 필수 locale 속성을 설정합니다. 모델 로캘은 프로젝트 및 기본 모델의 로캘과 일치해야 합니다. 로캘은 나중에 변경할 수 없습니다.
  • 필수 displayName 속성을 설정합니다. 이 속성은 Speech Studio에 표시되는 이름입니다.
  • 필요에 따라 baseModel 속성을 설정할 수 있습니다. 예: "baseModel": {"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"} baseModel을 지정하지 않으면 로캘의 기본 모델이 사용됩니다.

다음 예제와 같이 URI를 사용하여 HTTP POST 요청을 만듭니다. YourSubscriptionKey를 Speech 리소스 키로 바꾸고, YourServiceRegion을 Speech 리소스 영역으로 바꾸고, 앞에서 설명한 대로 요청 본문 속성을 설정합니다.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/5d25e60a-7f4a-4816-afd9-783bb8daccfc"
  },
  "displayName": "My Model",
  "description": "My Model Description",
  "baseModel": null,
  "datasets": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/69e46263-ab10-4ab4-abbe-62e370104d95"
    }
  ],
  "locale": "en-US"
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/models"

참고 항목

이 예제에서는 baseModel이 설정되지 않으므로 로캘의 기본 모델이 사용됩니다. 기본 모델 URI가 응답에 반환됩니다.

응답 본문은 다음 형식으로 표시되어야 합니다.

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/86c4ebd7-d70d-4f67-9ccc-84609504ffc7",
  "baseModel": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "datasets": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/datasets/69e46263-ab10-4ab4-abbe-62e370104d95"
    }
  ],
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/86c4ebd7-d70d-4f67-9ccc-84609504ffc7/manifest",
    "copyTo": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/86c4ebd7-d70d-4f67-9ccc-84609504ffc7:copyto"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/5d25e60a-7f4a-4816-afd9-783bb8daccfc"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2023-01-15T00:00:00Z",
      "transcriptionDateTime": "2024-07-15T00:00:00Z"
    }
  },
  "lastActionDateTime": "2022-05-21T13:21:01Z",
  "status": "NotStarted",
  "createdDateTime": "2022-05-21T13:21:01Z",
  "locale": "en-US",
  "displayName": "My Model",
  "description": "My Model Description"
}

Important

adaptationDateTime 속성의 날짜를 기록해 둡니다. 학습에 베이스 모델을 사용할 수 있는 마지막 날짜입니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

transcriptionDateTime 속성의 날짜를 기록해 둡니다. 음성 인식을 위해 사용자 지정 모델을 사용할 수 있는 마지막 날짜입니다. 자세한 내용은 모델 및 엔드포인트 수명 주기를 참조하세요.

응답 본문의 최상위 self 속성은 모델의 URI입니다. 이 URI를 사용하여 모델의 프로젝트, 매니페스트 및 사용 중단 날짜에 대한 세부 정보를 가져옵니다. 또한 이 URI를 사용하여 모델을 업데이트하거나 삭제합니다.

모델 복사

동일한 로캘을 사용하는 다른 프로젝트에 모델을 복사할 수 있습니다. 예를 들어 학습을 위한 전용 하드웨어가 있는 지역의 오디오 데이터를 사용하여 모델을 학습한 후 필요에 따라 다른 지역의 음성 리소스에 복사할 수 있습니다.

다음 지침에 따라 모델을 다른 지역의 프로젝트에 복사합니다.

  1. Speech Studio에 로그인합니다.
  2. 사용자 지정 음성> 내 프로젝트 이름 >사용자 지정 모델 학습을 선택합니다.
  3. 복사 대상을 선택합니다.
  4. 음성 모델 복사 페이지에서 모델을 복사할 대상 지역을 선택합니다. Speech Studio에 적용된 구 목록의 스크린샷
  5. 대상 지역에서 음성 리소스를 선택하거나 새 음성 리소스를 만듭니다.
  6. 모델을 복사할 프로젝트를 선택하거나 새 프로젝트를 만듭니다.
  7. 복사를 선택합니다.

모델이 성공적으로 복사되면 알림이 표시되고 대상 프로젝트에서 볼 수 있습니다.

Speech CLI에서는 모델을 다른 지역의 프로젝트에 직접 복사할 수 없습니다. Speech Studio 또는 음성 텍스트 변환 REST API를 사용하여 모델을 다른 지역의 프로젝트에 복사할 수 있습니다.

모델을 다른 음성 리소스에 복사하려면 음성 텍스트 변환 REST APIModels_CopyTo 작업을 사용합니다. 다음 지침에 따라 요청 본문을 생성합니다.

  • 필수 targetSubscriptionKey 속성을 대상 음성 리소스의 키로 설정합니다.

다음 예제와 같이 URI를 사용하여 HTTP POST 요청을 만듭니다. 복사하려는 모델의 지역 및 URI를 사용합니다. YourModelId를 모델 ID로 바꾸고, YourSubscriptionKey를 음성 리소스 키로 바꾸고, YourServiceRegion을 음성 리소스 영역으로 바꾸고, 앞에서 설명한 대로 요청 본문 속성을 설정합니다.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "targetSubscriptionKey": "ModelDestinationSpeechResourceKey"
} '  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/models/YourModelId:copyto"

참고 항목

요청 본문의 targetSubscriptionKey 속성에만 대상 음성 리소스에 대한 정보가 있습니다.

응답 본문은 다음 형식으로 표시되어야 합니다.

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/9df35ddb-edf9-4e91-8d1a-576d09aabdae",
  "baseModel": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/eb5450a7-3ca2-461a-b2d7-ddbb3ad96540"
  },
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/9df35ddb-edf9-4e91-8d1a-576d09aabdae/manifest",
    "copyTo": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/9df35ddb-edf9-4e91-8d1a-576d09aabdae:copyto"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2023-01-15T00:00:00Z",
      "transcriptionDateTime": "2024-07-15T00:00:00Z"
    }
  },
  "lastActionDateTime": "2022-05-22T23:15:27Z",
  "status": "NotStarted",
  "createdDateTime": "2022-05-22T23:15:27Z",
  "locale": "en-US",
  "displayName": "My Model",
  "description": "My Model Description",
  "customProperties": {
    "PortalAPIVersion": "3",
    "Purpose": "",
    "VadKind": "None",
    "ModelClass": "None",
    "UsesHalide": "False",
    "IsDynamicGrammarSupported": "False"
  }
}

모델 연결

모델은 다른 프로젝트에 연결되지 않고 Speech CLI 또는 REST API를 사용하여 한 프로젝트에서 복사되었을 수 있습니다. 모델을 연결하면 프로젝트에 대한 참조를 사용하여 모델이 업데이트됩니다.

Speech Studio에서 메시지가 표시되면 연결 단추를 선택하여 연결할 수 있습니다.

현재 프로젝트에 연결할 수 있는 모델을 보여 주는 연결 학습 페이지 스크린샷

모델을 프로젝트에 연결하려면 spx csr model update 명령을 사용합니다. 다음 지침에 따라 요청 매개 변수를 생성합니다.

  • project 매개 변수를 기존 프로젝트의 URI로 설정합니다. Speech Studio에서 모델을 보고 관리할 수 있도록 하기 위해 이 매개 변수가 권장됩니다. spx csr project list 명령을 실행하여 사용 가능한 프로젝트를 가져올 수 있습니다.
  • 필수 modelId 매개 변수를 프로젝트에 연결하려는 모델의 ID로 설정합니다.

다음은 모델을 프로젝트에 연결하는 Speech CLI 명령의 예입니다.

spx csr model update --api-version v3.1 --model YourModelId --project YourProjectId

응답 본문은 다음 형식으로 표시되어야 합니다.

{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/e6ffdefd-9517-45a9-a89c-7b5028ed0e56"
  },
}

모델에 대한 Speech CLI 도움말을 보려면 다음 명령을 실행합니다.

spx help csr model

새 모델을 모델이 복사된 음성 리소스 프로젝트에 연결하려면 음성 텍스트 변환 REST APIModels_Update 작업을 사용합니다. 다음 지침에 따라 요청 본문을 생성합니다.

  • 필수 project 속성을 기존 프로젝트의 URI로 설정합니다. Speech Studio에서 모델을 보고 관리할 수 있도록 하기 위해 이 속성이 권장됩니다. Projects_List 요청을 수행하여 사용 가능한 프로젝트를 가져올 수 있습니다.

다음 예제와 같이 URI를 사용하여 HTTP PATCH 요청을 만듭니다. 새 모델의 URI를 사용합니다. Models_CopyTo 응답 본문의 self 속성에서 새 모델 ID를 가져올 수 있습니다. YourSubscriptionKey를 Speech 리소스 키로 바꾸고, YourServiceRegion을 Speech 리소스 영역으로 바꾸고, 앞에서 설명한 대로 요청 본문 속성을 설정합니다.

curl -v -X PATCH -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/e6ffdefd-9517-45a9-a89c-7b5028ed0e56"
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/models"

응답 본문은 다음 형식으로 표시되어야 합니다.

{
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/e6ffdefd-9517-45a9-a89c-7b5028ed0e56"
  },
}

다음 단계