음성 적응

인텐트 인식 요청을 수행할 때 선택적으로 음성 컨텍스트를 제공하여 음성 인식기에 힌트를 제공할 수 있습니다. 이러한 힌트는 특정 대화 상태에서 인식에 도움이 될 수 있습니다.

자동 음성 적응

자동 음성 적응 기능은 모든 인텐트 인식 요청에 대해 자동으로 대화 상태를 사용하여 관련 개체 및 학습 문구를 음성 컨텍스트 힌트로 전달하여 에이전트의 음성 인식 정확성을 높입니다. 이 기능은 사용하도록 기본 설정되어 있습니다.

자동 음성 적응 사용 또는 사용 중지

자동 음성 적응을 사용 또는 사용 중지하려면 다음 안내를 따르세요.

  1. Dialogflow ES 콘솔로 이동합니다.
  2. 왼쪽 사이드바 메뉴의 상단 근처에 있는 에이전트를 선택합니다.
  3. 에이전트 이름 옆에 있는 설정 버튼을 클릭합니다.
  4. 음성 탭을 선택합니다.
  5. 음성 인식 품질 개선 섹션으로 이동합니다.
  6. 자동 음성 적응 사용을 사용 또는 사용 중지로 전환합니다.

음성 인식 개선을 위한 에이전트 설계

자동 음성 적응을 사용하면 에이전트 활용을 극대화할 수 있는 방법으로 에이전트를 빌드할 수 있습니다. 다음 섹션에서는 에이전트의 학습 문구, 컨텍스트, 개체에 변경하여 어떻게 음성 인식을 개선할 수 있는지 설명합니다.

학습 문구 및 컨텍스트

  • 예를 들어 'stuffy nose'가 포함된 학습 문구를 정의할 경우 발음이 비슷한 최종 사용자 발화도 'stuff he knows'가 아니라 'stuffy nose'로 안정적으로 인식됩니다.
  • 활성 컨텍스트가 포함된 세션의 경우 자동 음성 적응에서 모든 입력 컨텍스트가 활성화된 인텐트의 학습 문구에 가장 큰 편향을 적용합니다. 예를 들어 2개 활성 컨텍스트인 'pay-bill'과 'confirmation'이 있는 경우, 입력 컨텍스트인 'pay-bill'의 인텐트, 단일 입력 컨텍스트 'confirmation'의 인텐트, 2개 입력 컨텍스트인 'pay-bill'과 'confirmation'의 인텐트가 모두 자동 음성 적응에 영향을 줍니다.

  • 활성 컨텍스트가 포함되지 않은 세션에서는 자동 음성 적응이 입력 컨텍스트가 없는 인텐트의 학습 문구에 가장 큰 편향을 적용합니다.

  • Dialogflow의 슬롯 채우기 프롬프트를 강제하는 필수 매개변수가 있는 경우에는 자동 음성 적응에서 채워지는 개체에 강한 편향을 적용합니다.

어떤 경우든 자동 음성 적응은 음성 인식을 제한하지 않고 편향을 적용할 뿐입니다. 예를 들어 Dialogflow에서 사용자에게 필수 매개변수를 요청하더라도 최상위 수준의 'talk to an agent' 인텐트와 같은 다른 인텐트를 트리거할 수 있습니다.

시스템 개체

@sys.number 시스템 개체를 사용하는 학습 문구를 정의할 때 최종 사용자가 'I want two'라고 말하면 이 음성은 'to', 'too', '2', 'two'로 인식될 수 있습니다.

자동 음성 적응이 사용 설정된 경우 음성 인식 중에 Dialogflow가 @sys.number 항목을 힌트로 사용하고, 매개변수가 '2'로 추출될 가능성이 높습니다.

