음성 적응으로 텍스트 변환 결과 향상

개요

음성 적응 기능을 사용하면 Speech-to-Text에서 특정 단어나 구문이 제안된 다른 단어나 구문보다 더 자주 인식되도록 할 수 있습니다. 예를 들어 'weather'라는 단어가 자주 등장하는 오디오 데이터가 있고 Speech-to-Text가 단어 'weather'를 발견할 때 이 단어를 'whether'보다는 'weather'로 더 많이 변환하도록 하려고 합니다. 이 경우 음성 적응을 사용하면 Speech-to-Text가 'weather'를 편향되게 인식하도록 할 수 있습니다.

음성 적응은 특히 다음 사용 사례에 유용합니다.

  • 오디오 데이터에서 자주 나타나는 단어와 구문의 정확도를 향상시킵니다. 예를 들어 일반적으로 사용자가 말하는 음성 명령어를 인식 모델에 알릴 수 있습니다.

  • Speech-to-Text에서 인식되는 단어의 어휘를 확장합니다. Speech-to-Text에는 매우 많은 어휘가 포함되어 있습니다. 하지만 오디오 데이터에 일반적으로 사용되지 않는 단어(예: 고유 명사 또는 도메인 관련 단어)가 포함된 경우 음성 적응을 사용하여 이를 추가할 수 있습니다.

  • 제공된 오디오에 노이즈가 있거나 오디오가 그다지 선명하지 않을 때 음성 텍스트 변환의 정확도를 향상시킵니다.

원하는 경우 음성 적응 부스트 기능(베타)을 사용하여 인식 모델의 편향을 미세 조정할 수 있습니다.

지정된 단어 인식 향상

Speech-to-Text가 오디오 데이터를 텍스트로 변환할 때 단어 'weather'가 인식될 확률을 높이려면 SpeechContext 객체의 phrases 필드에 'weather'를 전달합니다. Speech-to-Text API로 보내는 요청에서 RecognitionConfig 객체의 speechContexts 필드에 SpeechContext 객체를 할당합니다.

다음 스니펫은 Speech-to-Text API로 보내는 JSON 페이로드의 일부를 보여줍니다. 이 JSON 스니펫은 음성 적응에 단어 'weather'를 제공합니다.

"config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["weather"]
    }]
}

여러 단어로 구성된 구문 인식 향상

여러 단어로 구성된 구문을 제공하면 Speech-to-Text가 이러한 단어를 순서대로 인식할 가능성이 높아집니다. 구문을 제공하면 개별 단어를 포함하여 구문의 일부분이 인식될 수 있는 가능성도 높아집니다. 이러한 구문 수와 크기에 대한 한도는 콘텐츠 한도 패이지를 참조하세요.

다음 스니펫은 Speech-to-Text API로 보내는 JSON 페이로드의 일부를 보여줍니다. 이 JSON 스니펫에는 SpeechContext 객체의 phrases 필드에 할당되는 여러 단어로 구성된 구문의 배열이 포함되어 있습니다.

"config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["weather is hot", "weather is cold"]
    }]
}

클래스를 사용하여 인식 향상

클래스는 자연어에서 발생하는 화폐 단위 및 달력 날짜와 같은 일반적인 개념을 나타냅니다. 클래스를 사용하면 일반적인 개념으로 매핑되지만 항상 동일한 단어나 문구가 포함되지 않는 큰 단어 그룹의 텍스트 변환 정확도를 향상시킬 수 있습니다.

예를 들어 오디오 데이터에 사람들이 말한 자신의 상세 주소가 녹음되어 있다고 가정해 보겠습니다. 이 오디오에는 누군가 말한 "My house is 123 Main Street, the fourth house on the left."가 녹음되어 있을 수 있습니다. 이 경우 Speech-to-Text는 첫 번째 숫자 시퀀스인 '123'을 서수 '백 이십 세 번째'가 아닌 주소로 인식하도록 하려고 합니다. 하지만 모든 사람들이 '123 Main Street'에 거주하는 것은 아니기 때문에 가능한 모든 상세주소를 SpeechContext 객체에 나열하는 것은 실용적이지 않습니다. 대신 클래스를 사용하면 실제 숫자에 관계없이 번지 수로 인식되도록 할 수 있습니다. 이 예시에서 Speech-to-Text는 '123 Main Street' 및 '987 Grand Boulevard'와 같은 문구를 더 정확하게 텍스트로 변환할 수 있습니다. 숫자가 모두 번지 수로 인식되기 때문입니다.

클래스 토큰

음성 적응에서 클래스를 사용하려면 SpeechContext 객체의 phrases 필드에 클래스 토큰을 포함합니다. 사용 중인 언어에 사용 가능한 토큰을 확인하려면 지원되는 클래스 토큰 목록을 참조하세요. 예를 들어 소스 오디오에서 번지 수를 더욱 정확하게 텍스트로 변환하려면 SpeechContext 객체에 $ADDRESSNUM 값을 제공합니다.

클래스를 phrases 배열에서 독립형 항목으로 사용하거나 클래스 토큰 한 개 이상을 여러 단어로 구성된 긴 구문에 삽입할 수 있습니다. 예를 들어 클래스 토큰을 ["my address is $ADDRESSNUM"] 문자열에 포함하면 더 긴 구문에 번지 수를 표시할 수 있습니다. 하지만 오디오에 'I am at 123 Main Street'와 같이 비슷하지만 동일하지 않은 문구가 포함된 경우에는 이 문구가 도움이 되지 않습니다. 비슷한 구문을 인식하려면 ["my address is $ADDRESSNUM", "$ADDRESSNUM"]과 같이 클래스 토큰 자체를 추가해야 합니다. 형식이 잘못되었거나 유효하지 않은 클래스 토큰을 사용하면 Speech-to-Text는 오류를 트리거하지 않고 토큰을 무시하지만 구문의 나머지 부분을 컨텍스트에 계속 사용합니다.

