다음을 통해 공유


음성 상호 작용

음성 인식 및 텍스트 음성 변환(TTS 또는 음성 합성이라고도 함)을 앱의 사용자 환경에 직접 통합합니다.

음성 인식 음성 인식은 사용자가 말하는 단어를 양식 입력, 텍스트 받아쓰기, 작업 또는 명령 지정 및 작업 수행을 위한 텍스트로 변환합니다. 자유 텍스트 받아쓰기와 웹 검색을 위해 미리 정의된 문법과 SRGS(Speech Recognition Grammar Specification) 버전 1.0을 사용하여 작성된 사용자 지정 문법을 모두 지원합니다.

Speech synthesis/Text to Speech(TTS) TTS는 음성 합성 엔진(음성)을 사용하여 텍스트 문자열을 음성 단어로 변환합니다. 입력 문자열은 기본, 장식되지 않은 텍스트 또는 더 복잡한 SSML(Speech Synthesis Markup Language)일 수 있습니다. SSML은 발음, 볼륨, 피치, 속도 또는 속도 및 강조와 같은 음성 출력의 특성을 제어하는 표준 방법을 제공합니다.

음성 상호 작용 디자인

음성을 신중하게 디자인하고 구현하는 경우 사용자가 Windows 애플리케이션과 상호 작용하여 마우스, 키보드, 컨트롤러 또는 터치를 기반으로 기존의 상호 작용 환경을 보완하거나 대체할 수 있는 효과적이고 접근 가능하며 자연스러운 방법이 될 수 있습니다.

이러한 지침 및 권장 사항은 음성 인식과 TTS를 앱의 상호 작용 환경에 가장 잘 통합하는 방법을 설명합니다.

앱에서 음성 상호 작용을 지원하는 것을 고려 중인 경우 다음 질문을 스스로에게 묻습니다.

  • 사용자가 음성을 통해 수행할 수 있는 작업은 무엇인가요? 페이지 사이를 탐색하거나, 명령을 호출하거나, 데이터를 텍스트 필드, 간략한 메모 또는 긴 메시지로 입력할 수 있나요?
  • 음성 입력이 작업을 완료하는 데 적합한 옵션인가요?
  • 사용자가 음성 입력을 사용할 수 있는 시기를 어떻게 알 수 있나요?
  • 앱이 항상 수신 대기 중입니까, 아니면 사용자가 앱이 수신 모드로 전환되도록 조치를 취해야 합니까?
  • 행동이나 동작을 시작하는 구문은 무엇인가요? 구와 동작을 화면에 열거해야 합니까?
  • 프롬프트, 확인 및 명확성 화면 또는 TTS가 필요한가요?
  • 앱과 사용자 간의 상호 작용 대화는 무엇인가요?
  • 앱 컨텍스트에 사용자 지정 또는 제한된 어휘(예: 의학, 과학 또는 로캘)가 필요한가요?
  • 네트워크 연결이 필요한가요?

문자 입력

텍스트 입력은 단일 단어 또는 구와 같은 짧은 형식 입력부터 여러 구, 단락 또는 연속 받아쓰기 등의 긴 형식 입력에 이르기까지 다양할 수 있습니다. 짧은 양식 입력은 일반적으로 길이가 10초 미만인 반면 긴 폼 입력 세션의 길이는 최대 2분입니다. 긴 형식 입력은 사용자의 개입 없이 다시 시작하여 연속 받아쓰기의 인상을 줄 수 있습니다.

음성 인식이 지원되고 사용자가 사용할 수 있음을 나타내고 사용자가 음성 인식을 켜야 하는지 여부를 나타내는 시각적 신호를 제공합니다. 예를 들어 마이크 문자 모양(명령 모음 참조)이 있는 명령 모음 단추를 사용하여 가용성과 상태를 모두 표시합니다.

