[Microsoft 에이전트는 Windows 7을 기준으로 사용되지 않으며 이후 버전의 Windows에서는 사용할 수 없습니다.]
Microsoft 에이전트는 마우스 및 키보드 상호 작용을 지원하는 것 외에도 음성 입력을 직접 지원합니다. 음성 입력에 대한 Microsoft 에이전트의 지원은 Microsoft SAPI(Speech Application Programming Interface)를 기반으로 하므로 SAPI 필수 지원을 포함하는 음성 인식 명령 및 제어 엔진에서 Microsoft 에이전트를 사용할 수 있습니다. 음성 엔진 요구 사항에 대한 자세한 내용은 Speech Engine 지원 요구 사항참조하세요.
Microsoft는 Microsoft 에이전트와 함께 사용할 수 있는 명령 및 제어 음성 인식 엔진을 제공합니다. 자세한 내용은 Speech Engine 선택참조하세요.
사용자는 푸시 투 토크 수신 대기 바로 가기 키를 누르고 눌러 음성 입력을 시작할 수 있습니다. 이 수신 대기 모드에서는 음성 엔진이 음성 입력의 시작을 수신하는 경우 발화의 끝을 감지할 때까지 오디오 채널을 열어 둡니다. 그러나 입력을 받지 못하면 오디오 출력을 차단하지 않습니다. 이렇게 하면 사용자가 키를 누른 상태에서 여러 음성 명령을 실행할 수 있으며 사용자가 말을 하지 않을 때 문자가 응답할 수 있습니다.
사용자가 수신 대기 키를 해제하면 수신 모드 시간이 초과됩니다. 사용자는 고급 문자 옵션을 사용하여 이 모드의 제한 시간을 조정할 수 있습니다. 클라이언트 애플리케이션 코드에서 이 제한 시간을 설정할 수 없습니다.
사용자가 말하는 동안 문자가 말을 하려고 하면 텍스트가 단어 풍선에 계속 표시될 수 있지만 문자의 가청 출력이 실패합니다. 수신 대기 키를 누르는 동안 문자에 오디오 채널이 있는 경우 서버는 Speak 메서드의 텍스트를 처리한 후 자동으로 컨트롤을 사용자에게 다시 전송합니다. 사용자가 말하기를 시작하도록 큐를 표시하기 위해 선택적 MIDI 톤이 재생됩니다. 이렇게 하면 문자를 구동하는 애플리케이션이 출력에서 논리적 일시 중지를 제공하지 못하더라도 사용자가 입력을 제공할 수 있습니다.
Listen 메서드를 사용하여 음성 입력을 시작할 수도 있습니다. 이 메서드를 호출하면 미리 정의된 기간 동안 음성 인식이 켜집니다. 이 간격 동안 입력이 없으면 Microsoft 에이전트는 음성 인식 엔진을 자동으로 해제하고 오디오 채널을 해제합니다. 이렇게 하면 오디오 디바이스의 입력 또는 출력을 차단하지 않으며 음성 인식이 켜지면 사용하는 프로세서 오버헤드를 최소화할 수 있습니다. Listen 메서드를 사용하여 음성 입력을 끌 수도 있습니다. 그러나 음성 인식 엔진이 비동기적으로 작동하기 때문에 효과가 즉각적이지 않을 수 있습니다. 따라서 코드가 음성 입력을 끄기 위해 Listen 호출한 후에도 Command 이벤트를 수신할 수 있습니다.
음성 입력을 지원하려면 음성 인식 엔진이 Commands 컬렉션에서 명령 대한 음성 설정으로 수신 대기하고 일치시킬 단어 집합인 문법정의합니다. 선택적 및 대체 단어와 반복되는 시퀀스를 문법에 포함할 수 있습니다. 에이전트는 클라이언트 중 하나가 음성 엔진을 성공적으로 로드하거나 Command 개체 중 하나에 대한 Voice 작성할 때까지 수신 대기 핫키를 사용하도록 설정하지 않습니다.
사용자가 수신 대기 바로 가기 키를 누르든 클라이언트 애플리케이션이 Listen 메서드를 호출하여 음성 입력을 시작하든, 음성 인식 엔진은 정의된 명령에 대한 문법에 발화의 입력을 일치시키려고 시도하고 정보를 서버에 다시 전달합니다. 그런 다음, 서버는 Command 이벤트(IAgentNotifySink::Command)를 사용하여 클라이언트 애플리케이션에 알합니다. 최상의 일치 항목의 명령 ID와 다음 두 개의 대체 일치 항목(있는 경우), 신뢰도 점수 및 각 일치 항목에 대한 일치하는 텍스트를 포함하는 UserInput 개체를 다시 전달합니다.
또한 서버는 제공된 명령 중 하나에 음성 입력과 일치하는 경우 클라이언트 애플리케이션에 알합니다. 명령 ID가 NULL 있지만 신뢰도 점수와 일치하는 텍스트가 계속 표시됩니다. 수신 모드에서 서버는 문자의 수신 대기 상태에 할당된 애니메이션을 자동으로 재생합니다. 그런 다음 발화가 실제로 감지되면 서버는 캐릭터의 청각 상태 애니메이션을 재생합니다. 서버는 발화가 종료될 때까지 문자를 세심한 상태로 유지합니다. 이렇게 하면 입력을 위해 사용자에게 신호를 보낼 수 있는 적절한 소셜 피드백이 제공됩니다.
사용자가 고급 문자 옵션에서 음성 입력을 사용하지 않도록 설정하면 수신 대기 바로 가기 키도 사용하지 않도록 설정됩니다. 마찬가지로 음성 입력을 사용하지 않도록 설정하면 Listen 메서드를 호출하려고 하면 메서드가 실패합니다.