다음을 통해 공유


음성 조작

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

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

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

다른 음성 관련 구성 요소:Cortana(Windows 애플리케이션)는 사용자 지정된 음성 명령(음성 또는 입력)을 사용하여 앱을 포어그라운드에 실행하거나(시작 메뉴에서 시작된 것처럼 앱에 포커스가 지정됨) 백그라운드 서비스로 활성화(Cortana에 포커스가 유지되지만 앱의 결과가 표시됨)합니다. Windows 앱에서 Cortana 상호 작용을 참조 하세요.

음성 상호 작용 디자인

신중하게 설계하고 구현한 음성을 통해 사람들은 효과적이고 즐겁게 앱을 조작할 수 있으며, 음성으로 키보드, 마우스, 터치 및 제스처를 보완하거나 심지어 대체할 수 있습니다.

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

앱에서 음성 상호 작용을 지원하는 것을 고려 중인 경우:

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

문자 입력

텍스트 입력에 대한 음성은 짧은 형식(단일 단어 또는 구)에서 긴 형식(연속 받아쓰기)에 이르기까지 다양할 수 있습니다. 짧은 폼 입력은 길이가 10초 미만이어야 하며 긴 양식 입력 세션의 길이는 최대 2분입니다. (긴 양식 입력은 사용자 개입 없이 다시 시작하여 연속 받아쓰기를 하는 듯한 인상을 줄 수 있습니다.)

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

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

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

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

음성 입력이 인식이 끝났다는 것을 나타내는 시간 길이를 지정합니다. 일반적으로 사용자가 앱에 대한 참여를 중지했음을 나타내기 때문에 이 기간 후에 인식이 자동으로 다시 시작되지 않습니다.

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

명령

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

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

가능한 한 구체적인 응답을 유도하도록 질문을 구성해 보세요. 예를 들어 "지금 어떤 작업을 수행하시겠습니까?"는 매우 개방적이어서 응답이 크게 달라질 수 있으므로 매우 큰 문법 정의가 필요합니다. 또는 "게임을 재생하거나 음악을 들으시겠습니까?"는 작은 문법 정의를 사용하여 두 개의 유효한 답변 중 하나로 응답을 제한합니다. 작은 문법은 작성하기 훨씬 쉽고 훨씬 더 정확한 인식 결과를 생성합니다.

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

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

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

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

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

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

    • 수신 대기 화면입니다.
    • 고려하기 화면입니다.
    • 사용자가 말하는 소리 듣기 화면 또는 오류 화면입니다.
  • 단어 또는 구 목록 또는 SRGS 문법 파일

    • 수신 대기 화면입니다.
    • 사용자가 말한 내용이 둘 이상의 잠재적 결과로 해석될 수 있는 경우 Did you say 화면이 표시됩니다.
    • 사용자가 말하는 소리 듣기 화면 또는 오류 화면입니다.

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

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

다음은 SRGS 정의 제약 조건을 사용하는 음성 인식기에 대한 기본 제공 인식 흐름의 예입니다. 이 예제에서는 음성 인식이 성공합니다.

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

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

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

항상 듣기

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

앱 컨텍스트에 따라 문법 제약 조건을 사용자 지정해야 합니다. 이렇게 하면 음성 인식 환경이 현재 작업과 매우 타겟팅되고 관련성이 유지되며 오류를 최소화할 수 있습니다.

"이렇게 말 하세요~"

음성 입력이 활성화되면 사용자가 정확히 무엇을 이해할 수 있고 어떤 작업을 수행할 수 있는지 파악할 수 있도록 돕는 것이 중요합니다.

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

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

인식 실패

음성 인식이 실패합니다. 오디오 품질이 좋지 않거나, 구의 일부만 인식되거나, 입력이 전혀 검색되지 않을 때 오류가 발생합니다.

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

앱은 사용자에게 인식되지 않았으며 다시 시도해야 한다는 사실을 알려야 합니다.

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

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

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

기본 제공 음성 인식 환경에는 인식에 실패했음을 알리고 사용자가 다시 인식을 시도할 수 있도록 하는 화면이 포함되어 있으므로 이를 활용하세요.

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

제약 조건

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

미리 정의된 문법

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

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

참고 항목

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

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

사용자 지정 문법

사용자 지정 문법은 사용자가 설계하고 작성하며 앱과 함께 설치됩니다. 사용자 지정 제약 조건을 사용하는 음성 인식은 디바이스에서 수행됩니다.

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

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

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

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

참고 항목

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

사용자 지정 발음

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

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

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

테스트

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

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

텍스트 음성 변환 (TTS)

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

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

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

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

모든 TTS 문자열을 수신 대기해야 이해할 수 있고 자연스럽게 들리는지 확인할 수 있습니다.

  • 비정상적인 단어의 순서를 조합하거나 부분 번호 또는 문장 부호를 말하면 구를 이해할 수 없게 될 수 있습니다.
  • 운율이나 리듬이 원어민이 말하는 방식과 다르면 음성이 부자연스럽게 들릴 수 있습니다.

두 문제 모두 일반 텍스트 대신 SSML을 음성 신시사이저에 대한 입력으로 사용하여 해결할 수 있습니다. SSML에 대한 자세한 내용은 SSML을 사용하여 합성된 음성Speech Synthesis Markup Language Reference를 제어합니다.

항목 설명
음성 인식 음성 인식을 사용하여 입력을 제공하고, 작업 또는 명령을 지정하고, 작업을 수행합니다.
음성 인식기 언어 지정 음성 인식에 사용할 설치된 언어를 선택하는 방법을 알아봅니다.
사용자 지정 인식 제약 조건 정의 음성 인식에 대한 사용자 지정 제약 조건을 정의하고 사용하는 방법을 알아봅니다.
연속 받아쓰기 사용 긴 형식의 연속 받아쓰기 음성 입력을 캡처하고 인식하는 방법을 알아봅니다.
오디오 입력 관련 문제 관리 오디오 입력 품질로 인한 음성 인식 정확도 문제를 관리하는 방법을 알아봅니다.
음성 인식 시간 제한 설정 음성 인식기가 침묵 또는 인식할 수 없는 소리(babble)를 무시하고 음성 입력을 계속 듣는 기간을 설정합니다.

 샘플