인식이 수행되는 동안 명백한 응답 부족을 최소화하기 위해 지속적인 인식 피드백을 제공합니다.

사용자가 키보드 입력, 명확성 프롬프트, 제안 또는 추가 음성 인식을 사용하여 인식 텍스트를 수정할 수 있습니다.

터치 또는 키보드와 같은 음성 인식 이외의 장치에서 입력이 감지되면 인식을 중지합니다. 이 입력은 사용자가 인식 텍스트를 수정하거나 다른 양식 필드와 상호 작용하는 등 다른 작업으로 이동했음을 나타냅니다.

비음성 입력이 인식 종료를 나타내도록 지정할 시간 길이를 설정합니다. 일반적으로 사용자가 앱 참여를 중지했음을 나타내기 때문에 이 기간 후에 인식이 자동으로 다시 시작되지 않습니다.

경우에 따라 음성 인식을 지원하기 위해 네트워크 연결이 필요할 수 있습니다. 사용할 수 없는 경우 모든 연속 인식 UI를 사용하지 않도록 설정하고 인식 세션을 종료합니다.

지휘

음성 입력은 작업을 시작하고, 명령을 호출하고, 작업을 수행할 수 있습니다.

공간이 허용되는 경우 유효한 입력 예제와 함께 현재 앱 컨텍스트에 대해 지원되는 응답을 표시하는 것이 좋습니다. 이 방법은 앱에서 처리해야 하는 잠재적인 응답을 줄이고 사용자에게 혼동을 줄입니다.

질문을 구성하여 가능한 한 구체적인 응답을 유도해 보세요. 예를 들어 "오늘 무엇을 하고 싶습니까?"는 매우 개방형이며 응답이 얼마나 다양할 수 있기 때문에 매우 큰 문법 정의가 필요합니다. 또는 "게임을 플레이하거나 음악을 들으세요?"는 해당하는 작은 문법 정의로 두 가지 유효한 답변 중 하나에 대한 응답을 제한합니다. 작은 문법은 작성하기 훨씬 쉽고 훨씬 더 정확한 인식 결과를 생성합니다.

음성 인식 신뢰도가 낮은 경우 사용자에게 확인을 요청합니다. 사용자의 의도가 명확하지 않은 경우 의도하지 않은 작업을 시작하는 것보다 설명을 얻는 것이 좋습니다.

음성 인식이 지원되고 사용자가 사용할 수 있음을 나타내고 사용자가 음성 인식을 켜야 하는지 여부를 나타내는 시각적 신호를 제공합니다. 예를 들어 마이크 문자 모양이 있는 명령 모음 단추( 명령 모음에 대한 지침 참조)를 사용하여 가용성과 상태를 모두 표시합니다.

음성 인식 스위치가 일반적으로 표시되지 않으면 앱의 콘텐츠 영역에 상태 표시기를 표시하는 것이 좋습니다.

사용자가 인식을 시작하는 경우 일관성을 위해 기본 제공 인식 환경을 사용하는 것이 좋습니다. 기본 제공 환경에는 프롬프트, 예제, 명확성, 확인 및 오류가 있는 사용자 지정 가능한 화면이 포함됩니다.

화면은 지정된 제약 조건에 따라 달라집니다.

  • 미리 정의된 문법(받아쓰기 또는 웹 검색)

    • 청취 화면.
    • 생각 화면입니다.
    • 말한 내용을 들었습니다 화면 또는 오류 화면.
  • 단어 또는 구 목록 또는 SRGS 문법 파일

    • 청취 화면.
    • 이렇게 말했습니까? 화면은 사용자가 말한 내용이 둘 이상의 잠재적 결과로 해석될 수 있는 경우에 표시됩니다.
    • 말한 내용을 들었습니다 화면 또는 오류 화면.

