KR20210034276A - 대화 시스템, 대화 처리 방법 및 전자 장치 - Google Patents

대화 시스템, 대화 처리 방법 및 전자 장치 Download PDF

Info

Publication number
KR20210034276A
KR20210034276A KR1020190116007A KR20190116007A KR20210034276A KR 20210034276 A KR20210034276 A KR 20210034276A KR 1020190116007 A KR1020190116007 A KR 1020190116007A KR 20190116007 A KR20190116007 A KR 20190116007A KR 20210034276 A KR20210034276 A KR 20210034276A
Authority
KR
South Korea
Prior art keywords
user
final
engine
utterance
dialogue
Prior art date
Application number
KR1020190116007A
Other languages
English (en)
Inventor
김선아
박영민
이정엄
Original Assignee
현대자동차주식회사
기아자동차주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 현대자동차주식회사, 기아자동차주식회사 filed Critical 현대자동차주식회사
Priority to KR1020190116007A priority Critical patent/KR20210034276A/ko
Priority to US16/918,927 priority patent/US11450320B2/en
Priority to CN202010788141.XA priority patent/CN112542170A/zh
Publication of KR20210034276A publication Critical patent/KR20210034276A/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/02Methods for producing synthetic speech; Speech synthesisers
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/04Segmentation; Word boundary detection
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/1822Parsing for meaning understanding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/221Announcement of recognition results
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/226Procedures used during a speech recognition process, e.g. man-machine dialogue using non-speech characteristics
    • G10L2015/228Procedures used during a speech recognition process, e.g. man-machine dialogue using non-speech characteristics of application context

Abstract

개시된 발명은 사용자 발화가 종료되기 전의 중간 발화를 이용하여 사용자의 의도를 파악함으로써 사용자 발화가 종료되기 전에 시스템 응답을 미리 생성하고, 사용자 발화가 종료되면 미리 생성된 시스템 응답을 출력함으로써 사용자 발화와 시스템 응답 사이에 딜레이 없이 자연스러운 대화의 흐름을 이어갈 수 있는 대화 시스템, 대화 처리 방법 및 전자 장치를 제공한다.
일 실시예에 따른 대화 시스템은 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하는STT(Speech to Text) 엔진; 상기 사용자 발화가 종료되기 전의 중간 발화를 처리하여 사용자 의도를 파악하고, 상기 사용자 의도에 대응되는 시스템 응답을 생성하는 중간 대화 엔진; 상기 사용자 발화가 종료된 후의 최종 발화를 처리하는 최종 대화 엔진; 상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 상기 중간 대화 엔진에 입력하고, 상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 상기 최종 대화 엔진에 입력하는 제어부; 및 상기 시스템 응답을 음성 신호로 변환하는TTS(Text to Speech) 엔진;을 포함한다.

Description

