음성 인식 및 텍스트 음성 변환(TTS 또는 음성 합성이라고도 함)을 앱의 사용자 환경에 직접 통합합니다.
음성 인식 음성 인식은 사용자가 말하는 단어를 양식 입력, 텍스트 받아쓰기, 작업 또는 명령 지정 및 작업 수행을 위한 텍스트로 변환합니다. 자유 텍스트 받아쓰기 및 웹 검색에 대해 미리 정의된 문법과 SRGS(Speech Recognition Grammar Specification) 버전 1.0을 사용하여 작성한 사용자 지정 문법이 모두 지원됩니다.
TTS TTS는 음성 합성 엔진(음성)을 사용하여 텍스트 문자열을 음성 단어로 변환합니다. 입력 문자열은 기본, 장식되지 않은 텍스트 또는 더 복잡한 SSML(Speech Synthesis Markup Language)일 수 있습니다. SSML은 발음, 볼륨, 피치, 속도 또는 속도 및 강조와 같은 음성 출력의 특성을 제어하는 표준 방법을 제공합니다.
기타 음성 관련 구성 요소:Windows 애플리케이션의 Cortana는 사용자 지정된 음성 명령(음성 또는 형식)을 사용하여 앱을 포그라운드로 시작하거나(앱이 시작 메뉴에서 시작된 것처럼 포커스를 받음) 백그라운드 서비스로 활성화합니다(Cortana는 포커스를 유지하지만 앱의 결과를 제공합니다). Windows 앱에서 Cortana 상호 작용을 참조하세요.
음성 상호 작용 디자인
신중하게 설계되고 구현된 음성은 사용자가 앱과 상호 작용하거나 키보드, 마우스, 터치 및 제스처를 보완하거나 교체할 수 있는 강력하고 즐거운 방법이 될 수 있습니다.
이러한 지침 및 권장 사항은 음성 인식과 TTS를 앱의 상호 작용 환경에 가장 잘 통합하는 방법을 설명합니다.
앱에서 음성 상호 작용을 지원하는 것을 고려 중인 경우:
- 음성을 통해 수행할 수 있는 작업은 무엇인가요? 사용자가 페이지 사이를 탐색하거나, 명령을 호출하거나, 데이터를 텍스트 필드, 간략한 메모 또는 긴 메시지로 입력할 수 있나요?
- 음성 입력이 작업을 완료하는 데 적합한 옵션인가요?
- 사용자가 음성 입력을 사용할 수 있는 시기를 어떻게 알 수 있나요?
- 앱이 항상 수신 대기 중입니까, 아니면 사용자가 앱이 수신 모드로 전환되도록 조치를 취해야 합니까?
- 행동이나 동작을 시작하는 구문은 무엇인가요? 구와 동작을 화면에 열거해야 합니까?
- 프롬프트, 확인 및 명확성 화면 또는 TTS가 필요한가요?
- 앱과 사용자 간의 상호 작용 대화는 무엇인가요?
- 앱 컨텍스트에 사용자 지정 또는 제한된 어휘(예: 의학, 과학 또는 로캘)가 필요한가요?
- 네트워크 연결이 필요한가요?
문자 입력
텍스트 입력에 대한 음성은 짧은 형식(단일 단어 또는 구)에서 긴 형식(연속 받아쓰기)에 이르기까지 다양할 수 있습니다. 짧은 폼 입력은 길이가 10초 미만이어야 하며 긴 양식 입력 세션의 길이는 최대 2분입니다. (긴 양식 입력은 사용자 개입 없이 다시 시작하여 연속 받아쓰기의 인상을 줄 수 있습니다.)
음성 인식이 지원되고 사용자가 사용할 수 있음을 나타내고 사용자가 음성 인식을 켜야 하는지 여부를 나타내는 시각적 신호를 제공해야 합니다. 예를 들어 마이크 문자 모양이 있는 명령 모음 단추( 명령 모음 참조)를 사용하여 가용성과 상태를 모두 표시할 수 있습니다.
인식이 수행되는 동안 명백한 응답 부족을 최소화하기 위해 지속적인 인식 피드백을 제공합니다.
사용자가 키보드 입력, 명확성 프롬프트, 제안 또는 추가 음성 인식을 사용하여 인식 텍스트를 수정할 수 있습니다.
터치 또는 키보드와 같은 음성 인식 이외의 장치에서 입력이 감지되면 인식을 중지합니다. 이는 사용자가 인식 텍스트를 수정하거나 다른 양식 필드와 상호 작용하는 등 다른 작업으로 이동했음을 나타냅니다.
비음성 입력이 인식 종료를 나타내도록 지정할 시간 길이를 설정합니다. 일반적으로 사용자가 앱에 대한 참여를 중지했음을 나타내기 때문에 이 기간 후에 인식이 자동으로 다시 시작되지 않습니다.
모든 연속 인식 UI를 사용하지 않도록 설정하고 네트워크 연결을 사용할 수 없는 경우 인식 세션을 종료합니다. 연속 인식에는 네트워크 연결이 필요합니다.
지휘
음성 입력은 작업을 시작하고, 명령을 호출하고, 작업을 수행할 수 있습니다.
공간이 허용되는 경우 유효한 입력 예제와 함께 현재 앱 컨텍스트에 대해 지원되는 응답을 표시하는 것이 좋습니다. 이렇게 하면 앱에서 처리해야 하는 잠재적인 응답이 줄어들고 사용자에 대한 혼동도 제거됩니다.
가능한 한 구체적인 응답을 유도하도록 질문을 구성해 보세요. 예를 들어 "오늘 무엇을 하고 싶습니까?"는 매우 개방형이며 응답이 얼마나 다양할 수 있기 때문에 매우 큰 문법 정의가 필요합니다. 또는 "게임을 플레이하거나 음악을 들으세요?"는 해당하는 작은 문법 정의로 두 가지 유효한 답변 중 하나에 대한 응답을 제한합니다. 작은 문법은 작성하기 훨씬 쉽고 훨씬 더 정확한 인식 결과를 생성합니다.
음성 인식 신뢰도가 낮은 경우 사용자에게 확인을 요청합니다. 사용자의 의도가 명확하지 않은 경우 의도하지 않은 작업을 시작하는 것보다 설명을 얻는 것이 좋습니다.
음성 인식이 지원되고 사용자가 사용할 수 있음을 나타내고 사용자가 음성 인식을 켜야 하는지 여부를 나타내는 시각적 신호를 제공해야 합니다. 예를 들어 마이크 문자 모양이 있는 명령 모음 단추( 명령 모음에 대한 지침 참조)를 사용하여 가용성과 상태를 모두 표시할 수 있습니다.
음성 인식 스위치가 일반적으로 표시되지 않으면 앱의 콘텐츠 영역에 상태 표시기를 표시하는 것이 좋습니다.
사용자가 인식을 시작하는 경우 일관성을 위해 기본 제공 인식 환경을 사용하는 것이 좋습니다. 기본 제공 환경에는 프롬프트, 예제, 명확성, 확인 및 오류가 있는 사용자 지정 가능한 화면이 포함됩니다.
화면은 지정된 제약 조건에 따라 달라집니다.
미리 정의된 문법(받아쓰기 또는 웹 검색)
- 청취 화면
- 생각 화면입니다.
- 말한 내용을 들었습니다 화면 또는 오류 화면.
단어 또는 구 목록 또는 SRGS 문법 파일
- 청취 화면.
- 이렇게 말했습니까? 화면은 사용자가 말한 내용이 둘 이상의 잠재적 결과로 해석될 수 있는 경우에 표시됩니다.
- 당신이 말하는 소리 화면 또는 오류 화면.
수신 대기 화면에서 다음을 수행할 수 있습니다.
- 제목 텍스트를 사용자 지정합니다.
- 사용자가 말할 수 있는 내용의 예제 텍스트를 제공합니다.
- Heard you say 화면이 표시되는지 여부를 지정합니다.
- Heard you say 화면에서 인식된 문자열을 사용자에게 다시 읽어줍니다.
다음은 SRGS 정의 제약 조건을 사용하는 음성 인식기에 대한 기본 제공 인식 흐름의 예입니다. 이 예제에서는 음성 인식이 성공합니다.
항상 듣기
앱은 사용자 개입 없이 앱이 시작되는 즉시 음성 입력을 수신 대기하고 인식할 수 있습니다.
앱 컨텍스트에 따라 문법 제약 조건을 사용자 지정해야 합니다. 이렇게 하면 음성 인식 환경이 현재 작업과 매우 타겟팅되고 관련성이 유지되며 오류가 최소화됩니다.
"무슨 말을 할 수 있니?"
음성 입력을 사용하는 경우 사용자가 정확히 이해할 수 있는 항목과 수행할 수 있는 작업을 검색할 수 있도록 하는 것이 중요합니다.
음성 인식을 사용하는 경우 명령 모음 또는 메뉴 명령을 사용하여 현재 컨텍스트에서 지원되는 모든 단어와 구를 표시하는 것이 좋습니다.
음성 인식이 항상 켜진 경우 모든 페이지에 "무엇을 말할 수 있습니까?"라는 문구를 추가하는 것이 좋습니다. 사용자가 이 구를 말하면 현재 컨텍스트에서 지원되는 모든 단어와 구를 표시합니다. 이 구를 사용하면 사용자가 시스템 전체에서 음성 기능을 검색할 수 있는 일관된 방법이 제공됩니다.
인식 실패
음성 인식이 실패합니다. 오디오 품질이 좋지 않거나, 구의 일부만 인식되거나, 입력이 전혀 검색되지 않을 때 오류가 발생합니다.
오류를 정상적으로 처리하고, 사용자가 인식이 실패한 이유를 이해하고, 복구할 수 있도록 도와주세요.
앱은 사용자에게 인식되지 않았으며 다시 시도해야 한다는 사실을 알려야 합니다.
하나 이상의 지원되는 구의 예를 제공하는 것이 좋습니다. 사용자는 제안된 구를 반복하여 인식 성공을 높일 수 있습니다.
사용자가 선택할 수 있는 잠재적 일치 항목 목록을 표시해야 합니다. 이는 인식 프로세스를 다시 진행하는 것보다 훨씬 더 효율적일 수 있습니다.
항상 대체 입력 형식을 지원해야 하며, 이는 반복되는 인식 오류를 처리하는 데 특히 유용합니다. 예를 들어 사용자가 키보드를 사용하거나 터치 또는 마우스를 사용하여 잠재적 일치 항목 목록에서 선택하도록 제안할 수 있습니다.
사용자에게 인식이 성공하지 못했음을 알리고 사용자가 다른 인식을 시도할 수 있도록 하는 화면이 포함되어 있으므로 기본 제공 음성 인식 환경을 사용합니다.
오디오 입력의 문제를 청취하고 수정합니다. 음성 인식기에서는 음성 인식 정확도에 부정적인 영향을 줄 수 있는 오디오 품질 문제를 감지할 수 있습니다. 음성 인식기에서 제공하는 정보를 사용하여 사용자에게 문제를 알리고 가능한 경우 수정 작업을 수행하도록 할 수 있습니다. 예를 들어 마이크의 볼륨 설정이 너무 낮으면 사용자에게 더 크게 말하거나 볼륨을 높이라는 메시지를 표시할 수 있습니다.
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을 사용하여 합성된 음성을 제어하는 방법 및 음성 합성 마크업 언어 정보를 참조하세요.
이 섹션의 다른 문서
| 주제 | Description |
|---|---|
| 음성 인식 | 음성 인식을 사용하여 입력을 제공하고, 작업 또는 명령을 지정하고, 작업을 수행합니다. |
| 음성 인식기 언어 지정 | 음성 인식에 사용할 설치된 언어를 선택하는 방법을 알아봅니다. |
| 사용자 지정 인식 제약 조건 정의 | 음성 인식에 대한 사용자 지정 제약 조건을 정의하고 사용하는 방법을 알아봅니다. |
| 연속 받아쓰기 사용 | 긴 형식의 연속 받아쓰기 음성 입력을 캡처하고 인식하는 방법을 알아봅니다. |
| 오디오 입력 관련 문제 관리 | 오디오 입력 품질로 인한 음성 인식 정확도 문제를 관리하는 방법을 알아봅니다. |
| 음성 인식 시간 제한 설정 | 음성 인식기가 침묵 또는 인식할 수 없는 소리(babble)를 무시하고 음성 입력을 계속 듣는 기간을 설정합니다. |
관련 문서
견본
Windows developer