수신 대기 화면에서 다음을 수행할 수 있습니다.

  • 제목 텍스트를 사용자 지정합니다.
  • 사용자가 말할 수 있는 내용의 예제 텍스트를 제공합니다.
  • Heard you say 화면이 표시되는지 여부를 지정합니다.
  • Heard you say 화면에서 인식된 문자열을 사용자에게 다시 읽어줍니다.

다음 이미지는 SRGS 정의 제약 조건을 사용하는 음성 인식기의 기본 제공 인식 흐름의 예를 보여 줍니다. 이 예제에서는 음성 인식이 성공합니다.

sgrs 문법 파일을 기반으로 하는 제약 조건에 대한 초기 인식 화면

sgrs 문법 파일을 기반으로 하는 제약 조건에 대한 중간 인식 화면

sgrs 문법 파일을 기반으로 하는 제약 조건에 대한 최종 인식 화면

항상 듣기

앱은 사용자 개입 없이 앱이 시작되는 즉시 음성 입력을 수신 대기하고 인식할 수 있습니다.

앱 컨텍스트에 따라 문법 제약 조건을 사용자 지정합니다. 이 방법은 음성 인식 환경을 현재 작업과 매우 대상으로 지정하고 관련성을 유지하며 오류를 최소화합니다.

"무슨 말을 할 수 있니?"

음성 입력을 사용하도록 설정하면 사용자가 앱에서 이해할 수 있는 작업과 수행할 수 있는 작업을 검색할 수 있습니다.

사용자가 음성 인식을 사용하도록 설정하는 경우 명령 모음 또는 메뉴 명령을 사용하여 현재 컨텍스트에서 지원되는 모든 단어와 구를 표시하는 것이 좋습니다.

음성 인식이 항상 켜진 경우 모든 페이지에 "무엇을 말할 수 있습니까?"라는 문구를 추가하는 것이 좋습니다. 사용자가 이 구를 말하면 현재 컨텍스트에서 지원되는 모든 단어와 구를 표시합니다. 이 구를 사용하면 사용자가 시스템 전체에서 음성 기능을 검색할 수 있는 일관된 방법이 제공됩니다.

인식 실패

음성 인식은 실패할 수 있습니다. 오디오 품질이 좋지 않거나, 인식기가 구의 일부만 감지하거나, 인식기가 입력을 전혀 감지하지 못하는 경우 오류가 발생합니다.

오류를 정상적으로 처리하고, 사용자가 인식이 실패한 이유를 이해하고, 복구할 수 있도록 도와주세요.

앱은 인식기가 사용자를 이해하지 못했으며 다시 시도해야 한다는 사실을 사용자에게 알려야 합니다.

하나 이상의 지원되는 구의 예를 제공하는 것이 좋습니다. 사용자는 제안된 구를 반복하여 인식 성공을 높일 수 있습니다.

사용자가 선택할 수 있는 잠재적 일치 항목 목록을 표시합니다. 이 방법은 인식 프로세스를 다시 진행하는 것보다 훨씬 더 효율적일 수 있습니다.

항상 대체 입력 형식을 지원합니다. 이는 반복되는 인식 오류를 처리하는 데 특히 유용합니다. 예를 들어 사용자가 키보드를 사용하거나 터치 또는 마우스를 사용하여 잠재적 일치 항목 목록에서 선택하도록 제안할 수 있습니다.

사용자에게 인식이 성공하지 못했음을 알리고 사용자가 또 다른 인식을 시도할 수 있도록 하는 화면이 포함되어 있으므로 기본 제공 음성 인식 환경을 사용합니다.

오디오 입력을 듣고 문제를 해결해 보세요. 음성 인식기에서는 음성 인식 정확도에 부정적인 영향을 줄 수 있는 오디오 품질 문제를 감지할 수 있습니다. 음성 인식기에서 제공하는 정보를 사용하여 사용자에게 문제를 알리고 가능한 경우 수정 작업을 수행하도록 할 수 있습니다. 예를 들어 마이크의 볼륨 설정이 너무 낮으면 사용자에게 더 크게 말하거나 볼륨을 높이라는 메시지를 표시할 수 있습니다.