대화 시스템, 대화 처리 방법 및 전자 장치{DIALOGUE SYSTEM, DIALOGUE PROCESSING METHOD AND ELECTRONIC APPARATUS}
개시된 발명은 사용자와 대화를 주고 받을 수 있는 대화 시스템, 대화 처리 방법 및 전자 장치에 관한 것이다.
대화 시스템은 사용자의 발화를 인식하고 인식된 발화에 대응되는 서비스를 제공할 수 있다.
대화 시스템이 인식된 발화에 대응되는 서비스를 제공하기 위해 시스템 응답을 출력할 수 있다. 시스템 응답은 사용자의 질문에 대한 답변을 포함할 수도 있고, 사용자 발화를 확인하기 위한 질문을 포함할 수도 있으며, 제공될 서비스에 대한 안내를 포함할 수도 있다.
한편, 대화 시스템은 사용자의 발화가 종료된 이후에 인식을 시작하기 때문에 사용자 발화와 시스템 응답 사이에 딜레이가 있어 자연스러운 대화의 흐름을 이어가기가 어렵다.
개시된 발명은 사용자 발화가 종료되기 전의 중간 발화를 이용하여 사용자의 의도를 파악함으로써 사용자 발화가 종료되기 전에 시스템 응답을 미리 생성하고, 사용자 발화가 종료되면 미리 생성된 시스템 응답을 출력함으로써 사용자 발화와 시스템 응답 사이에 딜레이 없이 자연스러운 대화의 흐름을 이어갈 수 있는 대화 시스템, 대화 처리 방법 및 전자 장치를 제공한다.
일 실시예에 따른 대화 시스템은 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하는STT(Speech to Text) 엔진; 상기 사용자 발화가 종료되기 전의 중간 발화를 처리하여 사용자 의도를 파악하고, 상기 사용자 의도에 대응되는 시스템 응답을 생성하는 중간 대화 엔진; 상기 사용자 발화가 종료된 후의 최종 발화를 처리하는 최종 대화 엔진; 상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 상기 중간 대화 엔진에 입력하고, 상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 상기 최종 대화 엔진에 입력하는 제어부; 및 상기 사용자 의도에 대응되는 시스템 응답을 생성하는TTS(Text to Speech) 엔진;을 포함한다.
상기 중간 대화 엔진은, 상기 사용자 의도에 대응되는 시스템 응답을 상기 사용자 발화가 종료되기 전에 미리 생성할 수 있다.
상기 제어부는, 상기 사용자 발화가 종료되면, 상기 미리 생성된 시스템 응답을 출력하도록 상기 TTS 엔진을 제어할 수 있다.
상기 제어부는, 상기 중간 대화 엔진이 사용자 의도를 파악하지 못하였으면, 상기 마이크를 통해 입력된 다음 사용자 발화를 상기 중간 대화 엔진에 입력할 수 있다.
상기 사용자 발화가 종료되면, 상기 최종 발화 및 상기 최종 대화 엔진이 파악한, 상기 최종 발화에 대응되는 사용자 의도를 저장하는 저장부;를 더 포함할 수 있다.
상기 제어부는, 상기 저장된 최종 발화에서 한 글자를 삭제하여 제1중간발화 데이터를 생성하고, 상기 제1중간 발화 데이터를 상기 최종 대화 엔진에 입력할 수 있다.
상기 제어부는, 상기 최종 대화 엔진이 파악한 상기 제1 중간발화 데이터에 대응되는 사용자 의도가 상기 최종 발화에 대응되는 사용자 의도와 일치하면 상기 제1중간발화 데이터를 상기 저장부에 저장할 수 있다.
상기 제어부는, 상기 최종 대화 엔진이 파악한 상기 제1 중간발화 데이터에 대응되는 사용자 의도가 상기 최종 발화에 대응되는 사용자 의도와 일치하면, 상기 제1중간발화 데이터에서 한 글자를 삭제하여 제2중간발화 데이터를 생성하고, 상기 제2중간발화 데이터를 상기 최종 대화 엔진에 입력할 수 있다.
상기 제어부는, 상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진을 학습시킬 수 있다.
상기 제어부는, 상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진에 사용되는 규칙(Rule)을 생성할 수 있다.
일 실시예에 따른 대화 처리 방법은, 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하고; 상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 중간 발화를 처리하는 중간 대화 엔진에 입력하고; 상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 최종 발화를 처리하는 최종 대화 엔진에 입력하고; 상기 중간 대화 엔진이 파악한 사용자 의도 또는 상기 최종 대화 엔진이 파악한 사용자 의도에 대응되는 시스템 응답을 생성하는 것;을 포함한다.
상기 시스템 응답을 생성하는 것은, 상기 중간 대화 엔진이 상기 사용자 의도를 파악하였으면, 상기 중간 대화 엔진이 파악한 사용자 의도에 대응되는 시스템 응답을 상기 사용자 발화가 종료되기 전에 미리 생성하는 것;을 포함할 수 있다.
상기 방법은, 상기 사용자 발화가 종료되면, 상기 미리 생성된 시스템 응답을 출력하는 것;을 더 포함할 수 있다.
상기 방법은, 상기 중간 대화 엔진이 사용자 의도를 파악하지 못하였으면, 상기 마이크를 통해 입력된 다음 사용자 발화를 상기 중간 대화 엔진에 입력하는 것;을 더 포함할 수 있다.
상기 방법은, 상기 사용자 발화가 종료되면, 상기 최종 발화 및 상기 최종 대화 엔진이 파악한, 상기 최종 발화에 대응되는 사용자 의도를 저장하는 것;을 더 포함할 수 있다.
상기 방법은, 상기 저장된 최종 발화에서 한 글자를 삭제하여 제1중간발화 데이터를 생성하고, 상기 제1중간발화 데이터를 상기 최종 대화 엔진에 입력하는 것;을 더 포함할 수 있다.
상기 방법은, 상기 최종 대화 엔진이 파악한 상기 제1중간발화 데이터에 대응되는 사용자 의도가 상기 저장된 최종 발화에 대응되는 사용자 의도와 일치하면 상기 제1중간발화 데이터를 상기 저장부에 저장하는 것;을 더 포함할 수 있다.
상기 방법은, 상기 최종 대화 엔진이 파악한 상기 제1중간발화 데이터에 대응되는 사용자 의도가 상기 저장된 최종 발화에 대응되는 사용자 의도와 일치하면 상기 제1발화 데이터에서 한 글자를 삭제하여 제2중간발화 데이터를 생성하고, 상기 제2중간발화 데이터를 상기 최종 대화 엔진에 입력하는 것;을 더 포함할 수 있다.
상기 방법은, 상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진을 학습시키는 것;을 더 포함할 수 있다.
상기 방법은, 상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진에 사용되는 규칙(Rule)을 생성하는 것;을 더 포함할 수 있다.
일 실시예에 따른 전자 장치는, 하나 이상의 프로그램이 저장되는 메모리; 및 상기 저장된 프로그램을 실행하는 프로세서;를 포함하고, 상기 프로그램은, 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하고; 상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 중간 발화를 처리하는 중간 대화 엔진에 입력하고; 상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 최종 발화를 처리하는 최종 대화 엔진에 입력하고; 상기 중간 대화 엔진이 파악한 사용자 의도 또는 상기 최종 대화 엔진이 파악한 사용자 의도에 대응되는 시스템 응답을 생성하는 것;을 포함한다.
일 측면에 따른 대화 시스템, 대화 처리 방법 및 전자 장치에 의하면, 사용자 발화가 종료되기 전의 중간 발화를 이용하여 사용자의 의도를 파악하여 사용자 발화가 종료되기 전에 시스템 응답을 미리 생성하고, 사용자 발화가 종료되면 미리 생성된 시스템 응답을 출력함으로써 사용자 발화와 시스템 응답 사이에 딜레이 없이 자연스러운 대화의 흐름을 이어갈 수 있고, 사용자도 발화 종료 후에 시스템 응답을 기다릴 필요가 없어 대화 시스템의 사용 편의성이 향상될 수 있다.
도 1 은 일 실시예에 따른 대화 시스템의 제어 블록도이다.
도 2는 일 실시예에 따른 대화 시스템이 사용자 발화를 처리하는 구체적인 예시를 나타낸 도면이다.
도 3, 도 4 및 도 7은 일 실시예에 따른 대화 시스템의 저장부에 저장되는 데이터베이스의 예시를 나타낸 도면이고, 도 5및 도 6은 중간 대화 엔진을 구축하기 위한 데이터 가공의 예시를 나타내는 도면이다.
도 8은 일 실시예에 따른 대화 처리 방법의 순서도이다.
도 9는 일 실시예에 따른 대화 처리 방법에 있어서, 로그 DB에 저장된 데이터를 사용하여 중간 대화 엔진을 업데이트하는 과정을 나타낸 순서도이다.
본 명세서에 기재된 실시예와 도면에 도시된 구성은 개시된 발명의 바람직한 일 예이며, 본 출원의 출원시점에 있어서 본 명세서의 실시예와 도면을 대체할 수 있는 다양한 변형 예들이 있을 수 있다.
또한, 본 명세서에서 사용한 용어는 실시예를 설명하기 위해 사용된 것으로, 개시된 발명을 제한 및/또는 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다", "구비하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는다.
또한, "~부", "~기", "~블록", "~부재", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미할 수 있다. 예를 들어, 상기 용어들은 FPGA(field-programmable gate array)/ASIC(application specific integrated circuit) 등 적어도 하나의 하드웨어, 메모리에 저장된 적어도 하나의 소프트웨어 또는 프로세서에 의하여 처리되는 적어도 하나의 프로세스를 의미할 수 있다.
또한, 본 명세서에서 설명되는 구성요소 앞에 사용되는 "제1~", "제2~"와 같은 서수는 구성요소들을 상호 구분하기 위해 사용되는 것일 뿐, 이들 구성요소들 사이의 연결 순서, 사용 순서, 우선 순위 등의 다른 의미를 갖는 것은 아니다.
각 단계들에 붙여지는 부호는 각 단계들을 식별하기 위해 사용되는 것으로 이들 부호는 각 단계들 상호 간의 순서를 나타내는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 실시될 수 있다.
한편, 개시된 실시예들은 컴퓨터에 의해 실행 가능한 명령어를 저장하는 기록매체의 형태로 구현될 수 있다. 명령어는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 프로그램 모듈을 생성하여 개시된 실시예들의 동작을 수행할 수 있다. 기록매체는 컴퓨터로 읽을 수 있는 기록매체로 구현될 수 있다.
컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터에 의하여 해독될 수 있는 명령어가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있을 수 있다.
이하에서는 첨부된 도면을 참조하여 일 측면에 따른 대화 시스템, 대화 처리 방법 및 전자 장치에 관한 실시예를 상세하게 설명하도록 한다.
일 실시예에 따른 대화 시스템은 사용자의 발화를 분석하여 사용자의 의도를 파악하고 사용자의 의도에 적합한 서비스를 제공하는 장치이다. 대화 시스템은 사용자의 의도에 적합한 서비스를 제공함에 있어서 시스템 응답을 출력함으로써, 사용자로 하여금 대화 시스템과 대화를 하는 듯한 느낌을 갖게 할 수 있다. 시스템 응답은 사용자의 질문에 대한 답변, 사용자의 의도를 확인하기 위한 질문, 제공될 서비스에 대한 안내 등을 포함할 수 있다.
도 1 은 일 실시예에 따른 대화 시스템의 제어 블록도이다.
도 1을 참조하면, 일 실시예에 따른 대화 시스템(100)은 마이크(10)를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하는STT(Speech to Text) 엔진(110); 사용자 발화가 종료되기 전의 중간 발화를 처리하여 사용자 의도를 파악하고, 상기 사용자 의도에 대응되는 시스템 응답을 생성하는 중간 대화 엔진(130); 사용자 발화가 종료된 후의 최종 발화를 처리하는 최종 대화 엔진(140); 사용자 발화가 종료되지 않았으면, 변환된 텍스트를 중간 대화 엔진(130)에 입력하고, 사용자 발화가 종료되었으면, 변환된 텍스트를 최종 대화 엔진(140)에 입력하는 제어부(120); 대화 시스템(100)의 동작에 필요한 각종 데이터를 저장하는 저장부(150); 및 상기 시스템 응답을 음성 신호로 변환하는TTS(Text to Speech) 엔진(160);을 포함한다. 음성 신호로 변환된 시스템 응답은 스피커(20)를 통해 출력될 수 있다.
일 실시예에 따른 대화 시스템(100)은 서버로 구현될 수 있고, 이 경우 대화 시스템(100)의 구성요소들(110, 120, 130, 140, 150, 160)은 서버에 마련될 수 있다. 그러나, 대화 시스템(100)의 구성요소들(110, 120, 130, 140, 150, 160) 중 일부가 사용자와 대화 시스템(100)을 연결해주는 사용자 단말기에 마련되는 것도 가능하다.
일 실시예에 따른 대화 시스템(100)은 후술하는 동작을 수행하는 프로그램 및 관련 데이터를 저장하는 적어도 하나의 메모리와 저장된 프로그램을 실행하는 적어도 하나의 프로세서를 포함할 수 있다.
STT 엔진(110), 제어부(120), 중간 대화 엔진(130), 최종 대화 엔진(140) 및 TTS 엔진(160)이 각각 별도의 메모리와 프로세서를 사용하는 것도 가능하고, 이들 중 일부 또는 전부가 메모리와 프로세서를 공유하는 것도 가능하다.
또한, 제어부(120)는 별개의 구성으로 마련되는 것도 가능하나, 후술하는 제어부(120)의 동작들을 STT 엔진(110), 중간 대화 엔진(130), 최종 대화 엔진(140) 및 TTS 엔진(160) 중 해당 동작과 관련된 구성에서 수행하는 것도 가능하다. 예를 들어, 제어부(120)의 동작 중 중간 대화 엔진(130)의 제어와 관련된 동작은 중간 대화 엔진(130)에서 수행하는 것도 가능하다.
즉, 당해 실시예에서의 구성요소들은 물리적인 위치나 구성이 아니라 동작을 기준으로 구분한 것으로서, 어떤 대화 시스템이 제어부라 지칭되는 별개의 프로세서를 두지 않고, 대화 엔진이라 지칭되는 프로세서에서 본 명세서의 청구범위에 기재된 제어부(120)의 동작을 수행한다고 하여 일 실시예에 따른 대화 시스템(100)의 권리범위를 벗어나는 것은 아니다.
또한, 어떤 대화 시스템이 중간 대화 엔진과 최종 대화 엔진을 별개로 마련하지 않는다고 하더라도 하나의 대화 엔진에서 본 명세서의 청구범위에 기재된 중간 대화 엔진(130)과 최종 대화 엔진(140)의 동작을 수행한다면 일 실시예에 따른 대화 시스템(100)의 권리범위에 포함되는 것이다. 즉, 하나의 프로세서에서 중간 대화 엔진(130)의 동작을 수행하는 프로그램과 최종 대화 엔진(140)의 동작을 수행하는 프로그램이 모두 실행될 수도 있고, 하나의 프로그램에서 중간 대화 엔진(130)의 동작과 최종 대화 엔진(140)의 동작이 모두 실행될 수도 있다.
예를 들어, 사용자 단말기가 차량인 경우에는 차량에 대화 시스템(100)의 구성요소들 중 일부가 마련될 수 있고, 사용자 단말기가 스마트폰과 같은 모바일 기기, AI 스피커 또는 PC인 경우에는 모바일 기기, AI 스피커 또는 PC에 대화 시스템(100)의 구성요소들 중 일부가 마련될 수 있다.
또는, 사용자가 대화 시스템(100)의 구성요소들 중 일부의 기능을 수행하는 프로그램을 사용자 단말기에 다운로드 받아 사용하는 것도 가능하다.
마이크(10)와 스피커(20)는 차량, 모바일 기기, PC 등의 사용자 단말기에 마련될 수 있고, 사용자 단말기는 무선 통신을 통해 대화 시스템(100)과 연결될 수 있다. 도 1의 제어 블록도에는 도시되지 않았으나, 대화 시스템(100)은 사용자 단말기와 무선 통신을 통해 데이터를 주고 받을 수 있는 무선 통신 모듈을 더 포함할 수 있다.
마이크(10)를 통해 입력된 사용자 발화는 스트리밍 신호의 형태로 대화 시스템(100)의 무선 통신 모듈에 전송될 수 있다.
STT 엔진(110)은 스트리밍 신호의 형태로 전송된 사용자 발화에 음성 인식(speech recognition) 알고리즘을 적용하여 텍스트로 변환할 수 있다. 예를 들어, 켑스트럼(Cepstrum), 선형 예측 코딩(Linear Predictive Coefficient: LPC), 멜프리퀀시켑스트럼(Mel Frequency Cepstral Coefficient: MFCC) 또는 필터 뱅크 에너지(Filter Bank Energy) 등의 특징 벡터 추출 기술을 적용하여 사용자 발화에 대응되는 음성 신호의 특징 벡터를 추출할 수 있다.
그리고, 추출된 특징 벡터와 훈련된 기준 패턴과의 비교를 통하여 인식 결과를 얻을 수 있다. 이를 위해, 음성의 신호적인 특성을 모델링하여 비교하는 음향 모델(Acoustic Model) 과 인식 어휘에 해당하는 단어나 음절 등의 언어적인 순서 관계를 모델링하는 언어 모델(Language Model)이 사용될 수 있다.
음향 모델은 다시 인식 대상을 특징 벡터 모델로 설정하고 이를 음성 데이터의 특징 벡터와 비교하는 직접 비교 방법과 인식 대상의 특징 벡터를 통계적으로 처리하여 이용하는 통계 방법을 나뉠 수 있다.
직접 비교 방법은 인식 대상이 되는 단어, 음소 등의 단위를 특징 벡터 모델로 설정하고 입력 음성이 이와 얼마나 유사한지를 비교하는 방법으로서, 대표적으로 벡터 양자화(Vector Quantization) 방법이 있다. 벡터 양자화 방법에 의하면 입력된 음성 데이터의 특징 벡터를 기준 모델인 코드북(codebook)과 매핑시켜 대표 값으로 부호화함으로써 이 부호 값들을 서로 비교하는 방법이다.
통계적 모델 방법은 인식 대상에 대한 단위를 상태 열(State Sequence)로 구성하고 상태 열 간의 관계를 이용하는 방법이다. 상태 열은 복수의 노드(node)로 구성될 수 있다. 상태 열 간의 관계를 이용하는 방법은 다시 동적 시간 와핑(Dynamic Time Warping: DTW), 히든 마르코프 모델(Hidden Markov Model: HMM), 신경 회로망을 이용한 방식 등이 있다.
동적 시간 와핑은 같은 사람이 같은 발음을 해도 신호의 길이가 시간에 따라 달라지는 음성의 동적 특성을 고려하여 기준 모델과 비교할 때 시간 축에서의 차이를 보상하는 기술이고, 히든 마르코프 모델은 음성을 상태 천이 확률 및 각 상태에서의 노드(출력 심볼)의 관찰 확률을 갖는 마르코프 프로세스로 가정한 후에 학습 데이터를 통해 상태 천이 확률 및 노드의 관찰 확률을 추정하고, 추정된 모델에서 입력된 음성이 발생할 확률을 계산하는 인식 기술이다.
한편, 단어나 음절 등의 언어적인 순서 관계를 모델링하는 언어 모델은 언어를 구성하는 단위들 간의 순서 관계를 음성 인식에서 얻어진 단위들에 적용함으로써 음향적인 모호성을 줄이고 인식의 오류를 줄일 수 있다. 언어 모델에는 통계적 언어 모델과 유한 상태 네트워크(Finite State Automata: FSA)에 기반한 모델이 있고, 통계적 언어 모델에는 Unigram, Bigram, Trigram 등 단어의 연쇄 확률이 이용된다.
STT 엔진(110)은 사용자 발화에 대응되는 음성 신호를 인식하고 텍스트로 변환함에 있어 상술한 방식 중 어느 방식을 사용해도 무방하다. 예를 들어, 히든 마르코프 모델이 적용된 음향 모델을 사용할 수도 있고, 음향 모델과 음성 모델을 통합한 N-best 탐색법을 사용할 수 있다. N-best 탐색법은 음향 모델과 언어 모델을 이용하여 N개까지의 인식 결과 후보를 선택한 후, 이들 후보의 순위를 재평가함으로써 인식 성능을 향상시킬 수 있다.
또한, STT 엔진(110)은 인식 결과의 신뢰성을 확보하기 위해 신뢰도 점수(confidence score)를 계산할 수도 있다. 신뢰도 점수는 음성 인식 결과에 대해서 그 결과를 얼마나 믿을 만한 것인가를 나타내는 척도로서, 인식된 결과인 음소나 단어에 대해서, 그 외의 다른 음소나 단어로부터 그 말이 발화되었을 확률에 대한 상대값으로 정의할 수 있다. 따라서, 신뢰도 점수는 0 에서 1 사이의 값으로 표현할 수도 있고, 0 에서 100 사이의 값으로 표현할 수도 있다. 신뢰도 점수가 미리 설정된 임계값(threshold)보다 큰 경우에는 인식 결과를 인정하고, 작은 경우에는 인식 결과를 거절(rejection)할 수 있다.
한편, STT 엔진(110)은 사용자 발화에 대응되는 음성 신호에 끝점 검출(End Point Detection: EPD) 알고리즘을 적용하여 사용자 발화가 종료되었는지 여부를 결정할 수도 있다. 음성 인식 분야에는 다양한 EPD 알고리즘이 공지되어 있는바, STT 엔진(110)은 공지된 알고리즘 중 어느 것을 사용해도 무방하다.
STT 엔진(110)은 사용자 발화가 종료되었는지 여부와 무관하게 마이크(10)에 입력되는 사용자 발화를 실시간으로 텍스트로 변환하여 출력할 수 있다. 이 때, EPD도 함께 수행할 수 있는바, 실시간으로 변환되는 텍스트와 EPD 결과가 함께 출력될 수 있다.
중간 대화 엔진(130)과 최종 대화 엔진(140)은 STT 엔진(110)에서 출력되는 텍스트에 자연어 이해 기술(Natural Language Understanding)을 적용하여 사용자 발화에 대응되는 사용자 의도를 파악할 수 있다. 이하, 중간 대화 엔진(130)과 최종 대화 엔진(140)에 공통적으로 적용되는 설명에서는 이들을 포괄적으로 지칭하여 대화 엔진이라 하기로 한다.
대화 엔진은 텍스트 형태의 사용자 발화에 대해 형태소 분석을 수행하여 입력 문자열을 형태소열로 바꿔준다. 또한, 대화 엔진은 사용자 발화로부터 개체명을 인식할 수 있다. 개체명은 인명, 지명, 조직명, 시간, 날짜, 화폐 등의 고유 명사로서, 개체명 인식은 문장에서 개체명을 식별하고 식별된 개체명의 종류를 결정하는 작업이다. 개체명 인식을 통해 문장에서 중요한 키워드를 추출하여 문장의 의미를 파악할 수 있다.
대화 엔진은 사용자 발화로부터 도메인을 추출할 수 있다. 도메인은 사용자가 발화한 언어의 주제를 식별할 수 있는 것으로서, 예를 들어, 문자, 내비게이션, 일정, 날씨, 교통, 차량 제어 등의 다양한 주제를 나타내는 도메인이 데이터베이스화 되어 저장부(150)에 저장될 수 있다.
대화 엔진은 사용자 발화가 갖는 화행을 분석할 수 있다. 화행 분석은 사용자 발화의 의도를 분석하는 작업으로, 사용자가 질문을 하는 것인지, 요청을 하는 것인지, 응답을 하는 것인지, 단순한 감정 표현을 하는 것인지 등의 발화의 의도를 파악하는 것이다.
대화 엔진은 사용자 발화에 대응되는 도메인, 개체명, 화행 등의 정보에 기초하여 사용자 의도를 파악하고, 사용자 의도에 대응되는 액션을 추출할 수 있다. 액션은 오브젝트(Object)와 오퍼레이터(Operator)에 의해 정의될 수 있다.
예를 들어, 파악된 사용자 의도가 [에어컨 실행]인 경우에 그에 대응되는 액션은 『에어컨(오브젝트)_ON(오퍼레이터)』으로 정의될 수 있고, 파악된 사용자 의도가 [문자 전송]인 경우에 그에 대응되는 액션은 『문자(오브젝트)_전송(오퍼레이터) 』로 정의될 수 있다.
또한, 대화 엔진은 액션 수행과 관련된 인자를 추출하는 것도 가능하다. 액션 수행과 관련된 인자는 액션을 수행하는데 직접적으로 필요한 유효 인자일 수도 있고, 이러한 유효 인자를 추출하기 위해 사용되는 비유효 인자일 수도 있다.
예를 들어, STT 엔진(110)이 출력한 텍스트가 "길동이에게 문자 보내줘"인 경우에, 대화 엔진은 사용자 발화에 대응되는 도메인을 『문자』로 결정하고, 액션을 『문자_전송』으로 결정할 수 있다. 화행은 『요청』에 해당한다.
개체명인 『길동이』는 액션 수행과 관련된 {인자1: 수신자}에 해당하나, 실제 문자 전송을 위해서는 {인자2: 구체적인 메시지 내용}이 더 필요하다. 이 경우, 대화 시스템(100)이 시스템 응답 "전송할 메시지를 말씀해주세요"를 출력하여 사용자로부터 구체적인 메시지 내용을 획득할 수 있다.
한편, 중간 대화 엔진(130)과 최종 대화 엔진(140)의 차이점은 중간 대화 엔진(130)이 사용자 발화가 종료되기 전의 중간 발화를 처리한다는 점이다. 즉, 중간 대화 엔진(130)은 일반적인 자연어 이해 기술을 적용하여 처리되는 완전한 문장이 아니더라도 해당 문장을 분석하여 사용자 의도를 파악할 수 있다.
이를 위해, 대화 시스템(100)은 후술하는 바와 같이, 중간 발화 처리를 위한 학습(learning)을 수행할 수도 있고, 중간 발화 처리를 위한 규칙을 구축할 수도 있다.
제어부(120)는 사용자 발화가 종료되지 않은 경우에는 STT 엔진(110)으로부터 출력되는 텍스트, 즉 중간 발화의 텍스트를 중간 대화 엔진(130)에 입력하고, 사용자 발화가 종료된 경우에는 STT 엔진(110)으로부터 출력되는 텍스트, 즉 최종 발화의 텍스트를 최종 대화 엔진(140)에 입력할 수 있다.
전술한 바와 같이, STT 엔진(110)이 사용자 발화에 대응되는 텍스트와 함께 EPD 결과를 출력하므로, 제어부(120)는 STT 엔진(110)에서 출력되는 EPD 결과에 기초하여 사용자 발화가 종료되었는지 여부를 판단할 수 있다.
전술한 바와 같이, 중간 대화 엔진(130)과 최종 대화 엔진(140)은 각각 입력된 중간 발화 및 최종 발화를 분석하여 사용자 의도를 파악하고, 사용자 의도 파악에 성공하면 그 결과를 출력할 수 있다. 중간 대화 엔진(130)과 최종 대화 엔진(140)이 출력하는 결과에는 사용자 의도에 대응되는 액션과 해당 액션에 관련된 인자들 및 이에 대응되는 시스템 응답이 포함될 수 있다.
중간 대화 엔진(130)은 사용자 의도에 대응되는 시스템 응답을 생성할 수 있다. 예를 들어, 사용자 의도가 [에어컨 실행]인 경우에는 "에어컨을 실행할까요?"라는 시스템 응답을 생성할 수 있고, 사용자 의도가 [문자 전송]인 경우에는 "누구에게 어떤 내용으로 문자를 전송할까요?"라는 시스템 응답을 생성할 수 있다.
다만, 중간 대화 엔진(130)이 중간 발화에 대응되는 사용자 의도 파악에 실패한 경우에는, 최종 대화 엔진(130)이 최종 발화에 대응되는 사용자 의도를 파악하고, 사용자 의도에 대응되는 시스템 응답을 생성할 수 있다. 생성된 시스템 응답은 TTS 엔진(160)으로 입력되고, TTS 엔진(160)은 시스템 응답을 음성 신호로 변환할 수 있다.
한편, 중간 대화 엔진(130)은 사용자 의도에 대응되는 시스템 응답을 사용자 발화가 종료되기 전에 미리 생성할 수 있다. 또한, 중간 대화 엔진(130)이 사용자 발화가 종료되기 전의 중간 발화를 처리하여 시스템 응답을 생성하기 때문에 TTS 엔진(110)도 사용자 발화가 종료되기 전에 미리 시스템 응답을 음성 신호로 변환할 수 있다.
또한, 제어부(120)는 사용자 발화가 종료된 직후에 생성된 시스템 응답을 출력하도록 TTS 엔진(110)을 제어할 수 있는바, 사용자 발화와 시스템 응답 사이에 딜레이가 줄어들기 때문에 사용자는 실제로 대화하는 것과 같은 느낌을 받게 되고 대화 시스템의 사용 편의성이 향상될 수 있다.
도 2는 일 실시예에 따른 대화 시스템이 사용자 발화를 처리하는 구체적인 예시를 나타낸 도면이다.
도 2를 참조하여 사용자의 최종 발화가 "달이야 에어컨 켜 줄래"인 경우를 예로 들어 대화 시스템(100)의 구체적인 동작을 설명한다. 여기서, "달이야"는 대화 시스템(100)의 호출어인 것으로 한다.
마이크(10)를 통해 사용자 발화가 입력되면 STT 엔진(110)은 입력된 사용자 발화를 실시간으로 텍스트로 변환한다. STT 엔진(110)에 "달이야"까지 입력되면 STT 엔진(110)은 이를 텍스트로 변환하고 호출어가 입력되었음을 인식할 수 있다. 호출어가 인식되면 대화 시스템(100)이 활성화된다.
호출어인 "달이야" 이후에 "에어컨"까지 입력되면 STT (110) 엔진은 이를 텍스트로 변환하고 EPD 결과(발화 종료 아님)와 함께 출력할 수 있다. 따라서, "에어컨"은 중간 발화가 된다.
제어부(120)는 중간 발화인 "에어컨"을 중간 대화 엔진(130)에 입력할 수 있다. 중간 대화 엔진(130)이 "에어컨"을 처리할 경우, 사용자 의도를 파악하기 어렵다. 따라서, 그 처리 결과는 실패가 된다.
제어부(120)는 중간 대화 엔진(130)이 사용자 의도를 파악하지 못하였으면, 즉 중간 대화 엔진(130)의 처리 결과가 실패이면, 마이크(10)를 통해 입력된 다음 사용자 발화를 중간 대화 엔진(130)에 입력할 수 있다.
당해 예시에서는 "에어컨" 다음 발화인 "켜"까지 중간 대화 엔진(130)에 입력될 수 있고, 중간 대화 엔진(130)은 중간 발화인 "에어컨 켜"에 대응되는 사용자 의도를 파악하기 위해 자연어 이해 기술을 적용할 수 있다.
중간 대화 엔진(130)은 중간 발화인 "에어컨 켜"에 대응되는 사용자 의도를 [에어컨 실행]으로 파악하고, 사용자 의도에 대응되는 시스템 응답을 생성할 수 있다. 당해 예시에서는 사용자 의도 확인 및 제공되는 서비스의 안내를 위해 "에어컨을 실행합니다"라는 시스템 응답을 생성할 수 있다.
다음 사용자 발화인 "줄래"까지 입력이 되고, STT 엔진(110)의 출력에 포함된 EPD 결과가 발화 종료를 나타내면, 제어부(120)는 최종 발화인 "에어컨 켜 줄래"를 최종 대화 엔진(140)에 입력할 수 있다. 최종 대화 엔진(140)의 처리 결과는 후술하는 바와 같이 저장부(150)에 저장될 수 있다.
또한, 제어부(120)는 사용자 발화가 종료되면 TTS 엔진(160)을 제어하여 미리 생성된 서비스 응답을 출력할 수 있다.
한편, 당해 예시에서는 중간 발화를 이용한 사용자 의도 파악에 성공한 경우를 예로 들었으나, 앞서 언급한 바와 같이 중간 발화를 이용하여 사용자 의도를 파악할 수 없는 경우도 있을 수 있다. 이러한 경우에 최종 대화 엔진(140)에서 파악된 사용자 의도에 대응되는 시스템 응답을 생성할 수 있다.
도 3, 도 4 및 도 7은 일 실시예에 따른 대화 시스템의 저장부에 저장되는 데이터베이스의 예시를 나타낸 도면이고, 도 5 및 도 6은 중간 대화 엔진을 구축하기 위한 데이터 가공의 예시를 나타내는 도면이다.
일 실시예에 따른 대화 시스템(100)은 규칙 기반(rule based) 대화 처리 알고리즘을 사용할 수도 있고, 학습 기반(learning based) 대화 처리 알고리즘을 사용할 수도 있다. 규칙 기반 대화 처리 알고리즘을 사용하는 경우에는 도 3에 도시된 바와 같이, 대화 처리에 사용되는 규칙이 저장된다.
도 3을 참조하면, 저장부(150)는 중간 대화 엔진(130)의 대화 처리에 사용되는 중간 규칙 DB(151)와 최종 대화 엔진(140)의 대화 처리에 사용되는 최종 규칙 DB(152)를 포함할 수 있다.
저장부(150)는 ROM(Read Only Memory), EPROM(Erasable Programmable Read Only Memory), EEPROM(Electrically Erasable Programmable Read only Memory), 플래시 메모리 등과 같은 비휘발성 메모리를 포함할 수 있고, S-RAM (Static Random Access Memory), D-RAM(Dynamic Random Access Memory) 등의 휘발성 메모리를 더 포함할 수도 있다. 저장되는 정보의 종류에 따라 비휘발성 메모리에 저장될 수도 있고, 휘발성 메모리에 저장될 수도 있다.
중간 규칙 DB(151)에는 중간 발화에 포함된 사용자 의도를 파악하는 규칙, 사용자 의도에 부합하는 시스템 응답을 생성하는 규칙 등이 저장될 수 있다.
또한, 최종 규칙 DB(152)에는 최종 발화에 포함된 사용자 의도를 파악하는 규칙, 사용자 의도에 부합하는 시스템 응답을 생성하는 규칙 등이 저장될 수 있다.
한편, 중간 대화 엔진(130)을 구축하거나 업데이트하기 위해 최종 대화 엔진의 처리 결과를 이용할 수 있다. 이하, 도 4 내지 도 6을 참조하여 설명한다.
도 4를 참조하면, 저장부(150)는 최종 대화 엔진의 로그 데이터를 저장하는 로그 DB(153) 및 중간 대화 엔진의 구축 또는 업데이트에 사용되는 데이터를 저장하는 중간 대화 엔진용 DB(154)를 포함할 수 있다.
로그 데이터는 텍스트 형태의 사용자 발화와 최종 대화 엔진(140)이 파악한 사용자 의도를 포함할 수 있다.
도 5에 도시된 예시와 같이, 최종 대화 엔진(140)에 입력된 텍스트 형태의 사용자 발화에 최종 대화 엔진(140)이 파악한 사용자 의도가 매칭되어 저장될 수 있다. 예를 들어, 사용자 발화 "에어컨 켜줘"에는 그에 대응되는 사용자 의도 [에어컨_ON]이 매칭되어 저장될 수 있고, 사용자 발화 "에어컨 꺼줄래"에는 그에 대응되는 사용자 의도 [에어컨_OFF]가 매칭되어 저장될 수 있다. 사용자 발화 "에어컨 온도 18도로 설정해"에는 그에 대응되는 사용자 의도 [에어컨_설정(18)]이 매칭되어 저장될 수 있다.
제어부(120)는 로그 DB(153)에 저장된 로그 데이터를 가공하여 중간 대화 엔진(130)을 구축하거나 업데이트하는데 사용될 데이터를 생성할 수 있다.
예를 들어, 로그 DB(153)에 저장된 사용자 발화에서 한 글자씩 삭제하여 중간 발화 데이터를 생성하고, 생성된 중간 발화 데이터를 최종 대화 엔진(140)에 입력할 수 있다. 최종 대화 엔진(140)이 파악한 사용자 의도가 로그 DB(153)에 저장된 사용자 의도와 일치하면 중간 발화 데이터를 중간 대화 엔진용 DB(154)에 저장할 수 있다.
최종 대화 엔진(140)이 사용자 의도 파악에 실패하거나, 최종 대화 엔진(140)이 파악한 사용자 의도가 로그 DB(153)에 저장된 사용자 의도와 일치하지 않을 때까지 한 글자씩 더 삭제하여 전술한 과정을 반복할 수 있다.
구체적으로, 로그 DB(153)에 저장된 사용자 발화에서 한 글자를 삭제하여 제1 중간 발화 데이터를 생성하고, 제1 중간 발화 데이터를 최종 대화 엔진(140)에 입력할 수 있다. 최종 대화 엔진(140)이 파악한 제1 중간 발화 데이터에 대응되는 사용자 의도가 로그 DB(153)에 저장된 사용자 의도와 일치하면 제1 중간 발화 데이터를 중간 대화 엔진용 DB(154)에 저장할 수 있다.
중간 대화 엔진(130)은 중간 대화 엔진용 DB(154)에 저장된 중간 발화 데이터에 의해 업데이트될 수 있다. 여기서, 업데이트는 저장된 데이터를 활용한 학습 또는 새로운 규칙 생성을 포함할 수 있다.
제어부(120)는 제1 중간 발화 데이터에서 한 글자를 더 삭제하여 제2 중간 발화 데이터를 생성하고, 제2 중간 발화 데이터를 최종 대화 엔진(140)에 입력할 수 있다. 최종 대화 엔진(140)이 파악한 제2 중간 발화 데이터에 대응되는 사용자 의도가 로그 DB(153)에 저장된 사용자 의도와 일치하면 제2 중간 발화 데이터도 중간 대화 엔진용 DB(154)에 저장할 수 있다. 중간 대화 엔진(130)은 추가된 데이터에 의해 다시 업데이트될 수 있다.
최종 대화 엔진(140)이 사용자 의도를 파악하지 못하거나 로그 DB(154)에 저장된 사용자 의도와 다르게 파악할 때까지 전술한 과정을 반복할 수 있다.
도 6의 예시를 참조하면, 로그 DB(153)에 저장된 사용자 발화 "에어컨 켜줘"에서 한 글자를 삭제하여 생성한 제1 중간 발화 데이터 "에어컨 켜"를 최종 대화 엔진(140)에 입력했을 때, 최종 대화 엔진(140)이 출력한 사용자 의도가 [에어컨_ON]이면, 제어부(120)는 제1 중간 발화 데이터 "에어컨 켜"와 사용자 의도 [에어컨_ON]을 매칭시켜 중간 대화 엔진용 DB(154)에 저장할 수 있다.
또한, 로그 DB(153)에 저장된 사용자 발화 "에어컨 꺼줄래"에서 한 글자를 삭제하여 생성한 제1 중간 발화 데이터 "에어컨 꺼줄"을 최종 대화 엔진(140)에 입력했을 때, 최종 대화 엔진(140)이 출력한 사용자 의도가 [에어컨_OFF]이면, 제어부(120)는 제1 중간 발화 데이터 "에어컨 꺼줄"과 사용자 의도 [에어컨_OFF]을 매칭시켜 중간 대화 엔진용 DB(154)에 저장할 수 있다.
또한, 로그 DB(153)에 저장된 사용자 발화 "에어컨 온도 18도로 설정해"에서 한 글자를 삭제하여 생성한 제1중간발화 데이터 "에어컨 온도 18도로 설정"을 최종 대화 엔진(140)에 입력했을 때, 최종 대화 엔진(140)이 출력한 사용자 의도가 [에어컨_설정(18)]이면, 제어부(120)는 제1 중간 발화 데이터 "에어컨 온도 18도로 설정"과 사용자 의도 [에어컨_설정(18)]을 매칭시켜 중간 대화 엔진용 DB(154)에 저장할 수 있다.
중간 대화 엔진용 DB(154)에 저장된 중간 발화 데이터는 중간 대화 엔진(130)을 학습하는데 사용되거나, 중간 대화 엔진(130)이 사용자 의도를 파악하는데 사용되는 규칙을 생성하는데 사용될 수 있다.
중간 대화 엔진(130)이 사용자 의도를 파악하는데 사용되는 규칙의 일 예로, 어휘 의미 패턴(Lexico Semantic Pattern)이 사용될 수 있다. 따라서, 제어부(120)는 중간 대화 엔진용 DB(154)에 저장된 중간 발화 데이터들에 기초하여 어휘 의미 패턴을 생성할 수 있다.
또한, 규칙을 생성함에 있어서는 중간 발화 데이터 중에서 최종 대화 엔진(140)이 사용자 의도를 인식하는데 실패한 데이터도 활용할 수 있다. 따라서, 이 경우에는 사용자 발화에서 한 글자씩 삭제된 중간 발화 데이터 중에서 최종 대화 엔진(140)이 사용자 의도 파악에 실패한 데이터는 도 7에 도시된 바와 같이 별도의 규칙 생성용 DB(155)에 저장될 수 있다. 여기서, 사용자 의도를 다르게 파악한 데이터는 사용하지 않는다.
중간 대화 엔진(130)에서 사용되는 규칙은 사용자가 수동으로 생성하는 것도 가능하다. 구체적으로, 규칙 생성용 DB(155)에 저장된 사용자 의도 파악에 실패한 데이터는 사용자가 직접 의도를 파악하여 규칙을 생성할 수 있다.
예를 들어, 로그 DB(153)에 저장된 사용자 발화가 "에어컨 실행해"인 경우, 여기서 한 글자 삭제한 제1중간 발화 데이터 "에어컨 실행"은 최종 대화 엔진(140)에서 사용자 의도 파악이 가능하다. 따라서, 중간 대화 엔진용 DB(154)에 저장되고, 여기서 한 글자 더 삭제한 제2중간 발화 데이터 "에어컨 실"은 최종 대화 엔진(140)에서 사용자 의도 파악이 불가하므로 규칙 생성용 DB(155)에 저장될 수 있다.
다른 예로, 로그 DB(153)에 저장된 사용자 발화가 "에어컨 방향 아래로 맞춰줘"인 경우, 여기서 한 글자 삭제한 제1중간 발화 데이터 "에어컨 방향 아래로 맞춰"는 최종 대화 엔진(140)에서 사용자 의도 파악이 가능하다. 따라서, 중간 대화 엔진용 DB(154)에 저장되고, 여기서 한 글자 더 삭제한 제2중간 발화 데이터 "에어컨 방향 아래로"는 최종 대화 엔진(140)에서 사용자 의도 파악이 불가하므로 규칙 생성용 DB(155)에 저장될 수 있다.
사용자는 규칙 생성용 DB(155)에 저장된 중간 발화 데이터를 이용하여 수동으로 규칙을 생성할 수 있다. 예를 들어, "에어컨 방향 아래로"는 사용자가 수동으로 의도를 파악할 경우 그 의도 파악이 가능하다. 따라서, <사용자 발화: 에어컨 방향 아래
Figure pat00001
사용자 의도: [에어컨_방향조절(아래)]>인 것으로 규칙을 생성할 수 있다.
반면에, 규칙 생성용 DB(155)에 저장된 "에어컨 실"은 수동으로도 의미 파악이 불가하므로, 규칙 생성에 사용하지 않는다.
이하, 일 실시예에 따른 대화 처리 방법에 대해 설명한다. 일 실시예에 따른 대화 처리 방법을 실시함에 있어서 전술한 실시예에 따른 대화 시스템이 사용될 수 있다. 따라서, 도 1 내지 도 7을 참조하여 설명한 내용은 별도의 언급이 없더라도 대화 처리 방법의 실시예에도 적용될 수 있고, 대화 처리 방법의 실시예에 대해 후술하는 설명 역시 대화 시스템의 실시예에도 적용될 수 있다.
도 8은 일 실시예에 따른 대화 처리 방법의 순서도이다.
도 8에 도시된 대화 처리 방법에 따르면, 마이크(10)를 통해 사용자 발화가 입력되면(310의 예), 사용자 발화를 실시간으로 텍스트로 변환한다(311).
전술한 바와 같이, STT 엔진(110)에 사용자 발화가 스트리밍 신호의 형태로 입력되면, STT 엔진(110)은 입력된 사용자 발화를 실시간으로 텍스트로 변환하여 출력할 수 있다. 이 때, EPD 결과도 함께 출력할 수 있다.
사용자 발화가 종료되지 않았으면(312의 아니오), 변환된 텍스트를 중간 대화 엔진(130)에 입력하고(313), 사용자 발화가 종료되었으면(312의 예), 변환된 텍스트를 최종 대화 엔진(140)에 입력한다(316).
제어부(120)는 STT 엔진(110)에서 출력되는 EPD 결과에 기초하여 사용자 발화의 종료 여부를 판단할 수 있는바, EPD 결과가 사용자 발화의 종료가 아님을 나타내면 변환된 텍스트, 즉 중간 발화의 텍스트를 중간 대화 엔진(130)에 입력하고, EPD 결과가 사용자 발화의 종료를 나타내면 변환된 텍스트, 즉 최종 발화의 텍스트를 최종 대화 엔진(140)에 입력한다.
중간 대화 엔진(130)이 입력된 텍스트, 즉 중간 발화에 대응되는 사용자 의도를 파악하였으면(314의 예), 중간 대화 엔진(130)이 파악한 사용자 의도에 대응되는 시스템 응답을 사용자 발화가 종료되기 전에 미리 생성한다(315). 중간 대화 엔진(130)이 중간 발화에 대응되는 사용자 의도를 파악하지 못하였으면, 마이크(10)를 통해 입력된 다음 사용자 발화의 텍스트를 중간 대화 엔진(130)에 입력한다.
중간 대화 엔진(130)이 중간 발화에 대응되는 사용자 의도를 파악하였으면, 사용자 발화가 종료되기 전에 사용자 의도에 대응되는 시스템 응답을 미리 생성할 수 있다.
사용자 발화가 종료되면, 미리 생성된 시스템 응답을 출력한다(317). 중간 대화 엔진이 중간 발화를 이용하여 사용자 의도 파악을 하지 못한 경우에는 최종 대화 엔진(140)이 최종 발화를 이용하여 파악한 사용자 의도에 대응되는 시스템 응답을 생성한다(315).
TTS 엔진(317)은 생성된 시스템 응답을 음성 신호로 변환하고, 음성 신호로 변환된 시스템 응답은 사용자 단말기에 마련된 스피커(20)를 통해 사용자에게 출력될 수 있다.
한편, 사용자 발화가 길어지는 경우에는 시스템 응답의 생성이 완료된 시점에서도 사용자 발화가 이어질 수 있다. 제어부(120)는 사용자 발화가 종료될 때까지 시스템 응답의 출력을 보류하고, 사용자 발화가 종료된 이후에 시스템 응답을 출력하도록 TTS 엔진(160)을 제어할 수 있다.
또한, 최종 대화 엔진(140)이 파악한 사용자 의도와 최종 대화(complete utterance)는 로그 DB(153)에 저장되어 중간 대화 엔진(130)의 업데이트에 사용된다. 이하, 중간 대화 엔진(130)을 업데이트하는 과정에 대해 설명한다.
도 9는 일 실시예에 따른 대화 처리 방법에 있어서, 로그 DB에 저장된 데이터를 사용하여 중간 대화 엔진을 업데이트하는 과정을 나타낸 순서도이다.
전술한 실시예에 따르면, 로그 DB(153)에는 최종 발화 및 그에 대응되는 사용자 의도가 저장된다.
도 9에 도시된 대화 처리 방법에 따르면, 제어부(120)는 로그 DB(153)에 저장된 최종 발화에서 한 글자를 삭제하여 제1중간발화 데이터를 생성하고(320), 제1중간발화 데이터를 최종 대화 엔진(140)에 입력한다(321).
최종 대화 엔진(140)이 제1중간발화 데이터에 대응되는 사용자 의도를 파악하면(322의 예), 제어부(120)는 제1중간발화 데이터에 대응되는 사용자 의도가 로그 DB에 저장된 최종 발화에 대응되는 사용자 의도와 일치하는지 여부를 판단한다(323). 제1중간발화 데이터에 대응되는 사용자 의도가 로그 DB에 저장된 최종 발화에 대응되는 사용자 의도와 일치하면(324의 예), 제1중간발화 데이터를 중간 대화 엔진용 DB(154)에 저장한다(324).
또한, 제어부(120)는 제1중간발화 데이터에서 다시 한 글자를 삭제하여 제2중간발화 데이터를 생성하고, 최종 대화 엔진에 입력하고, 사용자 의도를 파악하는 전술한 과정을 최종 발화에 대응되는 사용자 의도와 일치하지 않을 때까지 반복한다.
제어부(120)는 중간 대화 엔진용 DB(154)에 저장된 중간발화 데이터를 이용하여 중간 대화 엔진을 학습시킴으로써 업데이트할 수 있다.
한편, 최종 대화 엔진(140)이 제1중간발화 데이터에 대응되는 사용자 의도 파악에 실패한 경우(322의 아니오)에는, 제1중간발화 데이터를 규칙 생성용 DB(155)에 저장할 수 있다(326).
제어부(120)는 규칙 생성용 DB(155)에 저장된 제1중간발화 데이터를 이용하여 중간 대화 엔진(130)에 사용되는 규칙을 생성할 수 있다. 규칙 생성에 관한 구체적인 설명은 전술한 대화 시스템(100)의 실시예에서 설명한 바와 같다.
일 실시예에 따른 전자 장치는, 하나 이상의 프로그램이 저장되는 메모리 및 저장된 프로그램을 실행하는 프로세서;를 포함하고, 메모리에 저장된 프로그램은, 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하고; 사용자 발화가 종료되지 않았으면, 변환된 텍스트를 중간 발화를 처리하는 중간 대화 엔진에 입력하고; 사용자 발화가 종료되었으면, 변환된 텍스트를 최종 발화를 처리하는 최종 대화 엔진에 입력하고; 중간 대화 엔진이 파악한 사용자 의도 또는 최종 대화 엔진이 파악한 사용자 의도에 대응되는 스템 응답을 생성하는 것;을 포함한다.
이 외에도 전자 장치의 메모리에 저장되는 프로그램은 전술한 대화 처리 방법을 실행하기 위한 것으로서, 전술한 대화 처리 방법에 포함되는 각각의 단계들이 추가적으로 더 포함될 수 있음은 물론이다.
이상에서와 같이 첨부된 도면을 참조하여 개시된 실시예들을 설명하였다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고도, 개시된 실시예들과 다른 형태로 본 발명이 실시될 수 있음을 이해할 것이다. 개시된 실시예들은 예시적인 것이며, 한정적으로 해석되어서는 안된다.
100: 대화 시스템
110: STT 엔진
120: 제어부
130: 중간 대화 엔진
140: 최종 대화 엔진
150: 저장부
151: 중간 규칙 DB
152: 최종 규칙 DB
153: 로그 DB
154: 중간 대화 엔진용 DB
155: 규칙 생성용 DB

