Share via


IAgentCommands::SetVoice

[Microsoft 에이전트는 Windows 7을 기준으로 더 이상 사용되지 않으며 이후 버전의 Windows에서는 사용할 수 없습니다.]

HRESULT SetVoice(
   BSTR bszVoice  // the Voice setting for Command collection
);

명령음성 텍스트 속성을 설정합니다.

  • 작업이 성공했음을 나타내는 S_OK 반환합니다.

bszVoice

Commands 컬렉션의 음성 텍스트 속성 값을 지정하는 BSTR입니다.

Commands 컬렉션에는 음성 액세스 가능으로 설정된 음성 텍스트 속성이 있어야 합니다. 또한 VoiceCaption 또는 Caption 속성이 음성 명령 창에 표시되도록 설정되어 있어야 하며, 문자의 팝업 메뉴에 표시하려면 Visible 속성이 True 로 설정되어 있어야 합니다.

제공하는 BSTR 식에는 선택적 단어를 나타내는 대괄호 문자([ ])와 대체 문자열을 나타내는 세로 막대 문자(|)가 포함될 수 있습니다. 대체 항목은 괄호로 묶어야 합니다. 예: "(hello [there] | hi)"는 명령에 대해 "hello", "hello there" 또는 "hi"를 수락하도록 음성 엔진에 지시합니다. 대괄호나 괄호 안에 포함된 단어와 다른 텍스트 사이에 적절한 공백을 포함해야 합니다. 대괄호 또는 괄호 안에 있는 텍스트와 대괄호 또는 괄호 안의 텍스트 사이에 적절한 공백을 포함해야 합니다.

star(*) 연산자를 사용하여 그룹에 포함된 단어의 인스턴스를 0개 이상 지정하거나 더하기(+) 연산자를 사용하여 하나 이상의 인스턴스를 지정할 수 있습니다. 예를 들어 다음에서는 "try this", "please try this", "please try this"를 지원하는 문법을 "please"의 무제한 반복과 함께 만듭니다.

   "please* try this"

+ 연산자가 "please"의 하나 이상의 instance 정의하기 때문에 다음 문법 형식은 "try this"를 제외합니다.

   "please+ try this"

반복 연산자는 일반적인 우선 순위 규칙을 따르고 바로 앞의 텍스트 항목에 적용됩니다. 예를 들어 다음 문법은 "뉴욕"과 "뉴욕"을 반환하지만 "뉴욕 뉴욕"은 반환하지 않습니다.

   "New York+"

따라서 일반적으로 이러한 연산자를 그룹화 문자와 함께 사용하려고 합니다. 예를 들어 다음 문법에는 "뉴욕"과 "뉴욕 뉴욕"이 모두 포함됩니다.

   "(New York)+"

반복 연산자는 전화 번호 또는 항목 목록의 사양과 같은 반복 시퀀스를 포함하는 문법을 작성하려는 경우에 유용합니다.

   "call (one|two|three|four|five|six|seven|eight|nine|zero|oh)*"
   "I'd like (cheese|pepperoni|pineapple|canadian bacon|mushrooms|and)+"

연산자는 대괄호(선택적 그룹화 문자)와 함께 사용할 수도 있지만 이렇게 하면 에이전트의 문법 처리 효율성이 저하될 수 있습니다.

줄임표(...)를 사용하여 단어 스포팅을 지원할 수도 있습니다. 즉, 음성 인식 엔진이 구(가 지 단어라고도 함)에서 이 위치에서 말하는 단어를 무시하도록 지시합니다. 줄임표를 사용하는 경우 음성 엔진은 인접한 단어 또는 구로 말할 때와 관계없이 문자열의 특정 단어만 인식합니다. 예를 들어 이 속성을 "[...]로 설정하면 검사 메일 [...]" 음성 인식 엔진은 이 명령에 "메일을 검사" 또는 "검사 메일 주세요"와 같은 구와 일치합니다. 줄임표는 문자열 내의 어디에서나 사용할 수 있습니다. 그러나 타원을 사용하는 음성 설정이 원치 않는 일치의 가능성을 증가시킬 수 있으므로 이 기술을 사용하는 데 주의해야 합니다.