Constraints

제약 조건 또는 문법은 음성 인식기가 일치시킬 수 있는 음성 단어와 구를 정의합니다. 미리 정의된 웹 서비스 문법 중 하나를 지정하거나 앱과 함께 설치하는 사용자 지정 문법을 만들 수 있습니다.

미리 정의된 문법

미리 정의된 받아쓰기 및 웹 검색 문법은 문법을 만들 필요 없이 앱에 음성 인식을 제공합니다. 이러한 문법을 사용하면 원격 웹 서비스가 음성 인식을 수행하고 결과를 디바이스에 반환합니다.

  • 기본 자유 텍스트 받아쓰기 문법은 사용자가 특정 언어로 말할 수 있는 대부분의 단어와 구를 인식합니다. 짧은 구를 인식하도록 최적화되어 있습니다. 사용자가 말할 수 있는 항목의 종류를 제한하지 않으려면 자유 텍스트 받아쓰기를 사용합니다. 일반적인 용도로는 노트 만들기 또는 메시지 내용 받아쓰기 등이 있습니다.
  • 받아쓰기 문법과 같은 웹 검색 문법에는 사용자가 말할 수 있는 많은 단어와 구가 포함되어 있습니다. 그러나 사용자가 웹을 검색할 때 일반적으로 사용하는 용어를 인식하도록 최적화되어 있습니다.

메모

미리 정의된 받아쓰기 및 웹 검색 문법은 클 수 있으며, 디바이스가 아닌 온라인 상태이기 때문에 디바이스에 설치된 사용자 지정 문법만큼 성능이 빠르지 않을 수 있습니다.

이러한 미리 정의된 문법은 최대 10초의 음성 입력을 인식할 수 있으며 작성 작업이 필요하지 않습니다. 그러나 네트워크에 연결해야 합니다.

사용자 지정 문법

사용자 지정 문법을 디자인 및 작성하고 앱과 함께 설치합니다. 디바이스는 사용자 지정 제약 조건을 사용하여 음성 인식을 수행합니다.

  • 프로그래밍 방식 목록 제약 조건은 단어 또는 구 목록을 사용하여 간단한 문법을 만드는 간단한 방법을 제공합니다. 목록 제약 조건은 짧고 고유한 구를 인식하는 데 적합합니다. 음성 인식 엔진이 일치를 확인하기 위해 음성만 처리해야 하므로 문법에서 모든 단어를 명시적으로 지정하면 인식 정확도가 향상됩니다. 프로그래밍 방식으로 목록을 업데이트할 수도 있습니다.

  • SRGS 문법은 프로그래밍 방식 목록 제약 조건과 달리 SRGS 버전 1.0에서 정의된 XML 형식을 사용하는 정적 문서입니다. SRGS 문법은 단일 인식에서 여러 의미 체계 의미를 캡처할 수 있도록 하여 음성 인식 환경에 대한 가장 큰 제어를 제공합니다.

    다음은 SRGS 문법 작성을 위한 몇 가지 팁입니다.

    • 각 문법을 작게 유지합니다. 구가 적은 문법은 많은 구를 포함하는 큰 문법보다 더 정확한 인식을 제공하는 경향이 있습니다. 전체 앱에 대한 단일 문법을 갖는 것보다 특정 시나리오에 대해 몇 가지 작은 문법을 사용하는 것이 좋습니다.
    • 사용자에게 각 앱 컨텍스트에 대해 무엇을 말해야 하는지 알리고 필요에 따라 문법을 사용하거나 사용하지 않도록 설정합니다.
    • 사용자가 다양한 방법으로 명령을 말할 수 있도록 각 문법을 디자인합니다. 예를 들어 , 가비지 규칙을 사용하여 문법에서 정의하지 않는 음성 입력을 일치시킬 수 있습니다. 이 규칙을 사용하면 사용자가 앱에 아무런 의미가 없는 추가 단어를 말할 수 있습니다. 예를 들어 "나에게 줘", "그리고", "음", "아마도" 등이 있습니다.
    • sapi:subset 요소를 사용하여 음성 입력을 일치시킬 수 있습니다. 이 요소는 부분 구를 일치시킬 수 있도록 SRGS 사양에 대한 Microsoft 확장입니다.
    • 하나의 음절만 포함하는 문법에서 구를 정의하지 않도록 합니다. 인식은 둘 이상의 음절을 포함하는 구에 대해 더 정확한 경향이 있습니다.
    • 비슷한 구를 사용하지 마십시오. 예를 들어 "hello", "bellow" 및 "fellow"와 같은 구문은 인식 엔진을 혼동하여 인식 정확도가 떨어질 수 있습니다.