Claims (21)

  1. 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하는STT(Speech to Text) 엔진;
    상기 사용자 발화가 종료되기 전의 중간 발화를 처리하여 사용자 의도를 파악하고, 상기 사용자 의도에 대응되는 시스템 응답을 생성하는 중간 대화 엔진;
    상기 사용자 발화가 종료된 후의 최종 발화를 처리하는 최종 대화 엔진;
    상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 상기 중간 대화 엔진에 입력하고, 상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 상기 최종 대화 엔진에 입력하는 제어부; 및
    상기 시스템 응답을 음성 신호로 변환하는TTS(Text to Speech) 엔진;을 포함하는 대화 시스템.
  2. 제 1 항에 있어서,
    상기 중간 대화 엔진은,
    상기 사용자 의도에 대응되는 시스템 응답을 상기 사용자 발화가 종료되기 전에 미리 생성하는 대화 시스템.
  3. 제 2 항에 있어서,
    상기 제어부는,
    상기 사용자 발화가 종료되면, 상기 미리 생성된 시스템 응답을 출력하도록 상기 TTS 엔진을 제어하는 대화 시스템.
  4. 제 1 항에 있어서,
    상기 제어부는,
    상기 중간 대화 엔진이 사용자 의도를 파악하지 못하였으면, 상기 마이크를 통해 입력된 다음 사용자 발화를 상기 중간 대화 엔진에 입력하는 대화 시스템.
  5. 제 1 항에 있어서,
    상기 사용자 발화가 종료되면, 상기 최종 발화 및 상기 최종 대화 엔진이 파악한, 상기 최종 발화에 대응되는 사용자 의도를 저장하는 저장부;를 더 포함하는 대화 시스템.
  6. 제 5 항에 있어서,
    상기 제어부는,
    상기 저장된 최종 발화에서 한 글자를 삭제하여 제1중간발화 데이터를 생성하고, 상기 제1중간 발화 데이터를 상기 최종 대화 엔진에 입력하는 대화 시스템.
  7. 제 6 항에 있어서,
    상기 제어부는,
    상기 최종 대화 엔진이 파악한 상기 제1 중간발화 데이터에 대응되는 사용자 의도가 상기 최종 발화에 대응되는 사용자 의도와 일치하면 상기 제1중간발화 데이터를 상기 저장부에 저장하는 대화 시스템.
  8. 제 7 항에 있어서,
    상기 제어부는,
    상기 최종 대화 엔진이 파악한 상기 제1 중간발화 데이터에 대응되는 사용자 의도가 상기 최종 발화에 대응되는 사용자 의도와 일치하면, 상기 제1중간발화 데이터에서 한 글자를 삭제하여 제2중간발화 데이터를 생성하고, 상기 제2중간발화 데이터를 상기 최종 대화 엔진에 입력하는 대화 시스템.
  9. 제 7 항에 있어서,
    상기 제어부는,
    상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진을 학습시키는 대화 시스템.
  10. 제 7 항에 있어서,
    상기 제어부는,
    상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진에 사용되는 규칙(Rule)을 생성하는 대화 시스템.
  11. 마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하고;
    상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 중간 발화를 처리하는 중간 대화 엔진에 입력하고;
    상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 최종 발화를 처리하는 최종 대화 엔진에 입력하고;
    상기 중간 대화 엔진이 파악한 사용자 의도 또는 상기 최종 대화 엔진이 파악한 사용자 의도에 대응되는 시스템 응답을 생성하는 것;을 포함하는 대화 시스템
  12. 제 11 항에 있어서,
    상기 시스템 응답을 생성하는 것은,
    상기 중간 대화 엔진이 상기 사용자 의도를 파악하였으면, 상기 중간 대화 엔진이 파악한 사용자 의도에 대응되는 시스템 응답을 상기 사용자 발화가 종료되기 전에 미리 생성하는 것;을 포함하는 대화 처리 방법.
  13. 제 12 항에 있어서,
    상기 사용자 발화가 종료되면, 상기 미리 생성된 시스템 응답을 출력하는 것;을 더 포함하는 대화 처리 방법.
  14. 제 13 항에 있어서,
    상기 중간 대화 엔진이 사용자 의도를 파악하지 못하였으면, 상기 마이크를 통해 입력된 다음 사용자 발화를 상기 중간 대화 엔진에 입력하는 것;을 더 포함하는 대화 처리 방법.
  15. 제 11 항에 있어서,
    상기 사용자 발화가 종료되면, 상기 최종 발화 및 상기 최종 대화 엔진이 파악한, 상기 최종 발화에 대응되는 사용자 의도를 저장하는 것;을 더 포함하는 대화 처리 방법.
  16. 제 15 항에 있어서,
    상기 저장된 최종 발화에서 한 글자를 삭제하여 제1중간발화 데이터를 생성하고, 상기 제1중간발화 데이터를 상기 최종 대화 엔진에 입력하는 것;을 더 포함하는 대화 처리 방법.
  17. 제 16 항에 있어서,
    상기 최종 대화 엔진이 파악한 상기 제1중간발화 데이터에 대응되는 사용자 의도가 상기 저장된 최종 발화에 대응되는 사용자 의도와 일치하면 상기 제1중간발화 데이터를 상기 저장부에 저장하는 것;을 더 포함하는 대화 처리 방법.
  18. 제 17 항에 있어서,
    상기 최종 대화 엔진이 파악한 상기 제1중간발화 데이터에 대응되는 사용자 의도가 상기 저장된 최종 발화에 대응되는 사용자 의도와 일치하면 상기 제1발화 데이터에서 한 글자를 삭제하여 제2중간발화 데이터를 생성하고, 상기 제2중간발화 데이터를 상기 최종 대화 엔진에 입력하는 것;을 더 포함하는 대화 처리 방법.
  19. 제 17 항에 있어서,
    상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진을 학습시키는 것;을 더 포함하는 대화 처리 방법.
  20. 제 17 항에 있어서,
    상기 저장된 제1중간발화 데이터를 이용하여 상기 중간 대화 엔진에 사용되는 규칙(Rule)을 생성하는 것;을 더 포함하는 대화 처리 방법.
  21. 하나 이상의 프로그램이 저장되는 메모리; 및
    상기 저장된 프로그램을 실행하는 프로세서;를 포함하고,
    상기 프로그램은,
    마이크를 통해 입력되는 사용자 발화를 실시간으로 텍스트로 변환하고;
    상기 사용자 발화가 종료되지 않았으면, 상기 변환된 텍스트를 중간 발화를 처리하는 중간 대화 엔진에 입력하고;
    상기 사용자 발화가 종료되었으면, 상기 변환된 텍스트를 최종 발화를 처리하는 최종 대화 엔진에 입력하고;
    상기 중간 대화 엔진이 파악한 사용자 의도 또는 상기 최종 대화 엔진이 파악한 사용자 의도에 대응되는 시스템 응답을 생성하는 것;을 포함하는 전자 장치.
