KR20200123495A - 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 - Google Patents
대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 Download PDFInfo
- Publication number
- KR20200123495A KR20200123495A KR1020190042285A KR20190042285A KR20200123495A KR 20200123495 A KR20200123495 A KR 20200123495A KR 1020190042285 A KR1020190042285 A KR 1020190042285A KR 20190042285 A KR20190042285 A KR 20190042285A KR 20200123495 A KR20200123495 A KR 20200123495A
- Authority
- KR
- South Korea
- Prior art keywords
- conversation
- action
- user
- chat room
- utterance
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title description 10
- 238000012545 processing Methods 0.000 title description 7
- 230000009471 action Effects 0.000 claims description 201
- 230000004044 response Effects 0.000 claims description 71
- 238000000034 method Methods 0.000 claims description 45
- 230000000875 corresponding effect Effects 0.000 description 29
- 230000007787 long-term memory Effects 0.000 description 20
- 230000006403 short-term memory Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 230000015654 memory Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 208000030016 Avascular necrosis Diseases 0.000 description 1
- 241000287181 Sturnus vulgaris Species 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 210000003195 fascia Anatomy 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 235000014594 pastries Nutrition 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L17/00—Speaker identification or verification techniques
- G10L17/22—Interactive procedures; Man-machine interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/16—Sound input; Sound output
- G06F3/167—Audio in a user interface, e.g. using voice commands for navigating, audio feedback
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/04—Segmentation; Word boundary detection
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/06—Creation of reference templates; Training of speech recognition systems, e.g. adaptation to the characteristics of the speaker's voice
- G10L15/063—Training
- G10L2015/0635—Training updating or merging of old and new templates; Mean values; Weighting
Landscapes
- Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Acoustics & Sound (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
개시된 일 실시예에 따른 대화 시스템은 차량 내부의 영상을 촬영하는 카메라; 적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하는 저장부; 및 상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고, 상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 입력 처리기;를 포함한다.
Description
개시된 발명은 사용자와의 대화를 통해 사용자의 의도를 파악하고 사용자에게 필요한 정보나 서비스를 제공하는 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법에 관한 것이다.
차량용 AVN이나 대부분의 모바일 기기는 작은 화면 및 작은 버튼으로 인해, 사용자에게 시각적인 정보를 제공하거나 사용자의 입력을 수신함에 있어 불편함이 발생할 수 있다. 특히, 사용자가 운전 중 시각적인 정보를 확인하거나 기기를 조작하기 위해, 시선을 이동시키고 스티어링 휠에서 손을 떼는 것은 안전 운전에 위협이 되는 요소로 작용한다. 따라서, 사용자와의 대화를 통해 사용자의 의도를 파악하고, 사용자에게 필요한 서비스를 제공하는 대화 시스템이 차량에 적용될 경우 보다 안전하고 편리하게 서비스를 제공할 수 있을 것으로 기대된다.
한편, 운전자 이외에도 여러 명의 동승자가 대화 시스템이 설치된 차량에 탑승할 수 있다. 여러 명의 동승자와 운전자는 서로 대화를 주고 받을 수 있으며, 대화 시스템은, 사용자의 발화가 대화 시스템에게 말하는 것인지 아니면 다른 동승자에게 발화하는 것인지 여부를 판단할 필요가 있다.
종래에는 PTT(Push To Talk)와 같은 버튼 또는 특정 호출어를 사용함으로써, 사용자의 발화를 처리하였다.
개시된 일 실시예에 따르면, 대화의 흐름과 함께 차량에 마련된 외부 장치를 통해 사용자의 발화에 대한 청자를 구별함으로써, 별도의 동작 없이도 대화 시스템에게 명령을 전달할 수 있고, 신뢰성 및 편리성을 향상시키는 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법에 관한 것이다.
개시된 일 실시예에 따른 대화 시스템은 차량 내부의 영상을 촬영하는 카메라; 적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하는 저장부; 및 상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고, 상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 입력 처리기;를 포함한다.
상기 입력 처리기는, 상기 사용자의 발화의 발화 의도를 파악하고, 상기 발화 의도 및 상기 대화 히스토리에 포함된 대화 주제에 기초하여 대화방의 참여자 또는 상기 대화 시스템에 점수를 부여할 수 있다.
상기 입력 처리기는, 상기 촬영된 영상에 포함된 사용자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나에 기초하여 상대방이 있는지 여부를 판단할 수 있다.
상기 입력 처리기는, 상기 판단된 상대방이 상기 대화방에 포함되면, 상기 대화 히스토리에 기초하여 상기 상대방에 제1 가중치를 부여할 수 있다.
상기 입력 처리기는, 상기 상대방을 제외한 상기 대화방의 참여자에 제2 가중치를 부여할 수 있다.
상기 입력 처리기는, 상기 판단된 상대방이 상기 대화방에서 포함되지 않으면, 상기 대화방의 참여자에게 제3 가중치를 부여할 수 있다.
상기 입력 처리기는, 상기 상대방이 존재하지 않으면, 상기 대화 히스토리에 기초하여 상기 대화방의 참여자 및 상기 대화 시스템에 점수를 부여할 수 있다.
상기 입력 처리기는, 상기 대화 시스템 또는 상기 대화방의 참여자 중 상기 부여된 점수가 최대인 대상을 청자로 선택할 수 있다.
상기 결정된 청자가 상기 대화 시스템인 경우, 상기 사용자의 발화에 대응되는 액션의 수행 가부를 판단하는데 사용되는 조건 판단 인자의 인자 값을 상기 저장부로터 획득하고, 상기 조건 판단 인자의 인자 값에 기초하여 수행할 액션을 결정하고, 상기 결정된 액션을 수행하는데 사용되는 액션 인자의 인자 값을 상기 저장부로부터 획득하는 대화 관리기; 및 상기 획득된 액션 인자의 인자 값을 이용하여 상기 결정된 액션을 수행하기 위한 응답을 생성하는 결과 처리기;를 더 포함할 수 있다.
개시된 다른 실시예에 따른 대화 처리 방법은 차량 내부의 영상을 촬영하고; 적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하고; 상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고; 및 상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 것;을 포함한다.
상기 결정하는 것은, 상기 사용자의 발화의 발화 의도를 파악하고, 상기 발화 의도 및 상기 대화 히스토리에 포함된 대화 주제에 기초하여 대화방의 참여자 또는 상기 대화 시스템에 점수를 부여하는 것;을 포함할 수 있다.
상기 판단하는 것은,
상기 촬영된 영상에 포함된 사용자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나에 기초하여 상대방이 있는지 여부를 판단하는 것;을 포함할 수 있다.
상기 결정하는 것은, 상기 판단된 상대방이 상기 대화방에 포함되면, 상기 대화 히스토리에 기초하여 상기 상대방에 제1 가중치를 부여하고; 상기 상대방을 제외한 상기 대화방의 참여자에 제2 가중치를 부여하는 것;을 포함할 수 있다.
상기 결정하는 것은, 상기 판단된 상대방이 상기 대화방에서 포함되지 않으면, 상기 대화방의 참여자에게 제3 가중치를 부여하는 것;을 포함할 수 있다.
상기 결정하는 것은, 상기 상대방이 존재하지 않으면, 상기 대화 히스토리에 기초하여 상기 대화방의 참여자 및 상기 대화 시스템에 점수를 부여할 수 있다.
상기 결정하는 것은, 상기 대화 시스템 또는 상기 대화방의 참여자 중 상기 부여된 점수가 최대인 대상을 청자로 선택하는 것;을 포함할 수 있다.
개시된 또 다른 실시예에 따른 차량은 차량 내부의 영상을 촬영하는 카메라; 적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하는 저장부; 상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고, 상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 입력 처리기;를 포함한다.
상기 입력 처리기는, 상기 사용자의 발화의 발화 의도를 파악하고, 상기 발화 의도 및 상기 대화 히스토리에 포함된 대화 주제에 기초하여 대화방의 참여자 또는 상기 대화 시스템에 점수를 부여할 수 있다.
상기 입력 처리기는, 상기 촬영된 영상에 포함된 사용자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나에 기초하여 상대방이 있는지 여부를 판단할 수 있다.
상기 입력 처리기는, 상기 판단된 상대방이 상기 대화방에 포함되면, 상기 대화 히스토리에 기초하여 상기 상대방에 제1 가중치를 부여하고, 상기 상대방을 제외한 상기 대화방의 참여자에 제2 가중치를 부여하고, 상기 판단된 상대방이 상기 대화방에서 포함되지 않으면, 상기 대화방의 참여자에게 제3 가중치를 부여할 수 있다.
상기 입력 처리기는, 상기 대화 시스템 또는 상기 대화방의 참여자 중 상기 부여된 점수가 최대인 대상을 청자로 선택할 수 있다.
상기 결정된 청자가 상기 대화 시스템인 경우, 상기 사용자의 발화에 대응되는 액션의 수행 가부를 판단하는데 사용되는 조건 판단 인자의 인자 값을 상기 저장부로터 획득하고, 상기 조건 판단 인자의 인자 값에 기초하여 수행할 액션을 결정하고, 상기 결정된 액션을 수행하는데 사용되는 액션 인자의 인자 값을 상기 저장부로부터 획득하는 대화 관리기; 및 상기 획득된 액션 인자의 인자 값을 이용하여 상기 결정된 액션을 수행하기 위한 응답을 생성하는 결과 처리기;를 더 포함할 수 있다.
개시된 일 실시예에 따른 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법은 대화의 흐름과 함께 차량에 마련된 외부 장치를 통해 사용자의 발화에 대한 청자를 구별함으로써, 별도의 동작 없이도 대화 시스템에게 명령을 전달할 수 있고, 신뢰성 및 편리성을 향상시킬 수 있다.
도 1은 일 실시예에 따른 대화 시스템의 제어 블록도이다.
도 2는 차량 내부의 구성을 나타낸 도면이다.
도 3 및 도 4는 개시된 대화 시스템이 청자가 누구인지 여부를 판단하고, 이에 대답하는 대화의 예시를 나타낸 도면이다.
도 5 는 대화 시스템의 구성 중, 입력 처리기의 구성을 세분화한 제어 블록도이고, 도 6은 입력 처리기의 구성 요소들이 저장부의 저장된 정보를 어떻게 처리하는지 구체적으로 설명하기 위한 도면이다.
도 7은 대화 관리기의 구성을 세분화한 제어 블록도이다.
도 8은 결과 처리기의 구성을 세분화한 제어 블록도이다.
도 9는 개시된 대화 처리 방법에 관한 순서도이다.
도 10은 발화 대상을 판단하는 대화 처리 방법의 구체적인 순서도이다.
도 2는 차량 내부의 구성을 나타낸 도면이다.
도 3 및 도 4는 개시된 대화 시스템이 청자가 누구인지 여부를 판단하고, 이에 대답하는 대화의 예시를 나타낸 도면이다.
도 5 는 대화 시스템의 구성 중, 입력 처리기의 구성을 세분화한 제어 블록도이고, 도 6은 입력 처리기의 구성 요소들이 저장부의 저장된 정보를 어떻게 처리하는지 구체적으로 설명하기 위한 도면이다.
도 7은 대화 관리기의 구성을 세분화한 제어 블록도이다.
도 8은 결과 처리기의 구성을 세분화한 제어 블록도이다.
도 9는 개시된 대화 처리 방법에 관한 순서도이다.
도 10은 발화 대상을 판단하는 대화 처리 방법의 구체적인 순서도이다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭한다. 본 명세서가 실시예들의 모든 요소들을 설명하는 것은 아니며, 본 발명이 속하는 기술분야에서 일반적인 내용 또는 실시예들 간에 중복되는 내용은 생략한다. 명세서에서 사용되는 '부, 모듈, 부재, 블록'이라는 용어는 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예들에 따라 복수의 '부, 모듈, 부재, 블록'이 하나의 구성요소로 구현되거나, 하나의 '부, 모듈, 부재, 블록'이 복수의 구성요소들을 포함하는 것도 가능하다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 간접적으로 연결되어 있는 경우를 포함하고, 간접적인 연결은 무선 통신망을 통해 연결되는 것을 포함한다.
또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함한다.
각 단계들에 붙여지는 부호는 각 단계들을 식별하기 위해 사용되는 것으로 이들 부호는 각 단계들 상호 간의 순서를 나타내는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 실시될 수 있다.
이하 첨부된 도면들을 참고하여 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법의 실시예를 상세하게 설명한다.
일 실시예에 따른 대화 시스템은 사용자의 음성 및 음성 외 입력을 이용하여 사용자의 의도를 파악하고 사용자의 의도에 적합한 서비스 또는 사용자에게 필요한 서비스를 제공하는 장치로서, 서비스 제공의 일 수단 또는 사용자의 의도를 명확히 파악하기 위한 일 수단으로 시스템 발화를 출력함으로써 사용자와 대화를 수행할 수 있다.
당해 실시예에서 사용자에게 제공되는 서비스는 정보의 제공, 차량의 제어, 오디오/비디오/내비게이션 기능의 실행, 외부 서버로부터 가져온 컨텐츠의 제공 등 사용자의 필요나 사용자의 의도에 부응하기 위해 수행되는 모든 동작을 포함할 수 있다.
또한, 일 실시예에 따른 대화 시스템은 차량 환경에 특화된 대화 처리 기술을 제공함으로써, 차량이라는 특수한 환경에서 사용자의 의도를 정확히 파악할 수 있다.
이러한 대화 시스템과 사용자를 연결하는 게이트 웨이는 차량 또는 차량에 연결된 모바일 기기가 될 수 있다. 후술하는 바와 같이, 대화 시스템은 차량에 마련될 수도 있고, 차량 외부의 원격 서버에 마련되어 차량 또는 차량에 연결된 모바일 기기와의 통신을 통해 데이터를 주고 받을 수도 있다.
또한, 대화 시스템의 구성 요소 중 일부는 차량에 마련되고 일부는 원격 서버에 마련되어 대화 시스템의 동작을 차량과 원격 서버에서 부분적으로 수행하는 것도 가능하다.
도 1은 일 실시예에 따른 대화 시스템의 제어 블록도이다.
도 1을 참조하면, 일 실시예에 따른 대화 시스템(100)은 사용자의 음성 및 음성 외 입력을 포함하는 사용자 입력이나 차량과 관련된 정보 또는 사용자와 관련된 정보를 포함하는 입력을 처리하는 입력 처리기(110), 입력 처리기(110)의 처리 결과를 이용하여 사용자의 의도를 파악하고, 사용자의 의도나 차량의 상태에 대응되는 액션을 결정하는 대화 관리기(120), 대화 관리기(120)의 출력 결과에 따라 특정 서비스를 제공하거나 대화를 계속 이어 나가기 위한 시스템 발화를 출력하는 결과 처리기(130) 및 대화 시스템(100)이 후술하는 동작을 수행하기 위해 필요한 각종 정보를 저장하는 저장부(140)를 포함한다.
입력 처리기(110)는 사용자 음성과 음성 외 입력, 두 가지 종류의 입력을 수신할 수 있다. 음성 외 입력은 사용자의 제스처 인식이나, 입력 장치의 조작을 통해 입력되는 사용자의 음성 외 입력, 차량 내부를 촬영한 영상과 함께 차량의 상태를 나타내는 차량 상태 정보, 차량의 주행 환경과 관련된 주행 환경 정보, 사용자의 상태를 나타내는 사용자 정보 등을 포함할 수 있다. 이러한 정보들 외에도 차량과 사용자와 관련된 정보로서, 사용자의 의도를 파악하거나 사용자에게 서비스를 제공하기 위해 사용될 수 있는 정보이면, 모두 입력 처리기(110)의 입력이 될 수 있다. 사용자는 운전자와 탑승자를 모두 포함할 수 있다.
입력 처리기(110)는 입력된 사용자 음성을 인식하여 텍스트 형태의 발화문으로 변환하고, 사용자의 발화문에 자연어 이해(Natural Language Understanding) 기술을 적용하여 사용자의 의도를 파악한다. 또한, 입력 처리기(110)는 사용자 음성 외에 차량의 상태나 주행 환경과 관련된 정보를 수집하고, 수집된 정보를 이용하여 상황을 이해한다.
이렇게 상황을 이해하는 입력 처리기(110)는 사용자의 음성을 통해 사용자의 의도를 파악하면서, 수집된 정보를 이용해 현재의 음성이 대화 시스템(100)에게 발화하는 것인지 아니면, 다른 동승자에게 발화하는 것인지 여부를 판단한다. 구체적으로 입력 처리기(110)는 상황 정보 중 차량 내부의 영상을 수신한다. 입력 처리기(110)는 저장된 대화 히스토리와 수신된 내부의 영상을 종합하여, 발화의 대상(이하 청자)를 인식한다. 이에 관한 구체적인 설명은 이하 다른 도면을 통해 후술한다.
입력 처리기(110)는 사용자의 발화의 대상이 대화 시스템(100)인 것으로 판단하면, 발화에서 파악한 사용자의 의도와 상황에 관련된 정보 등을 대화 관리기(120)로 전달한다.
대화 관리기(120)는 입력 처리기(110)로부터 전달된 사용자의 의도, 상황에 관련된 정보 등에 기초하여 사용자의 의도와 현재 상황에 대응되는 액션을 결정하고, 해당 액션을 수행하기 위해 필요한 인자들을 관리한다.
당해 실시예에서 액션은 특정 서비스를 제공하기 위해 수행되는 모든 동작을 의미할 수 있으며, 액션의 종류는 미리 정의될 수 있다. 경우에 따라, 서비스의 제공과 액션의 수행은 동일한 의미일 수 있다.
예를 들어, 도메인/액션 추론 규칙 DB(141,도 7 참조)에 길 안내, 차량 상태 점검, 주유소 추천 등과 같은 액션이 미리 정의될 수 있고, 저장된 추론 규칙에 따라 사용자의 발화에 대응되는 액션, 즉 사용자가 의도하는 액션을 미리 정의된 액션 중에서 추출할 수 있다.
액션의 종류에 대해서는 제한을 두지 않으며, 대화 시스템(100)이 차량(200)을 통해 수행 가능한 것으로서, 미리 정의되고, 그 추론 규칙이나 다른 액션/이벤트와의 관계 등이 저장되어 있으면 액션이 될 수 있다.
대화 관리기(120)는 결정된 액션에 관한 정보를 결과 처리기(130)로 전달한다.
결과 처리기(130)는 전달된 액션을 수행하기 위해 필요한 대화 응답 및 명령어를 생성하여 출력한다. 대화 응답은 텍스트, 이미지 또는 오디오로 출력될 수 있고, 명령어가 출력되면 출력된 명령어에 대응되는 차량 제어, 외부 컨텐츠 제공 등의 서비스가 수행될 수 있다.
저장부(140)는 대화 처리 및 서비스 제공에 필요한 각종 정보를 저장한다. 예를 들어, 자연어 이해에 사용되는 도메인, 액션, 화행, 개체명과 관련된 정보를 미리 저장할 수 있고, 차량 내부의 영상, 차량에 마련된 센서가 감지한 데이터, 사용자와 관련된 정보, 액션 수행을 위해 필요한 정보를 미리 저장할 수도 있다. 저장부(140)에 저장되는 정보들에 관한 더 자세한 설명은 후술하도록 한다.
전술한 바와 같이, 대화 시스템(100)은 차량 환경에 특화된 대화 처리 기술을 제공한다. 대화 시스템(100)의 구성요소가 전부 차량에 포함될 수도 있고, 일부만 포함될 수도 있다. 대화 시스템(100)은 원격 서버에 마련되고 차량은 대화 시스템(100)과 사용자 사이의 게이트웨이의 역할만 할 수도 있다. 어느 경우이던지, 대화 시스템(100)은 차량(200) 또는 차량과 연결된 모바일 기기(미도시)를 통해 사용자와 연결될 수 있다.
도 2는 차량 내부의 구성을 나타낸 도면이다.
도 2를 참조하면, 차량(200) 내부의 대시보드(201)의 중앙 영역인 센터페시아(203)에는 오디오 기능, 비디오 기능, 내비게이션 기능 또는 전화 걸기 기능을 포함하는 차량의 제어를 수행하기 위해 필요한 화면을 표시하는 디스플레이(231)와 사용자의 제어 명령을 입력 받기 위한 입력 버튼(221)이 마련될 수 있다.
또한, 운전자의 조작 편의성을 위해 스티어링 휠(207)에도 입력 버튼(223)이 마련될 수 있고, 운전석(254a)과 조수석(254b) 사이의 센터 콘솔 영역(202)에 입력 버튼의 역할을 수행하는 조그 셔틀(225)이 마련될 수도 있다.
디스플레이(231), 입력 버튼(221) 및 각종 기능을 전반적으로 제어하는 프로세서를 포함하는 모듈을 AVN(Audio Video Navigation) 단말이라 할 수도 있고, 헤드유닛(Head Unit)이라 할 수도 있다.
디스플레이(231)는 LCD(Liquid Crystal Display), LED(Light Emitting Diode), PDP(Plasma Display Panel), OLED(Organic Light Emitting Diode), CRT(Cathode Ray Tube) 등의 다양한 디스플레이 장치 중 하나로 구현될 수 있다.
입력 버튼(221)은 도 2에 도시된 바와 같이 디스플레이(231)와 인접한 영역에 하드 키 타입으로 마련될 수도 있고, 디스플레이(231)가 터치 스크린 타입으로 구현되는 경우에는 디스플레이(231)가 입력 버튼(221)의 기능도 함께 수행할 수 있다.
차량(200)은 사용자의 명령을 음성 입력 장치(210)를 통해 음성으로 입력 받을 수 있다. 음성 입력 장치(210)는 음향을 입력 받아 전기적인 신호로 변환하여 출력하는 마이크로폰을 포함할 수 있다.
효과적인 음성의 입력을 위하여 음성 입력 장치(210)는 도 2에 도시된 바와 같이 헤드라이닝(205)에 마련될 수 있으나, 실시예가 이에 한정되는 것은 아니며, 대시보드(201) 위에 마련되거나 스티어링 휠(207)에 마련되는 것도 가능하다. 이 외에도 사용자의 음성을 입력 받기에 적합한 위치이면 어디든 제한이 없다.
차량(200) 내부에는 사용자와 대화를 수행하거나, 사용자가 원하는 서비스를 제공하기 위해 필요한 음향을 출력하는 스피커(232)가 마련될 수 있다. 일 예로, 스피커(232)는 운전석 도어(253a) 및 조수석 도어(253b) 내측에 마련될 수 있다.
스피커(232)는 내비게이션 경로 안내를 위한 음성, 오디오/비디오 컨텐츠에 포함되는 음향 또는 음성, 사용자가 원하는 정보나 서비스를 제공하기 위한 음성, 사용자의 발화에 대한 응답으로서 생성된 시스템 발화 등을 출력할 수 있다.
카메라(241)는 차량 내부의 영상을 촬영하고, 찰영된 영상을 대화 시스템(100)으로 전달한다. 대화 시스템(100)은 전달된 영상을 분석하여, 현재 발화자의 얼굴 방향, 시선, 또는 제스처를 통해 발화의 청자가 누군인지 여부를 판단할 수 있다. 차량 내부의 영상을 촬영하기 위해서 일 예에 따른 카메라(241)는 헤드라이닝(205)에 설치될 수 있다. 그러나 반드시 카메라(241)가 헤드라이닝(205)에만 설치되는 것은 아니며, 복수 개로 마련되어 다양한 위치에 마련될 수 있다.
한편, 대화 시스템(100)은 도 2에서 언급한 차량(200) 내부에 마련된 다양한 장치를 이용하여 사용자의 발화가 대화 시스템(100)에게 발화하는 것인지 판단하고, 최적화된 서비스를 제공할 수 있다. 또한, 대화 시스템(100)은 커넥티드카(Connected Car), 사물인터넷(IoT), 인공지능(AI) 등의 기술을 이용한 새로운 서비스를 구성할 수 있다.
구체적으로 대화 시스템(100)과 같이 차량 환경에 특화된 대화 처리 기술을 적용할 경우, 운전자의 직접 주행 상황에서, 주요 상황(Context)에 대한 인지 및 대응이 용이하다. 유량 부족, 졸음 운전 등 주행에 영향을 미치는 요소에 가중치를 부여하여 서비스를 제공할 수 있고, 대부분의 경우 목적지로 이동 중인 조건을 기반으로 주행 시간, 목적지 정보 등 서비스 제공을 위해 필요한 정보를 용이하게 획득할 수 있다.
또한, 운전자의 의도를 파악하고, 기능을 제안하는 지능적인 서비스를 용이하게 구현할 수 있다. 이는 운전자의 직접 주행 상황에 있어 실시간 정보와 액션을 우선적으로 고려하기 때문이다. 일 예로, 주행 중에 운전자가 주유소를 검색하면, 이는 지금 주유소에 가겠다는 운전자의 의도로 해석될 수 있다. 그러나, 차량이 아닌 환경에서 주유소를 검색할 경우 지금 주유소를 가겠다는 의도 외에 위치 정보 조회, 전화번호 조회, 가격 조회 등 다른 다양한 의도로도 해석되는 것이 가능하다.
또한, 차량은 한정적인 공간이지만, 그 안에 다양한 상황이 존재할 수 있다. 예를 들어, 렌터카 등 생소한 인터페이스의 운전 상황, 대리 운전을 맡긴 상황, 세차 등 차량 관리 상황, 유아를 탑승시키는 상황, 특정 목적지를 찾아가는 상황 등에서 대화 시스템(100)을 활용할 수 있다.
또한, 차량 점검 단계, 출발 준비 단계, 주행 단계, 주차 단계 등 차량의 주행과 그 전후를 구성하는 각각의 단계에서도 다양한 서비스의 기회와 대화 상황들이 발생한다. 특히, 차량 문제의 대처 방안을 모르는 상황, 차량과 각종 외부 기기 연동 상황, 연비 등 주행 습관 확인 상황, 스마트 크루즈 컨트롤(Smart Cruise Control) 등의 안전 지원 기능 활용 상황, 내비게이션 조작 상황, 졸음 운전 상황, 매일 동일한 경로를 반복해서 주행하는 상황, 주정차가 가능한 곳인지 확인해야 하는 상황 등에서 대화 시스템(100)을 활용할 수 있다.
도 3 및 도 4는 개시된 대화 시스템이 청자가 누구인지 여부를 판단하고, 이에 대답하는 대화의 예시를 나타낸 도면이다.
도 3을 먼저 참조하면, 차량(200)에 탑승한 여러 명의 탑승자 중 보조석(254b)에 앉은 동승자(PA)는 현재 잔유량을 묻는 질문(U1: 지금 기름이 얼마나 남아있어?)을 발화할 수 있다.
대화 시스템(100)는 동승자(PA)의 발화를 통해 응답할지 여부를 결정할 수 있다. 대화 시스템(100)는 이전 대화의 히스토리를 통해서 발화(U1) 이전에 동승자(PA)와 운전석(254a)에 앉은 운전자(PB)가 대화 중인 것을 확인할 수 있다. 또한, 대화 시스템(100)은 수집되는 영상을 통해서 현재 동승자(PA)가 운전자(PB)를 처다보면서 운전자(PB)에게 손짓을 하는 영상을 분석할 수 있다. 대화 시스템(100)은 대화 히스토리와 영상을 통해 현재 동승자(PA)가 운전자(PB)에게 발화한 것이라고 판단할 수 있다.
운전자(PB)는 질문에 대한 대답(U2: 잠시만 확인해볼게)을 발화할 수 있고, 대화 시스템(100)은 판단 결과에 따라 현재 잔유량을 묻는 질문(U1)에 대답하지 않음으로써, 사용자들의 대화를 방해하지 않을 수 있다.
도 4를 참조하면, 보조석(254b)에 앉은 동승자(PA)는 현재 잔유량을 묻는 질문(U1: 지금 기름이 얼마나 남았어?)을 발화할 수 있다. 그러나 도 3과 달리, 대화 히스토리 상에서 동승자(PA)는 차량(200)내 다른 사용자와 대화하지 않았을 수 있다.
대화 시스템(100)은 동승자(PA)의 영상을 분석한 결과, 현재 동승자(PA)가 AVN(255) 장치를 응시하고, 대화 히스토리 상 다른 사용자와 대화와 현재의 발화(U1)가 상관이 없음을 확인할 수 있다.
대화 시스템(100)은 청자가 대화 시스템(100)인 것으로 판단한 후, 현재 잔유량에 대한 정보를 제공하는 발화(S1: 현재 남은 기름으로 43km 주행 가능합니다)를 출력할 수 있다.
도 5 는 대화 시스템의 구성 중, 입력 처리기의 구성을 세분화한 제어 블록도이고, 도 6은 입력 처리기의 구성 요소들이 저장부의 저장된 정보를 어떻게 처리하는지 구체적으로 설명하기 위한 도면이다.
도 5및 도6을 함께 참조하면, 입력 처리기(110)는 음성 입력을 처리하는 음성 입력 처리기(111) 및 상황 정보를 처리하는 상황 정보 처리기(112)를 포함할 수 있다.
음성 입력 장치(210)를 통해 입력된 사용자 음성은 음성 입력 처리기(111)로 전송되고, 음성 외 입력 장치(220)를 통해 입력된 음성 외 사용자 입력은 상황 정보 처리기(112)로 전송된다.
차량 제어기(240)는 차량 내부의 영상, 차량 상태 정보, 주행 환경 정보 및 사용자 정보를 상황 정보 처리기(112)로 전송한다. 구체적으로 차량 내부의 영상은 차량(200)에 마련된 카메라(241)로부터 입력될 수 있으며, 주행 환경 정보 및 사용자 정보는 차량(200)에 마련된 각종 장치 뿐만 아니라 외부 컨텐츠 서버(미도시) 또는 차량(200)에 연결된 모바일 기기(미도시)로부터 제공될 수도 있다.
음성 외 입력은 모두 상황 정보에 포함될 수 있다. 즉, 상황 정보는 차량 내부 영상, 차량 상태 정보, 주행 환경 정보, 사용자 정보를 포함할 수 있다.
차량 내부를 촬영한 영상은 카메라(241)를 통해 획득된 정보로서, 현재 발화의 주체 및 발화자의 제스처 등을 파악하기 위한 정보이다.
주행 환경 정보는 차량(200)에 마련된 센서에 의해 획득된 정보로서 전방 카메라, 후방 카메라 또는 스테레오 카메라가 획득한 영상 정보, 레이더(radar), 라이다(Lidar), 초음파 센서 등의 센서가 획득한 장애물 정보, 강우 센서가 획득한 강우량/강우속도 정보 등을 포함할 수 있다.
또한, 주행 환경 정보는 V2X를 통해 획득된 정보로서 교통 상황 정보, 신호등 정보, 주변 차량의 접근 또는 추돌 가능성 정보 등을 더 포함할 수 있다.
사용자 정보는 차량에 마련된 카메라 또는 생체 신호 측정 장치를 통해 측정한 사용자의 상태와 관련된 정보, 사용자가 차량에 마련된 입력 장치를 이용하여 직접 입력한 사용자와 관련된 정보, 외부 컨텐츠 서버에 저장된 사용자와 관련된 정보, 차량에 연결된 모바일 기기에 저장된 정보 등을 포함할 수 있다.
음성 입력 처리기(111)는 입력된 사용자 음성을 인식하여 텍스트 형태의 발화문으로 출력하는 음성 인식기(111a), 발화문에 대해 자연어 이해 기술(Natural Language Understanding)을 적용하여 발화문이 내포하는 사용자의 의도를 파악하는 자연어 이해기(111b) 및 자연어 이해 결과와 상황 정보를 통해 발화 대상을 판단하고, 대화 관리기(120)로 전달하는 대화 입력 관리기(111c)를 포함할 수 있다.
음성 인식기(111a)는 음성 인식 엔진(speech recognition engine)을 포함하고, 음성 인식 엔진은 입력된 음성에 음성 인식 알고리즘을 적용하여 사용자가 발화한 음성을 인식하고, 인식 결과를 생성할 수 있다.
이 때, 입력된 음성은 음성 인식을 위한 더 유용한 형태로 변환될 수 있는바, 음성 신호로부터 시작 지점과 끝 지점을 검출하여 입력된 음성에 포함된 실제 음성 구간을 검출한다. 이를 EPD(End Point Detection)이라 한다.
그리고, 검출된 구간 내에서 켑스트럼(Cepstrum), 선형 예측 코딩(Linear Predictive Coefficient: LPC), 멜프리퀀시켑스트럼(Mel Frequency Cepstral Coefficient: MFCC) 또는 필터 뱅크 에너지(Filter Bank Energy) 등의 특징 벡터 추출 기술을 적용하여 입력된 음성의 특징 벡터를 추출할 수 있다.
그리고, 추출된 특징 벡터와 훈련된 기준 패턴과의 비교를 통하여 인식 결과를 얻을 수 있다. 이를 위해, 음성의 신호적인 특성을 모델링하여 비교하는 음향 모델(Acoustic Model) 과 인식 어휘에 해당하는 단어나 음절 등의 언어적인 순서 관계를 모델링하는 언어 모델(Language Model)이 사용될 수 있다. 이를 위해, 저장부(140)에는 음향 모델/언어 모델 DB가 저장될 수 있다.
음향 모델은 다시 인식 대상을 특징 벡터 모델로 설정하고 이를 음성 데이터의 특징 벡터와 비교하는 직접 비교 방법과 인식 대상의 특징 벡터를 통계적으로 처리하여 이용하는 통계 방법을 나뉠 수 있다.
직접 비교 방법은 인식 대상이 되는 단어, 음소 등의 단위를 특징 벡터 모델로 설정하고 입력 음성이 이와 얼마나 유사한지를 비교하는 방법으로서, 대표적으로 벡터 양자화(Vector Quantization) 방법이 있다. 벡터 양자화 방법에 의하면 입력된 음성 데이터의 특징 벡터를 기준 모델인 코드북(codebook)과 매핑시켜 대표 값으로 부호화함으로써 이 부호 값들을 서로 비교하는 방법이다.
통계적 모델 방법은 인식 대상에 대한 단위를 상태 열(State Sequence)로 구성하고 상태 열 간의 관계를 이용하는 방법이다. 상태 열은 복수의 노드(node)로 구성될 수 있다. 상태 열 간의 관계를 이용하는 방법은 다시 동적 시간 와핑(Dynamic Time Warping: DTW), 히든 마르코프 모델(Hidden Markov Model: HMM), 신경 회로망을 이용한 방식 등이 있다.
동적 시간 와핑은 같은 사람이 같은 발음을 해도 신호의 길이가 시간에 따라 달라지는 음성의 동적 특성을 고려하여 기준 모델과 비교할 때 시간 축에서의 차이를 보상하는 방법이고, 히든 마르코프 모델은 음성을 상태 천이 확률 및 각 상태에서의 노드(출력 심볼)의 관찰 확률을 갖는 마르코프 프로세스로 가정한 후에 학습 데이터를 통해 상태 천이 확률 및 노드의 관찰 확률을 추정하고, 추정된 모델에서 입력된 음성이 발생할 확률을 계산하는 인식 기술이다.
한편, 단어나 음절 등의 언어적인 순서 관계를 모델링하는 언어 모델은 언어를 구성하는 단위들 간의 순서 관계를 음성 인식에서 얻어진 단위들에 적용함으로써 음향적인 모호성을 줄이고 인식의 오류를 줄일 수 있다. 언어 모델에는 통계적 언어 모델과 유한 상태 네트워크(Finite State Automata: FSA)에 기반한 모델이 있고, 통계적 언어 모델에는 Unigram, Bigram, Trigram 등 단어의 연쇄 확률이 이용된다.
음성 인식기(111a)는 음성을 인식함에 있어 상술한 방식 중 어느 방식을 사용해도 무방하다. 예를 들어, 히든 마르코프 모델이 적용된 음향 모델을 사용할 수도 있고, 음향 모델과 음성 모델을 통합한 N-best 탐색법을 사용할 수 있다. N-best 탐색법은 음향 모델과 언어 모델을 이용하여 N개까지의 인식 결과 후보를 선택한 후, 이들 후보의 순위를 재평가함으로써 인식 성능을 향상시킬 수 있다.
음성 인식기(111a)는 인식 결과의 신뢰성을 확보하기 위해 신뢰값(confidence value)을 계산할 수 있다. 신뢰값은 음성 인식 결과에 대해서 그 결과를 얼마나 믿을 만한 것인가를 나타내는 척도이다. 일 예로, 인식된 결과인 음소나 단어에 대해서, 그 외의 다른 음소나 단어로부터 그 말이 발화되었을 확률에 대한 상대값으로 정의할 수 있다. 따라서, 신뢰값은 0 에서 1 사이의 값으로 표현할 수도 있고, 0 에서 100 사이의 값으로 표현할 수도 있다.
신뢰값이 미리 설정된 임계값(threshold)을 초과하는 경우에는 인식 결과를 출력하여 인식 결과에 대응되는 동작이 수행되도록 할 수 있고, 신뢰값이 임계값 이하인 경우에는 인식 결과를 거절(rejection)할 수 있다.
음성 인식기(111a)의 인식 결과인 텍스트 형태의 발화문은 자연어 이해기(111b)로 입력된다.
자연어 이해기(111b)는 자연어 이해 기술을 적용하여 발화문에 내포된 사용자의 의도를 파악할 수 있다. 따라서, 사용자는 자연스러운 대화(Dialogue)를 통해 명령을 입력할 수 있고, 대화 시스템(100) 역시 대화를 통해 명령의 입력을 유도하거나 사용자가 필요로 하는 서비스를 제공할 수 있다.
먼저, 자연어 이해기(111b)는 텍스트 형태의 발화문에 대해 형태소 분석을 수행한다. 형태소는 의미의 최소 단위로써, 더 이상 세분화할 수 없는 가장 작은 의미 요소를 나타낸다. 따라서, 형태소 분석은 자연어 이해의 첫 단계로서, 입력 문자열을 형태소열로 바꿔준다.
자연어 이해기(111b)는 형태소 분석 결과에 기초하여 발화문으로부터 도메인을 추출한다. 도메인은 사용자가 발화한 언어의 주제를 식별할 수 있는 것으로서, 예를 들어, 경로 안내, 날씨 검색, 교통 검색, 일정 관리, 주유 안내, 공조 제어 등의 다양한 주제를 나타내는 도메인이 데이터베이스화 되어 있다.
자연어 이해기(111b)는 발화문으로부터 개체명을 인식할 수 있다. 개체명은 인명, 지명, 조직명, 시간, 날짜, 화폐 등의 고유 명사로서, 개체명 인식은 문장에서 개체명을 식별하고 식별된 개체명의 종류를 결정하는 작업이다. 개체명 인식을 통해 문장에서 중요한 키워드를 추출하여 문장의 의미를 파악할 수 있다.
자연어 이해기(111b)는 발화문이 갖는 화행을 분석할 수 있다. 화행 분석은 사용자 발화에 대한 의도를 분석하는 작업으로, 사용자가 질문을 하는 것인지, 요청을 하는 것인지, 응답을 하는 것인지, 단순한 감정 표현을 하는 것인지 등에 관한 발화의 의도를 파악하는 것이다.
자연어 이해기(111b)는 사용자의 발화 의도에 대응하는 액션을 추출한다. 발화문에 대응되는 도메인, 개체명, 화행 등의 정보에 기초하여 사용자의 발화 의도를 파악하고, 발화 의도에 대응되는 액션을 추출한다. 액션은 오브젝트(Object)와 오퍼레이터(Operator)에 의해 정의될 수 있다.
또한, 자연어 이해기(111b)는 액션 수행과 관련된 인자를 추출하는 것도 가능하다. 액션 수행과 관련된 인자는 액션을 수행하는데 직접적으로 필요한 유효 인자일 수도 있고, 이러한 유효 인자를 추출하기 위해 사용되는 비유효 인자일 수도 있다.
예를 들어, 사용자의 발화문이 "서울역 가자"인 경우에, 자연어 이해기(111b)는 발화문에 대응되는 도메인으로 "내비게이션"을 추출하고, 액션으로 "길안내"를 추출할 수 있다. 화행은 "요청"에 해당한다.
개체명인 "서울역"은 액션 수행과 관련된 [인자: 목적지]에 해당하나, 실제 내비게이션을 통한 길안내를 위해서는 구체적인 출구 번호나 GPS 정보가 필요할 수 있다. 이 경우, 자연어 이해기(111b)가 추출한 [인자: 목적지: 서울역]은 다수의 서울역 POI 중 실제 사용자가 원하는 서울역을 검색하기 위한 후보 인자가 될 수 있다.
또한, 자연어 이해기(111b)는 파스트리(Parse-tree)와 같이 단어와 단어, 문장과 문장의 수식 관계를 표현할 수 있는 수단도 추출할 수 있다.
자연어 이해기(111b)의 처리 결과인, 형태소 분석 결과, 도메인 정보, 액션 정보, 화행 정보, 추출된 인자 정보, 개체명 정보, 파스트리 등은 대화 입력 관리기(111c)로 전달된다.
상황 정보 처리기(112)는 음성 외 입력 장치(220)와 차량 제어기(240)로부터 정보를 수집하는 상황 정보 수집기(112a), 상황 정보의 수집을 관리하는 상황 정보 수집 관리기(112b) 및 자연어 이해 결과와 수집된 상황 정보에 기초하여 상황을 이해하는 상황 이해기(112c)를 포함할 수 있다.
도 6을 참조하면, 자연어 이해기(111b)는 도메인 추출, 개체명 인식, 화행 분석 및 액션 추출을 위해 도메인/액션 추론 규칙 DB(141)를 이용할 수 있다.
도메인/액션 추론 규칙 DB(141)에는 도메인 추출 규칙, 화행 분석 규칙, 개체명 변환 규칙, 액션 추출 규칙 등이 저장될 수 있다.
음성 외 사용자 입력, 차량 상태 정보, 주행 환경 정보, 사용자 정보와 같은 기타 정보는 상황 정보 수집기(112a)로 입력되고, 상황 정보 DB(142), 장기 메모리(143) 또는 단기 메모리(144)에 저장될 수 있다.
예를 들어, 상황 정보 DB(142)에는 카메라가 촬영한 차량(200)의 내부 영상과 각종 센서가 감지한 로우 데이터(raw data)가 센서 타입과 센서 값으로 구분되어 저장될 수 있다.
단기 메모리(144)와 장기 메모리(143)에는 사용자의 현재 상태, 사용자의 선호도/성향 또는 이를 판단할 수 있는 데이터와 같이 사용자에게 의미가 있는 데이터가 저장될 수 있다.
구체적으로 장기 메모리(143)에는 사용자의 전화번호부, 일정, 선호도, 학력, 성격, 직업, 가족 관련 정보 등과 같이 영속성이 보장되어 장기적으로 사용 가능한 정보가 저장될 수 있다.
단기 메모리(144)에는 현재/이전 위치, 오늘 일정, 이전 대화 내용, 대화 참여자, 주변 상황, 도메인, 운전자 상태 등과 같이 영속성이 보장되지 않거나 불확실하여 단기적으로 사용되는 정보가 저장될 수 있다. 데이터의 종류에 따라 상황 정보 DB(142), 단기 메모리(144) 및 장기 메모리(143) 중 두 개 이상의 저장소에 중복되어 저장되는 데이터도 있을 수 있다.
한편, 단기 메모리(144)에 저장된 정보 중 영속성이 보장되는 것으로 판단된 정보는 장기 메모리(143)로 보내질 수 있다.
단기 메모리(144)나 상황 정보 DB(142)에 저장된 정보를 이용하여 장기 메모리(143)에 저장될 정보를 획득하는 것은 대화 시스템(100) 내부에서 수행되는 것도 가능하고, 별도의 외부 시스템에서 수행되는 것도 가능하다.
전자의 경우, 후술하는 결과 처리기(130)의 메모리 관리기(135)에서 수행 가능하다. 이 경우, 단기 메모리(144)나 상황 정보 DB(142)에 저장된 데이터 중에서 사용자의 선호도나 성향과 같이 의미 있는 정보 또는 영속성 있는 정보를 획득하는데 사용되는 데이터는 장기 메모리(143)에 로그 파일 형태로 저장될 수 있다. 메모리 관리기(135)는 일정 기간 이상 축적된 데이터를 분석하여 영속성이 있는 데이터를 획득하고 장기 메모리(143)에 다시 저장한다. 장기 메모리(143) 내에서 영속성 있는 데이터가 저장되는 위치와 로그 파일 형태로 저장되는 데이터가 저장되는 위치를 서로 다를 수 있다.
또는, 메모리 관리기(135)가 단기 메모리(144)에 저장된 데이터 중에서 영속성 있는 데이터를 판단하고, 판단된 데이터를 장기 메모리(143)로 옮겨 저장하는 것도 가능하다.
상황 이해기(112c)는 상황 이해 테이블(145a)에 저장된 액션 별 상황 정보를 참조하여, 사용자의 발화 의도에 대응되는 액션 수행과 관련된 상황 정보가 무엇인지 판단할 수 있다.
상황 이해 테이블(145a)에는 액션 수행과 관련된 상황 정보와 상황 정보 타입이 각각의 액션 별로 저장될 수 있다. 예를 들어, 길 안내가 액션인 경우에는 상황 정보로 현재 위치가 필요하고, 상황 정보 타입은 GPS 정보일 수 있다. 차량 상태 점검이 액션인 경우에는 상황 정보로 이동거리가 필요하고, 상황 정보 타입은 정수일 수 있다. 잔여 기름량 질문이 액션인 경우에는 상황 정보로 잔유량과 주행 가능 거리(DTE: Distance To Empty)이 필요하고, 상황 정보 타입은 정수일 수 있다.
대화 입력 관리기(111c)는 자연어 이해기(111b)의 출력 결과를 상황 이해기(112c)에 전달하여 액션 수행과 관련된 상황 정보를 얻을 수 있다.
구체적으로 대화 입력 관리기(111c)는 자연어 이해기가 이해한 현재 입력된 발화의 청자가 대화 시스템(100)인지 여부를 판단한다. 이를 위해서 대화 입력 관리기(111c)는 상황 이해기(112c)에서 차량 내부의 영상을 수신한다. 또한, 대화 입력 관리기(111c)는 입력된 발화과 관련된 대화 히스토리 DB(145b)로부터 대화 히스토리를 로딩한다. 이렇게 수집된 차량 내부의 영상과 대화 히스토리는 발화 대상 판단부(111d)로 전달한다.
발화 대상 판단부(111d)는 현재의 발화의 청자가 누구인지 여부를 판단한다.
구체적으로 발화 대상 판단부(111d)는 차량 내부의 영상을 분석하고, 차량(200) 내부에 탑승한 여러 사용자 중, 발화의 대상이 되는 상대방이 존재하는지 여부를 판단한다. 즉, 차량 내부의 영상에서 발화자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나로부터 상대방이 있는지 여부를 판단한다.
만약 상대방이 없다면, 발화 대상 판단부(111d)는 대화 히스토리에 포함된 모든 대화방의 대화 히스토리를 검색한다. 여기서 대화방이란 대화 히스토리 DB(145b)에 저장되고, 차량(200) 내에서 이뤄지는 여러 사용자의 발화를 수집하고 대화 주제 별로 수집된 발화를 정리한 묶음이다. 대화방은 그 대화방마다 대화 히스토리를 가지고 있으며, 대화 히스토리 내 포함된 각각의 발화는 발화자(이하 대화방 참여자)와 매칭되어 있다. 대화방은 적어도 두 명 이상의 발화자가 대화를 주고받을 때 생성되며, 대화 시스템(100)은 대화 시스템 스스로를 항상 생성된 대화방의 참여자에 포함시킨다.
발화 대상 판단부(111d)는 각각의 대화방에서 입력된 발화가 대화 시스템(100)을 청자로 입력한 것인지, 아니면 그 대화방의 참여자에게 발화한 것인지 여부를 판단한다.
그러나 상대방이 있다면, 발화 대상 판단부(111d)는 대화 히스토리에 포함된 대화방에 상대방이 포함되었는지 여부를 판단한다. 만약 대화방에 상대방이 포함되면, 발화 대상 판단부(111d)는 대화방의 참여자보다 상대방에게 가중치를 부여한다.
발화 대상 판단부(111d)는 각각의 대화방 참여자, 대화 시스템(100)에게 점수를 부여한 후, 점수가 가장 높은 대상을 청자로 선택한다.
발화 대상 판단부(111d)가 대화 히스토리 DB(145b)에 저장된 정보로부터 현재 입력된 발화의 청자를 결정하는 구체적인 설명은 이하 다른 도면을 통해 후술한다.
발화 대상 판단부(111d)가 발화의 청자를 대화 시스템(100)으로 결정하면, 대화 입력 관리기(111c)는 자연어 이해기(111b)의 출력 결과 및 상황 이해기(112c)가 수집한 상황 정보를 대화 관리기(120)로 전달한다.
도 7은 대화 관리기의 구성을 세분화한 제어 블록도이다.
도 7을 참조하면, 대화 관리기(120)는 대화 또는 액션을 생성/삭제/업데이트하도록 요청하는 대화 흐름 관리기(121), 대화 흐름 관리기(121)의 요청에 따라 대화 또는 액션을 생성/삭제/업데이트하는 대화 액션 관리기(122), 상황에 대한 모호성과 대화에 대한 모호성을 해결하여 궁극적으로 사용자의 의도를 명확히 하는 모호성 해결기(123), 액션 수행에 필요한 인자를 관리하는 인자 관리기(124), 복수의 후보 액션들에 대해 액션 수행 가부를 판단하고, 이들의 우선 순위를 결정하는 액션 우선순위 결정기(125) 및 외부 컨텐츠 목록 및 관련 정보를 관리하고 외부 컨텐츠 쿼리에 필요한 인자 정보를 관리하는 외부 정보 관리기(126)를 포함할 수 있다.
대화 관리기(120)는 전술 또는 후술하는 동작을 수행하기 위한 프로그램이 저장되는 메모리 및 저장된 프로그램을 실행시키는 프로세서를 포함할 수 있다. 메모리와 프로세서는 각각 적어도 하나 마련될 수 있고, 복수 개 마련되는 경우에는 이들이 하나의 칩 상에 집적될 수도 있고 물리적으로 분리될 수도 있다.
또한, 대화 관리기(120)에 포함되는 각각의 구성요소들이 단일 프로세서에 의해 구현되는 것도 가능하고, 별개의 프로세서에 의해 구현되는 것도 가능하다.
또한, 대화 관리기(120)와 입력 처리기(110) 역시 단일 프로세서에 의해 구현되는 것도 가능하고, 별개의 프로세서에 의해 구현되는 것도 가능하다.
대화 입력 관리기(111a)의 출력인 자연어 이해 결과(자연어 이해기의 출력)와 상황 정보(상황 이해기의 출력)는 대화 흐름 관리기(121)로 입력된다. 자연어 이해기(111b)의 출력은 도메인, 액션 등의 정보 외에도 형태소 분석 결과와 같은 사용자의 발화 내용 자체에 대한 정보도 포함한다. 상황 이해기(112c)의 출력은 상황 정보 외에도 상황 정보 수집 관리기(112b)에서 판단한 다양한 이벤트도 포함할 수 있다.
대화 흐름 관리기(121)는 대화 입력 관리기(111a)로부터의 입력에 대응되는 대화 태스크 또는 액션 태스크가 대화/액션 DB(147)에 존재하는지 검색한다.
대화/액션 DB(147)는 대화의 상태와 액션의 상태를 관리하기 위한 저장 공간으로서, 현재 진행 중인 대화, 액션들과 앞으로 진행할 예비 액션들에 대한 대화 상태 및 액션 상태를 저장할 수 있다. 예를 들어, 종료된 대화/액션, 정지된 대화/액션, 진행 중인 대화/액션, 진행될 대화/액션의 상태가 저장될 수 있다.
또한, 액션의 스위칭/네스팅 여부, 스위칭된 액션 인덱스, 액션 변경 시간, 화면/음성/명령어 등의 마지막 출력 상태 등을 저장할 수 있다.
예를 들어, 사용자 발화에 대응되는 도메인과 액션이 추출된 경우에는, 가장 최근에 저장된 대화 중 해당 도메인과 액션에 대응되는 대화 또는 액션이 존재하면 이를 대화 입력 관리기(111a)로부터의 입력에 대응되는 대화 태스크 또는 액션 태스크로 판단할 수 있다.
사용자 발화에 대응되는 도메인과 액션이 추출되지 않은 경우에는, 임의의 태스크를 생성하거나, 가장 최근에 저장된 태스크를 참조하도록 대화 액션 생성기(122)에 요청할 수 있다.
대화/액션 DB(147)에 입력 처리기(110)의 출력에 대응되는 대화 태스크 또는 액션 태스크가 존재하지 않으면, 대화 흐름 관리기(121)는 대화 액션 관리기(122)에 새로운 대화 태스크와 액션 태스크를 생성하도록 요청한다.
대화 흐름 관리기(121)가 대화의 흐름을 관리함에 있어서, 대화 정책 DB(148)를 참조할 수 있다. 대화 정책 DB(148)는 대화를 전개하기 위한 정책을 저장하며, 구체적으로 대화를 선택/시작/제안/정지/종료하기 위한 정책을 저장한다.
또한, 대화 정책 DB(148)는 시스템이 응답을 출력하는 시점과 방법론에 대한 정책도 저장할 수 있으며, 다수의 서비스를 연계하여 응답을 만드는 정책과 기존의 액션을 삭제하고 다른 액션으로 교체하기 위한 정책을 저장할 수 있다.
예를 들어, 후보 액션이 복수이거나, 사용자의 의도나 상황에 대응되는 액션이 복수일 때(A 액션, B액션), "A 액션을 수행하고 B 액션을 수행하겠습니까?"와 같이 두 액션에 대한 응답을 한 번에 생성하는 정책과, "A액션을 수행합니다" 및 "B액션을 수행할까요?"와 같이 하나의 액션에 대한 응답을 생성한 이후에, B 액션에 대해서도 별도의 응답을 생성하는 정책이 모두 가능하다.
또한, 대화 정책 DB(147)는 후보 액션들 간의 우선 순위를 결정하는 정책도 저장할 수 있다. 우선 순위 결정 정책에 대해서는 후술하도록 한다.
대화 액션 관리기(122)는 대화/액션 DB(147)에 저장 공간을 할당하여, 입력 처리기(110)의 출력에 대응되는 대화 태스크와 액션 태스크를 생성한다.
한편, 사용자의 발화로부터 도메인과 액션을 추출할 수 없는 경우, 대화 액션 관리기(122)는 임의의 대화 상태를 생성할 수 있다. 이 경우, 후술하는 바와 같이, 모호성 해결기(123)가 사용자의 발화 내용, 주변 상황, 차량 상태, 사용자 정보 등에 기초하여 사용자의 의도를 파악하고 이에 대응되는 적절한 액션을 판단할 수 있다.
대화/액션 DB(147)에 입력 처리기(110)의 출력에 대응되는 대화 태스크와 액션 태스크가 존재하면, 대화 흐름 관리기(121)는 대화 액션 관리기(122)가 해당 대화 태스크와 액션 태스크를 참조하도록 요청한다.
액션 우선순위 결정기(125)는 연관 액션 DB(146b)에서 입력 처리기(110)의 출력에 포함된 액션 또는 이벤트와 연관된 액션 목록을 검색하여 후보 액션을 추출한다.
연관 액션 DB(146b)는 상호 연관된 액션들과 그들 사이의 관계 및 이벤트와 연관된 액션과 그들 사이의 관계를 나타낼 수 있다. 예를 들어, 길안내, 차량 상태 점검, 주유소 추천과 같은 액션이 연관된 액션으로 분류될 수 있고, 이들의 관계는 상호 연계에 해당할 수 있다.
따라서, 길안내 액션을 수행함에 있어, 차량 상태 점검, 주유소 추천등의 액션이 함께 수행될 수 있다. 여기서 함께 수행된다는 것은 길안내 액션의 전후로 수행되는 것과 길안내 액션의 수행 중에(경유지로 추가) 수행되는 것을 모두 포함할 수 있다.
액션 우선순위 결정기(125)는 액션 수행 조건 DB(146c)에서 각각의 후보 액션을 수행하기 위한 조건을 검색한다.
액션 수행 조건 DB(146c)는 액션을 수행하기 위해 필요한 조건과 해당 조건의 만족 여부를 판단하기 위해 사용되는 인자를 각각의 액션 별로 저장할 수 있다.
예를 들어, 차량 상태 점검 액션의 수행 조건은 목적지 거리가 100km 이상인 경우일 수 있고, 조건 판단을 위해 사용되는 인자는 목적지 거리에 해당한다. 주유소 추천 액션의 수행 조건은 목적지 거리가 주행 가능 거리(DTE)보다 먼 경우일 수 있고, 조건 판단을 위해 사용되는 인자는 목적지 거리와 주행 가능 거리(DTE)에 해당한다.
액션 우선순위 결정기(125)는 후보 액션의 수행 조건을 대화 액션 관리기(122)로 전달하고, 대화 액션 관리기(122)는 각 후보 액션 별 액션 수행 조건을 추가하여 대화/액션 상태 DB(147)의 액션 상태를 업데이트한다.
액션 우선순위 결정기(125)는 상황 정보 DB(142), 장기 메모리(143), 단기 메모리(144) 또는 대화/액션 상태 DB(147)에서 액션 수행 조건 판단을 위해 필요한 인자(이하, 조건 판단 인자라 한다)를 검색하고, 검색된 인자를 이용하여 각 후보 액션의 수행 가부를 판단할 수 있다.
액션 수행 조건 판단을 위해 사용되는 인자가 상황 정보 DB(142), 장기 메모리(143), 단기 메모리(144) 또는 대화/액션 상태 DB(147)에 저장되지 않은 경우, 외부 정보 관리기(126)를 통해 외부 컨텐츠 서버로부터 필요한 인자를 가져올 수 있다.
액션 우선순위 결정기(125)는 액션 수행 조건 판단을 위해 필요한 인자를 이용하여 각 후보 액션의 수행 가부를 판단할 수 있다. 또한, 각 후보 액션의 수행 가부 및 대화 정책 DB(148)에 저장된 우선 순위 결정 규칙에 기초하여 각 후보 액션의 우선 순위를 결정할 수 있다.
인자 관리기(124)는 액션 인자 DB(146a)에서 각 후보 액션을 수행하는데 사용되는 인자(이하, 액션 인자라 한다.)를 검색할 수 있다.
액션 인자 DB(146a)는 액션 별로 필수 인자, 선택 인자, 인자의 초기값 및 인자를 가져올 수 있는 참조 위치를 저장할 수 있다. 인자의 초기값이 저장되어 있는 경우에, 입력 처리기(110)로부터 출력된 사용자의 발화나 상황 정보에 해당 인자에 대응되는 인자 값이 포함되어 있지 않고 상황 정보 DB(142)에도 해당 인자 값이 저장되어 있지 않으면, 저장된 초기값에 따라 액션을 수행하거나, 저장된 초기값에 따라 액션을 수행할 지 사용자에게 확인할 수 있다.
예를 들어, 차량 상태 점검 액션을 수행하는데 사용되는 필수 인자는 차량 상태 정보를 포함하고, 선택 인자는 점검 파트를 포함할 수 있다. 선택 인자의 초기값으로는 전체 파트가 저장될 수 있다. 차량 상태 정보는 상황 정보 DB(142)로부터 획득할 수 있다.
전술한 바와 같이, 인자 관리기(124)는 액션 인자 DB(146a)에서 검색한 인자의 인자 값을 해당 참조 위치에서 가져온다. 인자 값을 가져올 수 있는 참조 위치는 상황 정보 DB(142), 장기 메모리(143), 단기 메모리(144), 대화/액션 상태 DB(147) 및 외부 컨텐츠 서버 중 적어도 하나일 수 있다.
인자 관리기(124)가 외부 컨텐츠 서버로부터 인자 값을 가져오는 경우에는, 외부 정보 관리기(126)를 통할 수 있다. 외부 정보 관리기(126)는 외부 서비스 집합 DB(146d)를 참조하여 어디에서 정보를 가져올 지 판단할 수 있다.
외부 서비스 집합 DB(146d)는 대화 시스템(100)과 연계된 외부 컨텐츠 서버에 대한 정보를 저장한다. 예를 들어, 외부 서비스 명칭, 외부 서비스 에 대한 설명, 외부 서비스 가 제공하는 정보의 타입, 외부 서비스 사용 방법, 외부 서비스 의 제공 주체 등에 대한 정보를 저장할 수 있다.
인자 관리기(124)가 획득한 인자 값은 대화 액션 관리기(122)로 전달되고, 대화 액션 관리기(122)는 각 후보 액션 별 인자 값을 액션 상태에 추가하여 대화/액션 상태 DB(147)를 업데이트 한다.
한편, 대화나 상황에 모호성이 없는 경우에는 전술한 액션 우선순위 결정기(125), 인자 관리기(124) 및 외부 정보 관리기(126)의 동작에 따라 필요한 정보를 얻고 대화와 액션을 관리할 수 있다. 그러나, 대화나 상황에 모호성이 있는 경우에는 액션 우선순위 결정기(125), 인자 관리기(124) 및 외부 정보 관리기(126)의 동작만으로는 사용자에게 필요한 적절한 서비스를 제공하기 어렵다.
이러한 경우, 모호성 해결기(123)가 대화에 대한 모호성 또는 상황에 대한 모호성을 해결할 수 있다. 예를 들어, 대화에 그 사람, 어제 거기, 아빠, 엄마, 할머니, 며느리 등과 같은 조응어가 포함되어 무엇을 지칭하는지 모호한 경우에 모호성 해결기(123)가 상황 정보 DB(142), 장기 메모기(143) 또는 단기 메모리(144)를 참조하여 이러한 모호성을 해결하거나 이를 해결하기 위한 가이드를 제시할 수 있다.
모호성 해결기(123)는 상황 정보 DB(142), 장기 메모리(143) 또는 단기 메모리(144)에 저장된 정보를 참조하여 인자 값의 모호성을 해결할 수 있다. 또는, 필요에 따라 외부 정보 관리기(126)를 이용하여 외부 컨텐츠 서버로부터 필요한 정보를 가져오는 것도 가능하다.
모호성 해결기(123)가 판단한 액션에 관한 정보는 대화 액션 관리기(122)로 전달될 수 있고, 대화 액션 관리기(122)는 전달된 정보에 기초하여 대화/액션 DB(147)를 업데이트할 수 있다.
액션 우선순위 결정기(125)와 인자 관리기(124)는 모호성 해결기(123)가 판단한 액션에 대해서도 전술한 바와 같이 액션 수행 조건을 판단하고, 우선 순위를 결정하고, 인자 값을 가져오는 동작을 수행한다.
각 액션을 수행하는데 사용되는 인자 값들 중 현재 상황과 대화를 통해 획득 가능한 값들이 모두 획득되면, 대화 액션 관리기(122)는 대화 흐름 관리기(121)에 신호를 전송한다.
대화 흐름 관리기(121)는 1순위에 해당하는 액션에 관한 정보와 대화 상태를 결과 처리기(130)로 전달한다.
도 8은 결과 처리기의 구성을 세분화한 제어 블록도이다.
도 8을 참조하면, 결과 처리기(130)는 대화 관리기(120)로부터 입력된 액션을 수행하기 위해 필요한 응답의 생성을 관리하는 응답 생성 관리기(131), 응답 생성 관리기(131)의 요청에 따라 텍스트 응답, 이미지 응답 또는 오디오 응답을 생성하는 대화 응답 생성기(132), 응답 생성 관리기(131)의 요청에 따라 차량 제어를 위한 명령어 또는 외부 컨텐츠를 이용한 서비스를 제공하기 위한 명령어를 생성하는 명령어 생성기(136), 사용자가 원하는 서비스를 제공하기 위해 다수의 서비스를 순차적 또는 산발적으로 실행하고 결과값을 취합해주는 서비스 편집기(134), 생성된 텍스트 응답, 이미지 응답 또는 오디오 응답을 출력하거나 명령어 생성기(136)가 생성한 명령어를 출력하고, 출력이 복수인 경우에는 출력 순서를 결정하는 출력 관리기(133), 응답 생성 관리기(131)와 출력 관리기(133)의 출력에 기초하여 장기 메모리(143)와 단기 메모리(144)를 관리하는 메모리 관리기(135)를 포함한다.
결과 처리기(130)는 전술 또는 후술하는 동작을 수행하기 위한 프로그램이 저장되는 메모리 및 저장된 프로그램을 실행시키는 프로세서를 포함할 수 있다. 메모리와 프로세서는 각각 적어도 하나 마련될 수 있고, 복수 개 마련되는 경우에는 이들이 하나의 칩 상에 집적될 수도 있고 물리적으로 분리될 수도 있다.
또한, 결과 처리기(130)에 포함되는 각각의 구성요소들이 단일 프로세서에 의해 구현되는 것도 가능하고, 별개의 프로세서에 의해 구현되는 것도 가능하다.
또한, 결과 처리기(130)와, 대화 관리기(120) 및 입력 처리기(110) 역시 단일 프로세서에 의해 구현되는 것도 가능하고, 별개의 프로세서에 의해 구현되는 것도 가능하다.
사용자의 발화나 상황에 대응하여 출력되는 응답은 대화 응답, 차량 제어, 외부 컨텐츠 제공 등을 포함할 수 있다. 대화 응답은 초기 대화, 질의, 정보 제공을 포함하는 답변 등의 형식을 가질 수 있고 응답 템플릿(149)에 데이터베이스화되어 저장될 수 있다.
응답 생성 관리기(131)는 대화 응답 생성기(132)와 명령어 생성기(136)에 대화 관리기(120)에서 결정된 액션을 수행하기 위해 필요한 응답의 생성을 요청한다. 이를 위해, 수행될 액션에 관한 정보를 대화 응답 생성기(132)와 명령어 생성기(136)에 전송할 수 있고, 수행될 액션에 관한 정보는 액션명, 인자 값 등을 포함할 수 있다. 응답을 생성함에 있어, 대화 응답 생성기(132)와 명령어 생성기(136)는 현재 대화 상태와 액션 상태를 참조할 수 있다.
대화 응답 생성기(132)는 응답 템플릿(149)을 검색하여 대화 응답 서식을 추출할 수 있고, 추출된 대화 응답 서식에 필요한 인자 값을 채워 대화 응답을 생성한다. 생성된 대화 응답은 응답 생성 관리기(131)로 전달된다. 대화 응답 생성에 필요한 인자 값이 대화 관리기(120)로부터 전달되지 않거나, 외부 컨텐츠를 이용하라는 지시가 전달된 경우에는 외부 컨텐츠 서버로부터 제공받거나 장기 메모리(143), 단기 메모리(144) 또는 상황 정보 DB(142)에서 검색할 수 있다.
예를 들어, 대화 관리기(120)에서 결정된 액션이 잔유량 정보 제공이라면, 응답 템플릿(149)을 검색하여 "현재 남은 기름으로 [DTE: -] 주행 가능합니다." 를 대화 응답 서식으로 추출할 수 있다. 대화 응답 서식에 채워져야 할 인자 중에서 [DTE]의 인자 값은 대화 관리기(120)로부터 전달될 수 있다.
명령어 생성기(136)는 사용자의 발화나 상황에 대한 응답이 차량 제어 또는 외부 컨텐츠 제공을 포함하는 경우, 이를 실행하기 위한 명령어를 생성한다. 예를 들어, 대화 관리기(120)에서 결정된 액션이 공조 장치, 윈도우, 시트, AVN 등의 제어인 경우에 해당 제어를 실행하기 위한 명령어를 생성하여 응답 생성 관리기(131)에 전달한다.
또는, 대화 관리기(120)에서 결정된 액션이 외부 컨텐츠의 제공을 필요로 하는 경우에는 외부 컨텐츠 서버로부터 해당 컨텐츠를 제공받기 위한 명령어를 생성하여 응답 생성 관리기(131)에 전달한다.
명령어 생성기(136)에서 생성한 명령어가 복수인 경우, 서비스 편집기(134)가 복수의 명령어를 실행하는 방법과 순서를 결정하여 응답 생성 관리기(131)에 전달한다.
응답 생성 관리기(131)는 대화 응답 생성기(132), 명령어 생성기(136) 또는 서비스 편집기(134)로부터 전달받은 응답을 출력 관리기(133)에 전달한다.
출력 관리기(133)는 대화 응답 생성기(132)가 생성한 대화 응답과 명령어 생성기(136)가 생성한 명령어의 출력 타이밍, 출력 순서, 출력 위치 등을 결정한다.
출력 관리기(133)는 응답 생성기(132)가 생성한 대화 응답과 명령어 생성기(!36)가 생성한 명령어를 적절한 타이밍에 적절한 순서로 적절한 출력 위치에 전송하여 응답을 출력한다. TTS(Text to Speech) 응답은 스피커(232)를 통해 출력할 수 있고, 텍스트 응답은 디스플레이(231)를 통해 출력할 수 있다. 대화 응답을 TTS 형태로 출력하는 경우에는 차량(200)에 마련된 TTS 모듈을 이용하거나 출력 관리기(133)가 TTS 모듈을 포함할 수도 있다.
명령어는 그 제어 대상에 따라 차량 제어기(240)로 전송될 수도 있고, 외부 컨텐츠 서버와 통신하기 위한 통신 장치(280)로 전송될 수도 있다.
응답 생성 관리기(131)는 대화 응답 생성기(132), 명령어 생성기(136) 또는 서비스 편집기(134)로부터 전달받은 응답을 메모리 관리기(135)에도 전달할 수 있다.
또한, 출력 관리기(133)도 자신이 출력한 응답을 메모리 관리기(135)에 전달할 수 있다.
메모리 관리기(135)는 응답 생성 관리기(131) 및 출력 관리기(133)로부터 전달받은 내용에 기초하여 장기 메모리(143)와 단기 메모리(144)를 관리한다. 예를 들어, 메모리 관리기(135)는 생성 및 출력된 대화 응답에 기초하여 사용자와 시스템 간 대화 내용을 저장하여 단기 메모리(144)를 업데이트할 수 있고, 사용자와의 대화를 통해 획득된 사용자 관련 정보를 저장하여 장기 메모리(143)를 업데이트할 수 있다.
또한, 단기 메모리(144)에 저장된 정보 중 사용자의 성향이나 선호도와 같이 의미 있고 영속성이 있는 정보 또는 이러한 정보를 획득하는데 사용될 수 있는 정보를 장기 메모리(143)에 저장할 수도 있다.
또한, 생성 및 출력된 명령어에 대응되는 차량 제어나 외부 컨텐츠 요청에 기초하여 장기 메모리(143)에 저장된 사용자의 선호도나 차량 제어 이력 등을 업데이트할 수도 있다.
전술한 실시예에 따른 대화 시스템(100)에 의하면, 차량 내부에서 발생하는 다양한 발화 중, 청자가 누군인지 분석하고, 대화 시스템(100)을 청자로 의도하는 발화에 대한 응답을 제공함으로써, 사용자에게 필요한 최적의 서비스를 제공할 수 있다.
도 9는 개시된 대화 처리 방법에 관한 순서도이다.
도 9를 참조하면, 대화 시스템(100)은 음성을 인식하고, 영상을 분석한다(300).
구체적으로 대화 시스템(100)은 음성 입력 처리기(111)로부터 음성을 인식하고, 상황 정보 처리기(112)로부터 영상을 분석할 수 있다.
대화 시스템(100)은 인식된 음성을 기초로 발화 의도를 판단한다(310).
발화 의도는 다양할 수 있으며, 일 예로, 대화 시스템(100)은 도메인/액션 추론 규칙 DB(141)로부터 발화 의도를 판단할 수 있다.
대화 시스템(100)은 대화 히스토리 및 분석된 영상을 기초로 청자를 판단한다(320).
구체적으로 대화 히스토리는 이전 차량(200)에 탑승한 다양한 사용자의 발화를 분석한 결과, 즉 대화 주제를 포함하고 있다. 대화 히스토리는 대화방으로 구분될 수 있으며, 각각의 대화방은 대화 주제와 함께 대화방 참여자 및 대화방 참여자의 발화가 저장되어 있다. 대화방 참여자와 매칭된 각각의 발화는 이미 발화 의도 및 형태소 등의 분석이 완료된 상태이다.
대화 시스템(100)은 대화 히스토리와 함께 분석된 영상을 기초로 현재 발화의 청자가 대화 시스템인지 여부를 판단한다. 이에 관한 구체적인 설명은 도 10을 통해서 후술한다.
발화의 청자가 판단되면, 대화 시스템(100)은 대화 히스토리를 업데이트한다(330).
업데이트되는 대화 히스토리에는 현재 입력된 음성, 음성의 발화자 및 발화의 의도가 함께 저장될 수 있으며, 결과 처리기(130)는 대화 히스토리를 업데이트할 수 있다.
대화 시스템(100)은 발화에 대한 응답할 수 있다(340).
대화 시스템(100)의 응답은, 현재 발화의 청자가 대화 시스템(100)으로 판단된 경우 수행될 수 있다. 즉, 대화 시스템(100)은 청자가 다른 사용자로 판단되면, 응답을 수행하지 않고, 대화 히스토리만을 업데이트할 수 있다.
도 10은 발화 대상을 판단하는 대화 처리 방법의 구체적인 순서도이다.
도 10을 참조하면, 대화 시스템(100)은 복수의 대화방을 로딩한다(400).
대화방은 대화 히스토리 DB(145b)에 저장되어 있으며, 복수개가 로딩될 수 있다. 즉, 대화 시스템(100)은 현재 차량(200)에 탑승한 사용자의 대화를 대화방으로 생성 및 구분한다. 새로운 발화가 입력되면 생성 및 저장된 대화방 모두를 로딩하여 로딩된 대화방으로부터 청자가 누구인지 판단한다.
대화 시스템(100)은 분석된 영상에 기초하여 상대방이 존재하는지 여부를 판단한다(410).
영상을 통해서 대화 시스템(100)은 현재 입력된 음성의 발화자를 구분한다. 또한, 대화 시스템(100)은 구분된 발화자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나를 통해서 상대방이 있는지 여부를 판단한다.
만약 상대방이 없다면(420의 아니오), 대화 시스템(100)은 대화 히스토리에 기초하여 로딩된 대화방 각각에 포함된 대화방 참여자 및 대화 시스템에 점수를 부여한다. 즉, 상대방이 명확하지 않으면, 대화 시스템(100)은 대화 히스토리에 기초하여 각각의 대화방의 대화 주제를 살펴보고, 분석된 발화 의도와 유사한 대화 주제를 포함하는 대화방의 참여자 및 대화 시스템(100)에 높은 점수를 부여할 수 있다. 또한, 여러 대화방에 포함된 중복되어 대화 참여자에게 점수를 누적시킬 수도 있다.
대화 시스템은 부여된 점수가 최대가 되는 대상을 청자로 결정한다(480).
영상의 분석 결과 상대방이 있다면(420의 예), 대화 시스템(100)은 이하의 순서에 따라 점수를 부여한다.
먼저, 대화 시스템(100)은 각각의 대화방에 판단된 상대방이 포함되는지 여부를 판단한다(430).
여기서 대화방은 로딩된 대화방 전부를 의미하며, 대화 시스템(100)은 로딩된 대화방 각각에 대해 상대방이 포함되는지 여부를 판단한다.
만약 대화방에 상대방이 포함되어 있다면(440의 예), 대화 시스템(100)은 판단된 상대방에 제1 가중치(a)가 곱해진 점수를 부여한다(450). 여기서 제1 가중치는 후술하는 다른 가중치보다 높은 값일 수 있다.
대화 시스템(100)은 그 대화방의 나머지 참여자에게 제2 가중치(b)가 곱해진 점수를 부여한다(451). 여기서 제2 가중치(b)는 제1 가중치보다는 낮은 값일 수 있다. 그러나 대화 히스토리에 따라서 제2 가중치(b)는 대화방의 나머지 참여자에게 서로 다른 값이 될 수 있으며, 경우에 따라 제1 가중치(a)보다 높은 값일 수도 있다.
만약 대화방에 상대방이 포함되지 않다면(440의 아니오), 대화 시스템(100)은 대화방의 대화 히스토리에 기초하여 대화방 참여자에게 제3 가중치(c)가 곱해진 점수를 부여한다(460).
여기서 제3 가중치란, 제1 가중치(a) 및 제2 가중치(b)와는 다른 값일 수 있으며, 대화방 참여자마다 서로 다른 값일 수 있다.
로딩된 대화방 전부의 분석이 끝나지 않으면(470의 아니오), 대화 시스템(100)은 다른 대화방에도 전술한 과정을 반복한다.
로딩된 대화방 전부의 분석이 끝나면(470의 예), 대화 시스템(100)은 부여된 점수가 가장 높은 대상을 청자로 결정한다(480).
도 9에서 설명한 바와 같이, 대화 시스템(100)은 청자가 대화 시스템(100)으로 결정되면, 응답을 생성한다.
이를 통해서 개시된 대화 시스템(100)은 사용자의 별도의 동작 없이도 대화 시스템에게 명령을 전달할 수 있고, 나아가 신뢰성 및 편리성을 향상시킬 수 있다.
100: 대화 시스템
110: 입력 처리기
120: 대화 관리기 130: 결과 처리기
140: 저장부 200: 차량
210: 음성 입력 장치 220: 음성 외 입력 장치
120: 대화 관리기 130: 결과 처리기
140: 저장부 200: 차량
210: 음성 입력 장치 220: 음성 외 입력 장치
Claims (22)
- 차량 내부의 영상을 촬영하는 카메라;
적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하는 저장부; 및
상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고, 상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 입력 처리기;를 포함하는 대화 시스템. - 제 1항에 있어서,
상기 입력 처리기는,
상기 사용자의 발화의 발화 의도를 파악하고, 상기 발화 의도 및 상기 대화 히스토리에 포함된 대화 주제에 기초하여 대화방의 참여자 또는 상기 대화 시스템에 점수를 부여하는 대화 시스템. - 제 1항에 있어서,
상기 입력 처리기는,
상기 촬영된 영상에 포함된 사용자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나에 기초하여 상대방이 있는지 여부를 판단하는 대화 시스템. - 제 3항에 있어서
상기 입력 처리기는,
상기 판단된 상대방이 상기 대화방에 포함되면, 상기 대화 히스토리에 기초하여 상기 상대방에 제1 가중치를 부여하는 대화 시스템. - 제 4항에 있어서
상기 입력 처리기는,
상기 상대방을 제외한 상기 대화방의 참여자에 제2 가중치를 부여하는 대화 시스템. - 제 3항에 있어서
상기 입력 처리기는,
상기 판단된 상대방이 상기 대화방에서 포함되지 않으면, 상기 대화방의 참여자에게 제3 가중치를 부여하는 대화 시스템. - 제 3항에 있어서,
상기 입력 처리기는,
상기 상대방이 존재하지 않으면, 상기 대화 히스토리에 기초하여 상기 대화방의 참여자 및 상기 대화 시스템에 점수를 부여하는 대화 시스템. - 제 2항에 있어서,
상기 입력 처리기는,
상기 대화 시스템 또는 상기 대화방의 참여자 중 상기 부여된 점수가 최대인 대상을 청자로 선택하는 대화 시스템. - 제1항에 있어서,
상기 결정된 청자가 상기 대화 시스템인 경우, 상기 사용자의 발화에 대응되는 액션의 수행 가부를 판단하는데 사용되는 조건 판단 인자의 인자 값을 상기 저장부로터 획득하고, 상기 조건 판단 인자의 인자 값에 기초하여 수행할 액션을 결정하고, 상기 결정된 액션을 수행하는데 사용되는 액션 인자의 인자 값을 상기 저장부로부터 획득하는 대화 관리기; 및
상기 획득된 액션 인자의 인자 값을 이용하여 상기 결정된 액션을 수행하기 위한 응답을 생성하는 결과 처리기;를 더 포함하는 대화 시스템. - 차량 내부의 영상을 촬영하고;
적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하고;
상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고; 및
상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 것;을 포함하는 대화 처리 방법. - 제 10항에 있어서,
상기 결정하는 것은,
상기 사용자의 발화의 발화 의도를 파악하고, 상기 발화 의도 및 상기 대화 히스토리에 포함된 대화 주제에 기초하여 대화방의 참여자 또는 상기 대화 시스템에 점수를 부여하는 것;을 포함하는 대화 처리 방법. - 제 10항에 있어서,
상기 판단하는 것은,
상기 촬영된 영상에 포함된 사용자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나에 기초하여 상대방이 있는지 여부를 판단하는 것;을 포함하는 대화 처리 방법. - 제 12항에 있어서,
상기 결정하는 것은,
상기 판단된 상대방이 상기 대화방에 포함되면, 상기 대화 히스토리에 기초하여 상기 상대방에 제1 가중치를 부여하고;
상기 상대방을 제외한 상기 대화방의 참여자에 제2 가중치를 부여하는 것;을 포함하는 대화 처리 방법. - 제 12항에 있어서,
상기 결정하는 것은,
상기 판단된 상대방이 상기 대화방에서 포함되지 않으면, 상기 대화방의 참여자에게 제3 가중치를 부여하는 것;을 포함하는 대화 처리 방법. - 제 12항에 있어서,
상기 결정하는 것은,
상기 상대방이 존재하지 않으면, 상기 대화 히스토리에 기초하여 상기 대화방의 참여자 및 상기 대화 시스템에 점수를 부여하는 대화 처리 방법. - 제 11항에 있어서,
상기 결정하는 것은,
상기 대화 시스템 또는 상기 대화방의 참여자 중 상기 부여된 점수가 최대인 대상을 청자로 선택하는 것;을 포함하는 대화 처리 방법. - 차량 내부의 영상을 촬영하는 카메라;
적어도 하나 이상의 대화방을 포함하는 대화 히스토리를 저장하는 저장부;
상기 촬영된 영상에 기초하여 입력되는 사용자의 발화의 상대방이 있는지 여부를 판단하고, 상기 판단 결과 및 상기 대화 히스토리에 기초하여 상기 사용자의 발화에 대한 청자를 결정하는 입력 처리기;를 포함하는 차량. - 제 17항에 있어서,
상기 입력 처리기는,
상기 사용자의 발화의 발화 의도를 파악하고, 상기 발화 의도 및 상기 대화 히스토리에 포함된 대화 주제에 기초하여 대화방의 참여자 또는 상기 대화 시스템에 점수를 부여하는 차량. - 제 17항에 있어서,
상기 입력 처리기는,
상기 촬영된 영상에 포함된 사용자의 얼굴 방향, 시선 또는 제스처 중 적어도 하나에 기초하여 상대방이 있는지 여부를 판단하는 차량. - 제 19항에 있어서,
상기 입력 처리기는,
상기 판단된 상대방이 상기 대화방에 포함되면, 상기 대화 히스토리에 기초하여 상기 상대방에 제1 가중치를 부여하고, 상기 상대방을 제외한 상기 대화방의 참여자에 제2 가중치를 부여하고, 상기 판단된 상대방이 상기 대화방에서 포함되지 않으면, 상기 대화방의 참여자에게 제3 가중치를 부여하는 차량. - 제 20항에 있어서,
상기 입력 처리기는,
상기 대화 시스템 또는 상기 대화방의 참여자 중 상기 부여된 점수가 최대인 대상을 청자로 선택하는 차량. - 제 17항에 있어서,
상기 결정된 청자가 상기 대화 시스템인 경우, 상기 사용자의 발화에 대응되는 액션의 수행 가부를 판단하는데 사용되는 조건 판단 인자의 인자 값을 상기 저장부로터 획득하고, 상기 조건 판단 인자의 인자 값에 기초하여 수행할 액션을 결정하고, 상기 결정된 액션을 수행하는데 사용되는 액션 인자의 인자 값을 상기 저장부로부터 획득하는 대화 관리기; 및
상기 획득된 액션 인자의 인자 값을 이용하여 상기 결정된 액션을 수행하기 위한 응답을 생성하는 결과 처리기;를 더 포함하는 차량.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190042285A KR20200123495A (ko) | 2019-04-11 | 2019-04-11 | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190042285A KR20200123495A (ko) | 2019-04-11 | 2019-04-11 | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200123495A true KR20200123495A (ko) | 2020-10-30 |
Family
ID=73048252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190042285A KR20200123495A (ko) | 2019-04-11 | 2019-04-11 | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20200123495A (ko) |
-
2019
- 2019-04-11 KR KR1020190042285A patent/KR20200123495A/ko not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102414456B1 (ko) | 대화 시스템, 이를 포함하는 차량 및 유고 정보 처리 방법 | |
KR102338990B1 (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 | |
KR102562227B1 (ko) | 대화 시스템, 그를 가지는 차량 및 차량의 제어 방법 | |
KR102426171B1 (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 서비스 처리 방법 | |
KR102695306B1 (ko) | 대화 시스템, 그를 가지는 차량 및 차량의 제어 방법 | |
KR20200000604A (ko) | 대화 시스템 및 대화 처리 방법 | |
US10950233B2 (en) | Dialogue system, vehicle having the same and dialogue processing method | |
CN110503948B (zh) | 对话系统和对话处理方法 | |
KR20200000155A (ko) | 대화 시스템 및 이를 이용한 차량 | |
CN110503949B (zh) | 对话系统、具有对话系统的车辆和对话处理方法 | |
US11508367B2 (en) | Dialogue system and dialogue processing method | |
US11004450B2 (en) | Dialogue system and dialogue processing method | |
KR20200042127A (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 | |
KR102487669B1 (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 | |
CN114758653A (zh) | 对话系统、具有对话系统的车辆以及控制对话系统的方法 | |
KR20200006738A (ko) | 대화 시스템 및 대화 처리 방법 | |
US11783806B2 (en) | Dialogue system and dialogue processing method | |
KR102448719B1 (ko) | 대화 시스템과 이를 포함하는 차량 및 모바일 기기와 대화 처리 방법 | |
CN110562260A (zh) | 对话系统和对话处理方法 | |
KR20200000621A (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 | |
KR20200095636A (ko) | 대화 시스템이 구비된 차량 및 그 제어 방법 | |
KR20200123495A (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 | |
KR20210120286A (ko) | 대화 시스템, 그를 가지는 차량 및 대화 시스템의 제어 방법 | |
KR20190135676A (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 | |
KR20190036018A (ko) | 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |