자동 음성 적응

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

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

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

Console

  1. Dialogflow CX 콘솔을 엽니다.
  2. GCP 프로젝트를 선택합니다.
  3. 에이전트를 선택합니다.
  4. 에이전트 설정을 클릭합니다.
  5. 음성 및 IVR 탭을 클릭합니다.
  6. 자동 음성 적응 사용을 사용 또는 사용 중지로 전환합니다.
  7. 저장을 클릭합니다.

API

Agent 유형은 getpatch/update 메서드를 참조하세요.

에이전트 참조의 프로토콜 및 버전 선택:

프로토콜 V3 V3beta1
REST 에이전트 리소스 에이전트 리소스
RPC 에이전트 인터페이스 에이전트 인터페이스
C# 없음 없음
Go 없음 없음
자바 AgentsClient AgentsClient
Node.js AgentsClient AgentsClient
PHP 없음 없음
Python AgentsClient AgentsClient
Ruby 없음 없음

음성 인식 개선 예시

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

학습 문구

  • 예를 들어 'stuffy nose'가 포함된 학습 문구를 정의할 경우 발음이 비슷한 최종 사용자 발화도 'stuff he knows'가 아니라 'stuffy nose'로 안정적으로 인식됩니다.
  • Dialogflow의 양식 작성 프롬프트를 강제하는 필수 매개변수가 있는 경우에는 자동 음성 적응에서 채워지는 개체에 강한 편향을 적용합니다.

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

시스템 개체

@sys.number 시스템 개체를 사용하는 학습 문구를 정의할 때 최종 사용자가 'two'라고 말하면 이 음성은 'I want two', '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'와 같은 영숫자 및 숫자 시퀀스에 대한 자동 음성 적응을 트리거할 수 있습니다. 어떤 정규 표현식으로든 NLP에서 개체를 추출할 수 있지만 음성을 인식할 때 자동 음성 적응에서 철자가 틀린 영숫자 또는 숫자 시퀀스에 편향을 적용할 수 있는 표현식도 있습니다.

음성을 통해 이러한 시퀀스를 인식하려면 다음 요구사항을 모두 충족해야 합니다.

  1. 정규 표현식 개체 항목 중 하나 이상이 다음과 같은 모든 규칙을 따릅니다.

    • [] 문자 집합을 사용할 수 있습니다.
    • *, ?, +, {3,5}와 같은 반복 수량자를 사용할 수 있습니다.
    • \s*\s?는 허용되지만 공백 또는 \s는 포함하지 않습니다.
    • () 캡처 그룹을 포함하지 않습니다.
    • 다음과 같은 특수문자나 구두점과 일치시키려고 시도하지 않습니다. ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |
  2. 슬롯 채우기 중에 수집될 수 있도록 인텐트에서 정규 표현식 개체를 필수 매개변수로 표시합니다. 그러면 인텐트와 시퀀스를 동시에 인식하는 대신에 자동 음성 적응에서 시퀀스 인식에 강한 편향을 적용합니다. 필수 매개변수로 표시하지 않을 경우 'Where is my package for ABC123'이 'Where is my package 4ABC123'으로 잘못 인식될 수 있습니다.

예를 들어 단일 항목 ([a-zA-Z0-9]\s?){5,9}를 사용하는 정규 표현식 개체는 캡처 그룹이 포함되어 있으므로 음성 시퀀스 인식기를 트리거하지 않습니다. 이 문제를 해결하려면 [a-zA-Z0-9]{5,9}에 대한 다른 항목을 추가하면 됩니다. 그러면 'ABC123'이란 음성으로 양식 작성을 실행할 때 시퀀스 인식기를 활용할 수 있지만 공백을 허용하는 원래 규칙 때문에 NLP에서도 '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}

또한 @sys.number-sequence를 사용하여 숫자 시퀀스를 수락하고 @sys.phone-number를 현지화된 전화 번호 인식기에 사용하는 것이 좋습니다. 시스템 개체와 정규 표현식 외의 커스텀 개체는 필수 양식 작성 프롬프트가 아니어도 자동 음성 적응과 원활하게 연동됩니다.

제한사항

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

  1. 긴 문자 시퀀스를 인식하는 것은 쉽지 않습니다. 예를 들어 8kHz 오디오가 있는 전화 채널에서는 16자리 또는 10자리 영숫자를 초과하는 시퀀스를 일관적으로 인식하지 못할 수 있습니다. 다음과 같은 대화식 대안을 고려해 보세요.

    • 데이터베이스에 대한 시퀀스를 확인할 때는 날짜, 이름, 전화번호 등 수집된 다른 매개변수를 교차 참조하여 불완전한 일치를 허용하는 것이 좋습니다. 예를 들어 사용자에게 단순히 주문 번호를 물어보는 대신 전화번호도 요청합니다. 이제 웹훅이 데이터베이스에서 주문 상태를 쿼리하면 먼저 전화번호를 사용하고 계정에서 가장 가까운 일치 순서를 반환할 수 있습니다. 이렇게 하면 Dialogflow가 'ABC'를 'AVC'로 잘못 들을 수 있지만, 여전히 사용자의 올바른 주문 상태를 반환할 수 있습니다.
    • 특히 긴 시퀀스의 경우 봇에서 진행 상황을 확인할 수 있도록 최종 사용자가 중간에 잠시 멈추도록 유도하는 흐름을 설계해 보세요.
  2. 자동 음성 적응의 시스템 및 정규 표현식 개체에 대한 기본 제공 지원은 언어마다 다릅니다. $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를 매개변수로 사용합니다.