KR1020190116007A 2019-09-20 2019-09-20 대화 시스템, 대화 처리 방법 및 전자 장치 KR20210034276A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190116007A KR20210034276A (ko) 2019-09-20 2019-09-20 대화 시스템, 대화 처리 방법 및 전자 장치
US16/918,927 US11450320B2 (en) 2019-09-20 2020-07-01 Dialogue system, dialogue processing method and electronic apparatus
CN202010788141.XA CN112542170A (zh) 2019-09-20 2020-08-07 对话系统、对话处理方法和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190116007A KR20210034276A (ko) 2019-09-20 2019-09-20 대화 시스템, 대화 처리 방법 및 전자 장치

Publications (1)

Publication Number Publication Date
KR20210034276A true KR20210034276A (ko) 2021-03-30

Family

ID=74880260

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190116007A KR20210034276A (ko) 2019-09-20 2019-09-20 대화 시스템, 대화 처리 방법 및 전자 장치

Country Status (3)

Country Link
US (1) US11450320B2 (ko)
KR (1) KR20210034276A (ko)
CN (1) CN112542170A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023063552A1 (ko) * 2021-10-15 2023-04-20 엘지전자 주식회사 인공지능 컨시어지 서비스를 제공하는 컨시어지 디바이스 및 그 디바이스의 제어 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113516967A (zh) * 2021-08-04 2021-10-19 青岛信芯微电子科技股份有限公司 一种语音识别方法及装置
CN113643696A (zh) * 2021-08-10 2021-11-12 阿波罗智联(北京)科技有限公司 语音处理方法、装置、设备、存储介质及程序
CN114117020A (zh) * 2022-01-21 2022-03-01 杭州一知智能科技有限公司 一种多渠道对话接续方法及系统
CN114691852B (zh) * 2022-06-01 2022-08-12 阿里巴巴达摩院(杭州)科技有限公司 人机对话系统及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140139922A (ko) 2013-05-28 2014-12-08 삼성전자주식회사 음성 인식 장치 및 이의 음성 인식 방법
KR102338990B1 (ko) 2017-01-23 2021-12-14 현대자동차주식회사 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법
DK201770429A1 (en) * 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
CN109994108B (zh) * 2017-12-29 2023-08-29 微软技术许可有限责任公司 用于聊天机器人和人之间的会话交谈的全双工通信技术
KR102445365B1 (ko) 2018-03-19 2022-09-20 현대자동차주식회사 대화 시스템, 이를 포함하는 차량 및 대화 처리 방법
CN109637519B (zh) * 2018-11-13 2020-01-21 百度在线网络技术(北京)有限公司 语音交互实现方法、装置、计算机设备及存储介质
US11551665B2 (en) * 2019-09-12 2023-01-10 Oracle International Corporation Dynamic contextual dialog session extension

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023063552A1 (ko) * 2021-10-15 2023-04-20 엘지전자 주식회사 인공지능 컨시어지 서비스를 제공하는 컨시어지 디바이스 및 그 디바이스의 제어 방법