커스텀 항목

  • 회사에서 제공되는 제품 또는 서비스 이름의 커스텀 개체를 정의하면 최종 사용자가 이러한 단어를 발화에서 언급할 때 단어의 인식 가능성이 더 높아집니다. 'Dialogflow'가 @product entity로 주석 처리되는 'I love Dialogflow' 학습 문구의 경우 자동 음성 적응에서 'I love Dialogflow', 'I love Cloud Speech' 그리고 @product entity의 나머지 개체에 편향을 적용합니다.

  • Dialogflow를 사용해 음성을 감지할 때는 특히 개체 동의어를 명확하게 정의해야 합니다. 'Dialogflow'와 'Dataflow'라는 두 @product entity 개체가 있다고 가정해 보겠습니다. 'Dialogflow'의 동의어는 'Dialogflow', 'dialog flow', 'dialog builder', 'Speaktoit', 'speak to it', 'API.ai', 'API dot AI'일 수 있습니다. 가장 일반적인 변형이 포함되어 있으므로 적절한 동의어라 할 수 있습니다. 'the dialogue flow builder'는 'dialogue flow'에서 이미 처리되므로 추가할 필요가 없습니다.

  • 연속적이지만 고유한 숫자 항목이 있는 사용자 발화는 모호할 수 있습니다. 예를 들어 'I want two sixteen packs'는 16개 팩 2개 또는 팩 216개를 의미할 수 있습니다. 철자 값이 있는 개체를 설정하면 음성 적응이 이러한 경우를 명확하게 하는 데 도움이 될 수 있습니다.
    • 다음 개체가 있는 quantity 개체를 정의합니다.
      zero
      one
      ...
      twenty
    • 다음 개체 있는 product 또는 size 개체를 정의합니다.
      sixteen pack
      two ounce
      ...
      five liter
    • 음성 적응에서는 항목 동의어만 사용되므로 참조 값 1 및 단일 동의어 one으로 항목을 정의하여 fulfillment 로직을 단순화할 수 있습니다.

정규 표현식 항목

정규 표현식 항목은 올바르게 구성하고 테스트하면 'ABC123' 또는 '12345'와 같은 영숫자 및 숫자 시퀀스에 대한 자동 음성 적응을 트리거할 수 있습니다.

음성을 통해 이러한 시퀀스를 인식하려면 아래의 요구사항 4개 모두를 구현합니다.

1. 정규 표현식 개체 요구사항

어떤 정규 표현식으로든 텍스트 입력에서 항목을 추출할 수 있지만 음성을 인식할 때 자동 음성 적응에서 철자가 틀린 영숫자 또는 숫자 시퀀스에 편향을 적용할 수 있는 표현식도 있습니다.

정규 표현식 개체에서 최소 하나의 개체가 다음 규칙을 모두 따라야 합니다.

  • 일부 영숫자 문자(예: \d, \w, [a-zA-Z0-9])와 일치해야 합니다.
  • \s*\s?가 허용되더라도 공백   또는 \s를 포함하지 않아야 합니다.
  • 캡처 그룹 또는 비캡처 그룹 ()을 포함하지 않아야 합니다.
  • 다음과 같은 특수 문자 또는 구두점과 일치시키려고 시도하지 않아야 합니다. ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |

이 개체에는 문자 집합 []*, ?, +, {3,5}와 같은 반복 수량자가 포함될 수 있습니다.

예시를 참조하세요.

2. 매개변수 정의 요구사항

정규 표현식 개체를 필수 인텐트 매개변수로 표시하여 슬롯 채우기 중에 수집할 수 있도록 합니다. 그러면 인텐트와 시퀀스를 동시에 인식하는 대신에 자동 음성 적응에서 시퀀스 인식에 강한 편향을 적용합니다. 필수 매개변수로 표시하지 않을 경우 'Where is my package for ABC123'이 'Where is my package 4ABC123'으로 잘못 인식될 수 있습니다.

3. 학습 문구 주석 요구사항

인텐트 학습 문구 주석에 정규 표현식 개체를 사용하지 마세요. 이렇게 하면 슬롯 채우기를 하는 동안 매개변수가 확인됩니다.

4. 테스트 요구사항

음성 적응 테스트를 참조하세요.

예시

예를 들어 단일 항목 ([a-zA-Z0-9]\s?){5,9}를 사용하는 정규 표현식 항목은 캡처 그룹이 포함되어 있으므로 음성 시퀀스 인식기를 트리거하지 않습니다. 이 문제를 해결하려면 [a-zA-Z0-9]{5,9}에 대한 다른 개체를 추가하면 됩니다. 그러면 'ABC123'을 일치시킬 때 시퀀스 인식기를 활용할 수 있지만 공백을 허용하는 원래 규칙 때문에 NLU에서도 'ABC 123'과 같은 입력을 찾습니다.

다음 정규 표현식의 예는 영숫자 시퀀스에 맞게 조정됩니다.