명령에 대한 단어와 문법을 정의할 때 필요한 단어를 하나 이상 포함합니다. 즉, 선택적 단어만 제공하지 않습니다. 또한 단어에 발음 가능한 단어와 문자만 포함되어 있는지 확인합니다. 숫자의 경우 모호한 표현을 사용하기보다는 단어의 철자를 지정하는 것이 좋습니다. 예를 들어 "345"는 좋은 문법 형식이 아닙니다. 마찬가지로 "IEEE" 대신 "I triple E"를 사용합니다. 또한 문장 부호 또는 기호를 생략합니다. 예를 들어 "#1 $10 pizza!" 대신 "숫자 10달러 피자"를 사용합니다. 한 명령에 대해 발음할 수 없는 문자나 기호를 포함하면 음성 엔진이 모든 명령에 대한 문법을 컴파일하지 못할 수 있습니다. 마지막으로, 정의한 다른 음성 명령에서 음성 매개 변수를 가능한 한 고유하게 만듭니다. 명령에 대한 음성 문법 간의 유사성이 클수록 음성 엔진에서 인식 오류가 발생할 가능성이 높습니다. 신뢰도 점수를 사용하여 유사하거나 유사한 음성 문법을 가질 수 있는 두 명령을 더 잘 구분할 수도 있습니다.

문법 단어에 "text\pronunciation" 형식으로 포함할 수 있습니다. 여기서 "text"는 표시되는 텍스트이고 "발음"은 발음을 명확히 하는 텍스트입니다. 예를 들어 사용자가 "first"라고 말하면 문법 "1st\first"가 인식되지만 Command 이벤트는 "1st\first" 텍스트를 반환합니다. IPA(International Phonetic Alphabet)를 사용하여 발음을 파운드 기호 문자("#")로 시작한 다음 IPA 발음을 나타내는 텍스트로 발음을 지정할 수도 있습니다.

일본어 음성 인식 엔진의 경우 "kana\kanji" 형식으로 문법을 정의하여 대체 발음을 줄이고 정확도를 높일 수 있습니다. (이전 버전과의 호환성을 위해 순서가 반대로 바뀝니다.) 이는 간지에서 적절한 이름을 발음하는 데 특히 중요합니다. 그러나 가나 없이 "간지"를 전달할 수 있습니다. 이 경우 엔진은 간지에 허용되는 모든 발음을 수신 대기해야 합니다. 가나만 전달할 수도 있습니다.

그룹화 또는 반복 서식 문자를 사용하는 오류를 제외하고 엔진 자체에서 오류를 보고하지 않는 한 Microsoft 에이전트는 문법 오류를 보고하지 않습니다. 엔진이 컴파일에 실패하지만 엔진이 오류로 처리하고 반환하지 않는 문법 텍스트를 전달하면 에이전트에서 오류를 보고할 수 없습니다. 따라서 클라이언트 애플리케이션은 Voice 속성에 대한 문법을 신중하게 정의해야 합니다.

참고

사용할 수 있는 문법 기능은 음성 인식 엔진에 따라 달라질 수 있습니다. 엔진 공급업체와 검사 지원되는 문법 옵션을 확인할 수 있습니다. SRModeID를 사용하여 특정 엔진을 사용합니다.

 

이 속성의 작업은 Microsoft 에이전트 서버의 음성 인식 상태에 따라 달라집니다. 예를 들어 음성 인식이 사용하지 않도록 설정되었거나 설치되지 않은 경우 이 함수는 즉각적인 영향을 주지 않습니다. 그러나 세션 중에 음성 인식을 사용하도록 설정하면 클라이언트 애플리케이션이 입력 활성 상태일 때 명령에 액세스할 수 있게 됩니다.

참고 항목

IAgentCommands::GetVoice, IAgentCommands::SetCaption, IAgentCommands::SetVisible