Also Published As

Publication number Publication date
US20210090563A1 (en) 2021-03-25
US11450320B2 (en) 2022-09-20
CN112542170A (zh) 2021-03-23

Similar Documents

Publication Publication Date Title
KR102265972B1 (ko) 다중 언어 텍스트-음성 합성 모델을 이용한 음성 번역 방법 및 시스템
US11450320B2 (en) Dialogue system, dialogue processing method and electronic apparatus
JP5327054B2 (ja) 発音変動規則抽出装置、発音変動規則抽出方法、および発音変動規則抽出用プログラム
KR101247578B1 (ko) 자동 음성 인식 음향 모델들의 적응
US20180137109A1 (en) Methodology for automatic multilingual speech recognition
EP1557822A1 (en) Automatic speech recognition adaptation using user corrections
JP2001005488A (ja) 音声対話システム
WO2014183373A1 (en) Systems and methods for voice identification
US11302329B1 (en) Acoustic event detection
US20220180864A1 (en) Dialogue system, dialogue processing method, translating apparatus, and method of translation
Bhatt et al. Monophone-based connected word Hindi speech recognition improvement
US11615787B2 (en) Dialogue system and method of controlling the same
JP2010197644A (ja) 音声認識システム
JP3776391B2 (ja) 多言語音声認識方法、装置、プログラム
Bhagath et al. An android based mobile spoken dialog system for telugu language to control smart appliances
Kumar et al. Automatic spontaneous speech recognition for Punjabi language interview speech corpus
KR101598950B1 (ko) 발음 평가 장치 및 이를 이용한 발음 평가 방법에 대한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체
JP4163207B2 (ja) 多言語話者適応方法、装置、プログラム
KR20210130465A (ko) 대화 시스템 및 그 제어 방법
KR20200117317A (ko) 대화 시스템 및 대화 처리 방법
KR20140051519A (ko) 연속어 음성인식 방법 및 연속어 음성인식 장치
KR102458830B1 (ko) 사용자 중심의 음성 대화 시스템
JP2003228393A (ja) 音声対話装置及び方法、音声対話プログラム並びにその記録媒体
KR101483945B1 (ko) 의미 분석이 가능한 음성 인식 방법 및 이를 위한 음성 인식 장치
Ahmed et al. 8. Modern Approach of Speech Recognition