메모

사용 중인 제약 조건 유형은 만들려는 인식 환경의 복잡성에 따라 달라집니다. 모든 형식이 특정 인식 작업에 가장 적합한 선택일 수 있으며 앱에서 모든 유형의 제약 조건에 대한 용도를 찾을 수 있습니다.

사용자 지정 발음

앱에 특이하거나 허구적인 단어가 포함된 특수 어휘 또는 일반적이지 않은 발음이 있는 단어가 포함된 경우 사용자 지정 발음을 정의하여 해당 단어에 대한 인식 성능을 향상시킬 수 있습니다.

작은 단어 및 구 목록 또는 자주 사용되지 않는 단어 및 구 목록의 경우 SRGS 문법에서 사용자 지정 발음을 만듭니다. 자세한 내용은 토큰 요소를 참조하세요.

단어와 구의 더 큰 목록 또는 자주 사용되는 단어와 구의 경우 별도의 발음 어휘 문서를 만듭니다. 자세한 내용은 어휘 및 음성 알파벳을 참조하세요.

Testing

앱의 대상 그룹을 사용하여 음성 인식 정확도 및 지원 UI를 테스트합니다. 이 방법을 사용하면 앱에서 음성 상호 작용 환경이 얼마나 효과적인지 확인할 수 있습니다. 예를 들어 앱이 일반적인 문구를 수신하지 않기 때문에 사용자가 인식 결과가 좋지 않나요?

이 구를 지원하도록 문법을 수정하거나 사용자에게 지원되는 구 목록을 제공합니다. 지원되는 구 목록을 이미 제공하는 경우 사용자가 쉽게 찾을 수 있는지 확인합니다.

TTS(텍스트 음성 변환)

TTS는 일반 텍스트 또는 SSML에서 음성 출력을 생성합니다.

예의 바르고 고무적인 프롬프트를 디자인해 보세요.

긴 텍스트 문자열을 읽어야 하는지 여부를 고려합니다. 문자 메시지를 듣는 것은 한 가지이지만 기억하기 어려운 긴 검색 결과 목록을 듣는 것은 또 다른 것입니다.

사용자가 TTS를 일시 중지하거나 중지할 수 있도록 미디어 컨트롤을 제공합니다.

모든 TTS 문자열을 수신 대기하여 이해할 수 있고 자연스러운 소리를 내는지 확인합니다.

  • 비정상적인 단어 배열이나 숫자, 또는 문장 부호를 함께 사용하면 문장이 이해되지 않을 수 있습니다.
  • 음성은 원어민이 문구를 말하는 운율이나 리듬이 다를 때 부자연스럽게 들릴 수 있습니다.

일반 텍스트 대신 SSML을 사용하여 음성 신시사이저에 대한 입력으로 두 문제를 모두 해결할 수 있습니다. SSML에 대한 자세한 내용은 SSML을 사용하여 합성된 음성을 제어하는 방법음성 합성 마크업 언어 정보를 참조하세요.

견본