다음 스니펫은 Speech-to-Text API로 전송된 JSON 페이로드의 예시를 보여줍니다. 이 JSON 스니펫에는 클래스 토큰을 사용하는 SpeechContext 객체가 포함되어 있습니다.

  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["$ADDRESSNUM"]
     }]
  }

부스트(베타)를 사용하여 변환 결과 미세 조정

기본적으로 음성 적응은 상대적으로 단일 단어 구문에서 효과가 적게 나타납니다. 음성 적응 부스트를 사용하면 일부 구문에 다른 구문보다 더 많은 가중치를 할당하여 인식 모델 편향을 높일 수 있습니다. 1) 음성 적응을 이미 구현했고 2) 변환 결과에서 음성 적응 효과의 강도를 추가로 조정하려는 경우 부스트를 구현하는 것이 좋습니다. 사용 중인 언어에서 부스트 기능 사용 여부를 알아보려면 언어 지원 페이지를 참조하세요.

예를 들어 사람들이 'fare to get into the county fair'에 대해 묻는 녹음이 많이 있고 단어 'fare'보다 'fair'가 더 자주 나타난다고 가정해 보겠습니다. 이 경우 음성 적응을 사용하여 SpeechContext 객체에 구문을 추가하여 모델에서 'fair'와 'fare'가 모두 인식될 가능성을 높일 수 있습니다. 그러면 예를 들어 Speech-to-Text가 'hare' 또는 'lair'보다 'fair' 및 'fare'를 더 자주 인식합니다.

하지만 'fair'가 오디오에 더 자주 등장하므로 'fare'보다 더 자주 인식되어야 합니다. Speech-to-Text API를 사용하여 오디오를 이미 텍스트 변환한 후 올바른 단어('fair')를 인식하는 데 많은 오류가 발생한 것으로 확인되었을 수 있습니다. 이 경우 부스트 기능을 사용하여 'fare'보다 'fair에 더 높은 부스트 값을 할당해야 할 수 있습니다. 'fair'에 할당되는 가중치 값이 높을수록 Speech-to-Text API가 'fare'보다는 'fair'를 선택할 가능성이 높아집니다. 부스트 값이 없으면 인식 모델이 'fare'와 'fair'를 인식할 가능성이 동일합니다.

부스트 기본사항

부스트를 사용하면 SpeechContext 객체의 phrases 항목에 가중치 값이 할당됩니다. Speech-to-Text는 오디오 데이터의 단어에 가능한 변환 텍스트를 선택할 때 이 가중치를 참조합니다. 이 값이 높을수록 Speech-to-Text가 가능한 대체 변환 텍스트 중에서 해당 구문을 선택할 확률이 높아집니다.

여러 단어로 된 문구에 부스트 값을 할당하면 전체 문구에만 부스트가 적용됩니다. 예를 들어 'My favorite exhibit at the American Museum of Natural History is the blue whale'이라는 문구에 무스트 값을 할당할 수 있습니다. 이 문구를 SpeechContext 객체에 추가하고 부스트 값을 할당하면 인식 모델이 문구 전체를 단어 대 단어로 인식할 가능성이 높아집니다.

여러 단어 문구를 부스트하여 원하는 결과를 얻지 못한 경우에는 문구를 추가 phrases 항목으로 만들고 각 항목에 부스트 값을 할당하는 모든 바이그램(순서대로 2단어)을 추가하는 것이 좋습니다. 위 예시에 이어서 'my favorite', 'my favorite exhibit', 'favorite exhibit', 'my favorite exhibit at the American Museum of Natural History', 'American Museum of Natural History', 'blue whale' 등으로 바이그램 및 엔드그램(2단어 초과)을 추가하여 조사해볼 수 있습니다. 그러면 STT 인식 모델이 원래 부스트된 문구의 일부를 포함하지만 단어 대 단어로 완전히 일치하지는 않는 관련 문구를 오디오에서 인식할 가능성이 더 높아집니다.

부스트 값 설정

부스트 값은 0보다 큰 부동 소수점 값이어야 합니다. 부스트 값의 실제 최대 한도는 20입니다. 최상의 결과를 얻으려면 정확한 텍스트 변환 결과를 얻을 때까지 부스트 값을 늘리거나 줄여서 텍스트 변환 결과를 실험합니다.

부스트 값이 높을수록 오디오에 포함된 단어나 구문이 Speech-to-Text에서 올바르게 인식되지 않는 거짓음성이 발생할 확률이 낮아집니다. 그러나 부스트는 오디오에 포함되지 않은 단어나 구문이 변환 텍스트에 나타나는 거짓양성을 증가시킬 수도 있습니다.

음성 적응 부스트 예시

음성 텍스트 변환 요청에서 'fair'와 'fare'에 서로 다른 부스트 값을 설정하려면 두 SpeechContext 객체를 RecognitionConfig 객체의 speechContexts 배열로 설정합니다. 'fair'와 'fare'가 한 개씩 포함된 SpeechContext 객체에 boost 값을 음수가 아닌 부동 소수점 값으로 설정합니다.

다음 스니펫은 Speech-to-Text API로 전송된 JSON 페이로드의 예시를 보여줍니다. 이 JSON 스니펫에는 부스트 값을 사용하여 단어 'fair'와 'fare'에 서로 다른 가중치를 적용하는 RecognitionConfig 객체가 포함되어 있습니다.

"config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["fair"],
      "boost": 15
     }, {
      "phrases": ["fare"],
      "boost": 2
     }]
  }

다음 단계