^[A-Za-z0-9]{1,10}$
WAC\d+
215[2-8]{3}[A-Z]+
[a-zA-Z]\s?[a-zA-Z]\s?[0-9]\s?[0-9]\s?[0-9]\s?[a-zA-Z]\s?[a-zA-Z]

다음 정규 표현식의 예는 숫자 시퀀스에 맞게 조정됩니다.

\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}
정규 표현식 해결 방법

자동 음성 적응의 정규 표현식 항목에 대한 기본 제공 지원은 언어마다 다릅니다. $OOV_CLASS_ALPHANUMERIC_SEQUENCE$OOV_CLASS_DIGIT_SEQUENCE 지원 언어는 음성 클래스 토큰을 참조하세요.

원하는 언어가 목록에 없는 경우 이러한 제한을 해결할 수 있습니다. 예를 들어 세 글자와 세 자리 숫자로 된 직원 ID를 정확하게 인식하려면 다음 항목 및 매개변수를 사용하여 에이전트를 빌드할 수 있습니다.

  • 10개 개체 항목(동의어 포함)이 포함된 digit 개체를 정의합니다.
    0, 0
    1, 1
    ...
    9, 9
  • 26개 개체 항목(동의어 포함)이 포함된 letter 개체를 정의합니다.
    A, A
    B, B
    ...
    Z, Z
  • 단일 개체 항목(동의어 제외)이 포함된 employee-id 개체를 정의합니다.
    @letter @letter @letter @digit @digit @digit
  • 학습 문구에서 @employee-id를 매개변수로 사용합니다.

음성 적응 테스트

특정 학습 문구 또는 개체 일치에 대해 에이전트의 음성 적응 기능을 테스트할 때는 대화의 첫 번째 음성 발화로 일치 개체를 바로 테스트해서는 안 됩니다. 테스트하려는 일치 개체 전에 전체 대화의 음성 또는 이벤트 입력만 사용해야 합니다. 이 방식으로 테스트할 때 에이전트 동작은 실제 프로덕션 대화의 동작과 유사합니다.

제한사항

다음과 같은 제한사항이 적용됩니다.

  • 음성 적응을 모든 음성 모델과 언어 조합에 사용할 수는 없습니다. 음성 모델 및 언어 조합에서 '모델 적응'을 사용할 수 있는지 확인하려면 Cloud Speech 언어 지원 페이지를 참조하세요.
  • Dialogflow에 데이터를 전송하기 전 Actions on Google에 의해 음성 인식이 수행되기 때문에 Actions on Google(Google 어시스턴트)에서 자동 음성 적응은 작동하지 않습니다.
  • 긴 문자 시퀀스를 인식하는 것은 쉽지 않습니다. 한 번에 캡처되는 문자 수는 입력 오디오의 품질과 직접적으로 관련이 있습니다. 예를 들어 통합이 전화 통화 오디오에서 작동하는 경우 고급 음성 모델을 사용 설정하여 4자 또는 5자 이상의 영숫자 시퀀스나 10자(영문 기준)를 초과하지 않는 숫자 시퀀스를 안정적으로 인식할 수 있어야 합니다. 모든 정규 표현식 항목 가이드라인을 따랐지만 여전히 한 번에 전체 시퀀스를 캡처하는 데 어려움이 있다면 더 많은 대화식 대안을 고려할 수 있습니다.
    • 데이터베이스에 대한 시퀀스를 확인할 때는 날짜, 이름, 전화번호 등 수집된 다른 매개변수를 교차 참조하여 불완전한 일치를 허용하는 것이 좋습니다. 예를 들어 사용자에게 단순히 주문 번호를 물어보는 대신 전화번호도 요청합니다. 이제 웹훅이 데이터베이스에서 주문 상태를 쿼리하면 먼저 전화번호를 사용하고 계정에서 가장 가까운 일치 순서를 반환할 수 있습니다. 이렇게 하면 Dialogflow가 'ABC'를 'AVC'로 잘못 들을 수 있지만, 여전히 사용자의 올바른 주문 상태를 반환할 수 있습니다.
    • 특히 긴 시퀀스의 경우 봇에서 진행 상황을 확인할 수 있도록 최종 사용자가 중간에 잠시 멈추도록 유도하는 흐름을 설계해 보세요. 자세한 내용은 이 튜토리얼을 참조하세요.