KR102133466B1 - 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버 - Google Patents

코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버 Download PDF

Info

Publication number
KR102133466B1
KR102133466B1 KR1020180063036A KR20180063036A KR102133466B1 KR 102133466 B1 KR102133466 B1 KR 102133466B1 KR 1020180063036 A KR1020180063036 A KR 1020180063036A KR 20180063036 A KR20180063036 A KR 20180063036A KR 102133466 B1 KR102133466 B1 KR 102133466B1
Authority
KR
South Korea
Prior art keywords
code
control
terminal device
dsl
input string
Prior art date
Application number
KR1020180063036A
Other languages
English (en)
Other versions
KR20190136843A (ko
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 KR1020180063036A priority Critical patent/KR102133466B1/ko
Priority to JP2019099231A priority patent/JP2019212302A/ja
Publication of KR20190136843A publication Critical patent/KR20190136843A/ko
Application granted granted Critical
Publication of KR102133466B1 publication Critical patent/KR102133466B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Acoustics & Sound (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Telephonic Communication Services (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

본 출원은 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버에 관한 것으로서, 본 발명의 일 실시예에 의한 단말장치는 사용자가 발화하는 음성명령을 인식하고, 상기 음성명령을 대응하는 입력 문자열로 변환하는 음성인식부; 상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드생성부; 및 상기 생성한 제어코드를 실행하여, 상기 제어코드에 따른 제어동작을 수행하는 제어신호를 생성하는 동작제어부를 포함할 수 있다.

Description

코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버 {Method for generating programming code, terminal device and server using the same}
본 출원은 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버에 관한 것으로서, 음성인식을 이용하여 단말장치의 제어코드를 자동으로 생성할 수 있는 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버에 관한 것이다.
최근 전자 장치에 적용된 사용자 입력 인터페이스는, 사용자의 물리적인 조작에 기반한 사용자 입력(예: 버튼식키패드, 키보드, 마우스, 터치 패널 등을 통한 입력)뿐만 아니라, 음성 입력에 기반한 사용자 입력을 지원할 수있는 형태로 구현되고 있다
상기 음성 입력 인터페이스를 지원하는 전자 장치는, 사용자가 발화(speech 또는 utterance)를 입력으로 획득하여 전기 신호로 변환할 수 있다. 상기 전자 장치는 음성으로부터 변환된 전기 신호를 기초로 유용한 콘텐츠를 사용자에게 제공하거나, 또는 상기 전기 신호를 전자 장치의 제어에 이용할 수 있다.
본 출원은, 음성인식을 이용하여 단말장치의 제어코드를 자동으로 생성할 수 있는 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버를 제공하고자 한다.
본 출원은, 사용자가 발화하는 자연스러운 음성명령에 대응하는 제어코드를 정확하게 생성할 수 있는 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버를 제공하고자 한다.
본 출원은, 사용자의 음성명령을 이용하여, 단말장치에 미리 설정되어 있지 않은 제어동작을 수행하도록 단말장치의 제어범위를 확장시킬 수 있는 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버를 제공하고자 한다.
본 발명의 일 실시예에 의한 단말장치는, 사용자가 발화하는 음성명령을 인식하고, 상기 음성명령을 대응하는 입력 문자열로 변환하는 음성인식부; 상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드생성부; 및 상기 생성한 제어코드를 실행하여, 상기 제어코드에 따른 제어동작을 수행하는 제어신호를 생성하는 동작제어부를 포함할 수 있다.
본 발명의 일 실시예에 의한 서버는, 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 상기 음성명령에 대응하는 입력 문자열을 생성하는 음성수신부; 상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드 생성부; 및 상기 생성한 제어코드를 상기 단말장치로 전송하는 코드 전송부를 포함할 수 있다.
본 발명의 다른 실시예에 의한 서버는, 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 상기 음성명령에 대응하는 입력 문자열을 생성하는 음성수신부; 상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드 생성부; 및 상기 생성한 제어코드를 실행하여 상기 제어코드에 따른 제어동작을 수행하는 제어신호를 생성하고, 상기 제어신호를 상기 단말장치로 전송하는 제어신호 전송부를 포함할 수 있다.
본 발명의 일 실시예에 의한 단말장치에서의 코드 자동 생성 방법은, 사용자가 발화하는 음성명령을 인식하고, 상기 음성명령을 대응하는 입력 문자열로 변환하는 음성인식단계; 상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드생성단계; 및 상기 생성한 제어코드를 실행하여, 상기 제어코드에 따른 제어동작을 수행하는 제어신호를 생성하는 동작제어단계를 포함할 수 있다.
본 발명의 일 실시예에 의한 서버에서의 코드 자동 생성 방법은, 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 상기 음성명령에 대응하는 입력 문자열을 생성하는 음성수신단계; 상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드 생성단계; 및 상기 생성한 제어코드를 상기 단말장치로 전송하는 코드 전송단계를 포함할 수 있다.
덧붙여 상기한 과제의 해결수단은, 본 발명의 특징을 모두 열거한 것이 아니다. 본 발명의 다양한 특징과 그에 따른 장점과 효과는 아래의 구체적인 실시형태를 참조하여 보다 상세하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 의한 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버에 의하면, 사용자의 음성을 인식하여 단말장치의 제어코드를 자동으로 생성할 수 있다. 이를 통하여, 단말장치에 미리 설정되어 있지 않은 제어동작을 수행하도록 단말장치의 제어범위를 확장시킬 수 있다.
본 발명의 일 실시예에 의한 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버에 의하면, 사용자가 발화하는 자연스러운 음성명령에 대응하는 제어코드를 정확하게 생성할 수 있다. 이를 통하여, 사용자는 특정 단어나 형식을 사용하도록 의식할 필요없이 자연스럽게 음성명령을 입력하는 것이 가능하다.
다만, 본 발명의 실시예들에 따른 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버가 달성할 수 있는 효과는 이상에서 언급한 것들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도1은 본 발명의 일 실시예에 의한 코드 자동 생성 시스템을 나타내는 개략도이다.
도2는 본 발명의 일 실시예에 의한 단말장치를 나타내는 블록도이다.
도3은 본 발명의 일 실시예에 의한 서버를 나타내는 블록도이다.
도4는 본 발명의 일 실시예에 의한 단말장치 및 서버의 동작을 나타내는 타이밍도이다.
도5는 본 발명의 일 실시예에 의한 단말장치에서의 코드 자동 생성 방법을 나타내는 순서도이다.
도6은 본 발명의 일 실시예에 의한 서버에서의 코드 자동 생성 방법을 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 즉, 본 발명에서 사용되는 '부'라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부'는 어떤 역할들을 수행한다. 그렇지만 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부'들로 결합되거나 추가적인 구성요소들과 '부'들로 더 분리될 수 있다.
또한, 본 명세서에 개시된 실시 예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시 예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시 예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
도1은 본 발명의 일 실시예에 의한 코드 자동 생성 시스템을 나타내는 개략도이다.
도1을 참조하면 본 발명의 일 실시예에 의한 코드 자동 생성 시스템은 단말장치(100) 및 서버(200)를 포함할 수 있다.
이하, 도1을 참조하여 본 발명의 일 실시예에 의한 코드 자동 생성 시스템을 설명한다.
단말장치(100)는 사용자(1)의 음성을 인식할 수 있으며, 수신한 음성에 대응하는 동작을 수행하여, 사용자에게 다양한 서비스를 제공할 수 있다. 구체적으로, 단말장치(100)는 사용자(1)의 음성을 수신하는 마이크로폰(microphone)을 포함할 수 있으며, 마이크로폰으로부터 수신한 사용자(1)의 음성을 분석하여 음성 내에 포함된 제어명령을 추출할 수 있다. 이후, 단말장치(100)는 추출한 제어명령에 따라 동작을 수행하여 사용자에게 대응하는 서비스들을 제공할 수 있다.
여기서, 단말장치(100)는 음성인식을 지원하는 것이면 어떠한 것도 해당할 수 있으며, 도1에 도시한 바와 같이, 음성인식 스피커일 수 있다. 이외에도, 실시예에 따라서는 휴대폰, 스마트 폰(Smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(personal digital assistants), PMP(portable multimedia player), 슬레이트 PC(slate PC), 태블릿 PC(tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(wearable device, 예를 들어, 워치형 단말기 (smartwatch), 글래스형 단말기 (smart glass), HMD(head mounted display)) 등이 단말장치(100)에 해당할 수 있다.
단말장치(100)에는, 사용자의 음성입력을 수신하는 마이크로폰(microphone), 사용자의 음성입력에 대응한 동작을 수행하기 위한, 디스플레이부, 스피커, 액추에이터(actuator) 등을 포함될 수 있다. 또한, 단말장치(100)에는 키패드, 터치패널 등의 입력부와, 적어도 하나의 프로그램이 저장되는 메모리 및 프로세서 등이 포함될 수 있다.
한편, 단말장치(100)는 서버(200)와 네트워크를 통하여 연결될 수 있으며, 단말장치(100)와 서버(200)를 연결하는 네트워크는, 유선 네트워크 또는 무선 네트워크일 수 있다. 구체적으로, 근거리 네트워크(LAN: Local Area Network), 도시권 네트워크(MAN: Metropolitan Area Network), 광역 네트워크(WAN: Wide Area Network) 등 다양한 네트워크를 포함할 수 있으며, 공지의 월드와이드웹(WWW: World Wide Web) 등도 포함할 수 있다. 다만, 본 발명에 따른 네트워크는 상기 열거된 네트워크에 국한되지 않으며, 공지의 무선 데이터 네트워크, 공지의 전화 네트워크, 공지의 유선 또는 무선 텔레비전 네트워크 등을 포함할 수 있다.
서버(200)는 네트워크를 통하여 단말장치(100)에 다양한 서비스를 제공할 수 있으며, 실시예에 따라서는 단말장치(100)의 코드 자동 생성을 지원할 수 있다. 단말장치(100)가 사용자의 음성명령에 대응하여 인터넷 검색이나 음원 재생 등을 수행하는 경우, 서버(200)는 인터넷 검색 결과를 생성하여 단말장치(100)로 제공하거나, 단말장치(100)가 요청하는 음원이나 동영상을 스트리밍 등의 방식으로 단말장치(100)에게 제공할 수 있다. 또한, 코드 자동 생성시 필요한 연산 등을 서버(200)에서 대신하여 수행하는 것도 가능하다.
종래의 음성인식을 지원하는 단말장치의 경우, 각각의 음성명령에 대응하여 미리 설정된 동작을 수행하도록 프로그래밍될 수 있다. 이 경우, 사용자는 정확한 용어를 사용하여 특정한 제어 동작을 수행하도록 지시해야하므로, 사용자가 대화하듯이 자연스럽게 단말장치의 동작을 요청하는 경우에는 단말장치가 동작하지 않을 수 있다. 또한, 사용자가 단말장치에게 미리 프로그래밍되어 있지 않은 동작을 요청하는 경우에는, 대응하는 동작을 수행하지 못하게 된다.
반면에, 본 발명의 일 실시예에 의한 코드 자동 생성 시스템에 의하면, 단말장치(100)가 사용자의 음성명령에 대응하여 자동으로 제어코드를 생성할 수 있으므로, 사용자의 자연스러운 음성명령을 인식하여 이에 대응하는 제어동작을 수행하는 것이 가능하다. 또한, 단말장치에 미리 프로그래밍되어 있지 않은 제어동작의 경우에도, 사용자의 음성명령에 따라 자동으로 제어코드를 생성하는 것이 가능하므로, 단말장치(100)의 제어범위를 확장하는 것이 가능하다. 이하, 본 발명의 일 실시예에 의한 단말장치(100) 및 서버(200)에 대하여 설명한다.
도2는 본 발명의 일 실시예에 의한 단말장치를 나타내는 블록도이다.
도2를 참조하면 본 발명의 일 실시예에 의한 단말장치는, 음성인식부(110), 코드생성부(120) 및 동작제어부(130)를 포함할 수 있다.
음성인식부(110)는 사용자(1)가 발화하는 음성명령을 인식할 수 있으며, 인식한 음성명령을 변환하여 대응하는 입력문자열을 생성할 수 있다. 음성인식부(110)에는 마이크로폰(microphone)이 포함될 수 있으며, 마이크로폰을 통하여 사용자의 음성명령을 수신할 수 있다. 여기서, 마이크로폰은 사용자의 음성명령을 전기적 신호로 변환할 수 있으며, 음성인식부(110)는 전기적 신호를 변환하여 대응하는 입력문자열을 생성할 수 있다.
예를들어, 음성인식부(110)에는 각각의 문자에 대응하는 표준음성패턴이 저장된 음성모델 데이터베이스 등이 구비되어 있을 수 있으며, 음성인식부(110)는 입력되는 음성명령의 전기적 신호를 음성모델 데이터베이스에 저장된 표준음성패턴과 비교할 수 있다. 이후, 음성명령에 대응하는 표준음성패턴을 추출하여 대응하는 문자로 변환할 수 있으며, 변환된 문자들을 결합하여 입력문자열을 생성할 수 있다. 다만, 음성인식부(110)가 음성을 문자로 변환하는 방식은 이에 한정되는 것은 아니며, 이외에도 다양한 방식으로 음성을 문자로 변환할 수 있다.
코드생성부(120)는 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 입력 문자열에 대응하는 제어코드를 생성할 수 있다. 입력 문자열 내에는 사용자가 단말장치(100)에 요청하는 제어동작들이 포함되므로, 코드생성부(120)는 입력 문자열을 이용하여 단말장치(100)에 대한 제어코드를 생성할 수 있다. 이때, 코드생성부(120)는 딥러닝 모델(Deep learning model)(a)을 이용할 수 있다.
구체적으로, 코드생성부(120)는 딥러닝 모델(Deep learning model)을 이용하여, 입력 문자열을 단말장치(100)에 대응하는 도메인 특화 언어(DSL: Domain Specific Langugage)의 DSL 코드로 변환할 수 있다. 도메인 특화 언어는 단말장치(100)에 대하여 특화되어 사용되는 프로그래밍 언어로, 단말장치(100)가 수행할 수 있는 각각의 기능이나 동작에 대응하는 DSL 코드의 명령어 등이 설정되어 있을 수 있다. 예를들어, 단말장치(100)가 인공지능 스피커인 경우, 인공지능 스피커가 수행하는 알람설정이나 음원재생, 날씨정보 등 각각의 기능에 대응하는 명령어가 미리 설정되어 있을 수 있다. 따라서, 인공지능 스피커에 특화된 도메인 특화언어를 이용하면, 입력 문자열을 보다 용이하게 DSL 코드로 변환하는 것이 가능하다.
한편, 코드생성부(120)에서 사용하는 딥러닝 모델은 다양한 방법을 이용하여 학습될 수 있다. 예를 들면, 시퀀스투시퀀스(sequence to sequence, seq2seq), Transformer, CSSL(Convolution Sequence to Sequence Learning) 등과 같이 번역과 관련하여 잘 알려진 기법들이 사용될 수 있다. 이때, 딥러닝 모델의 학습을 위해 사용되는 샘플은 입력문자열과, 각각의 입력문자열에 대응한 제어동작이 정의된 DSL 코드들의 쌍일 수 있다. 즉, 각각의 입력문자열에 대응하여 설정되는 DSL 코드의 샘플들이 학습되어 딥러닝 모델을 생성할 수 있다. 이 경우, 사용자가 입력한 다양한 입력 문자열에 대응하는 DSL 코드들이 학습되므로, 딥러닝 모델을 이용하면 각각의 입력 문자열에 대응하는 DSL 코드들을 용이하게 추출할 수 있다.
이후, 코드생성부(120)는 DSL 코드를 범용 언어(general-purpose programming language)의 범용 코드로 변환하고, 변환된 범용 코드를 제어코드로 설정할 수 있다. 이 경우, 단말장치(100)에 특화된 도메인 특화언어와 범용 언어 사이에는 변환규칙이 미리 설정되어 있을 수 있으며, 변환규칙에 따라 DSL 코드를 범용 코드로 변환시킬 수 있다. 코드생성부(120)에서 생성한 제어코드는, 이후 서버(200) 등 다른 장치 등에서도 활용될 수 있으므로, 범용 코드를 제어코드로 사용함으로써 호환성과 활용도를 높일 수 있다. 다만, 실시예에 따라서는, 생성한 DSL 코드를 제어코드로 설정할 수 있으며, DSL 코드를 이용하여 단말장치(100)를 제어하도록 구현하는 것도 가능하다.
한편, 코드생성부(120)는 "내일 아침에 비가오면 음악을 재생해줘"라는 입력 문자열을 입력받은 경우, 아래와 같은 제어코드를 생성할 수 있다.
def instant_program()
if weather == 'rain';
play_music()
add cron(instant_program, '0900','once")
여기서, "비가오면 음악을 재생"하기 위하여, 코드생성부(120)는 인스턴트 프로그램 instant_program()을 정의할 수 있으며, 인스턴트 프로그램은 변수인 weather의 값이 'rain'에 해당하면 음악을 재생하는 함수 play_music을 실행하도록 설정될 수 있다. 이후, "내일 아침"에 인스턴트 프로그램 instant_program()을 실행하기 위하여, 코드생성부(120)는 컴퓨터 운영 체제의 스케줄러인 cron을 이용하여 인스턴트 프로그램 instant_program()을 추가하도록 할 수 있다. 이때, "아침"이므로 시간은 09:00, 반복되는 이벤트가 아니므로 한번만 "once" 수행되도록 할 수 있다.
여기서, 각각의 제어코드들은 딥러닝을 통한 학습을 통하여 생성되는 것으로, 코드생성부(120)는 각각의 사용자에 따라 다양한 방식으로 변형되는 경우에도 동일한 제어코드를 생성할 수 있다. 예를들어, 사용자가 "비오는 아침에는 음악을 듣고 싶어"라는 음성명령을 입력하는 경우에도 동일한 제어코드를 생성하는 것이 가능하다. 또한, 코드생성부(120)는 사용자가 "내일 오후에 미세먼지 농도가 높으면 알람을 발생해줘" 등의 음성명령을 입력하는 경우에도, 딥러닝 모델을 이용하여 유사한 방식으로 제어코드를 생성할 수 있다.
나아가, 코드생성부(120)는 함수를 포함하는 제어코드를 생성하는 것도 가능하다. 예를들어, 사용자가 음성명령으로 "내 친구 3명을 랜덤으로 알려줘"를 입력하는 경우, 코드생성부(120)는 아래와 같은 제어코드를 생성할 수 있다.
Speak(top(random(getContact()),3))
즉, 먼저 getContact() 함수를 이용하여 사용자의 연락처 정보에 포함된 친구들의 연락처를 추출할 수 있으며, 이때 random() 함수를 이용하여 3개의 연락처를 임의로 추출하도록 할 수 있다. 이후, 추출한 3개의 연락처를 정렬하고(top()), 추출한 3개의 연락처를 스피커로 출력하도록 할 수 있다. 여기서, 코드생성부(120)가 호출하는 각각의 함수들은 단말장치(100)에 미리 저장되어 있을 수 있다.
이외에도, 코드생성부(120)는 사용자의 음성명령을 이용하여 별도의 함수 또는 인스턴트 프로그램을 생성하고, 생성한 함수 또는 인스턴트 프로그램을 호출하여 사용하는 제어코드를 구현할 수 있다. 예를들어, 사용자가 "거실 불 켜라고 말하면 1번, 3번, 4번 불 켜줘"라고 음성명령을 입력하는 경우, 코드생성부(120)는 "거실 불 켜"에 대응하는 함수를 생성하여 저장할 수 있다. 이후, 사용자가 "거실 불 켜"라는 음성명령을 입력하면, 코드생성부(120)가 이에 대응하는 함수를 이용하여 제어코드를 생성할 수 있다.
코드생성부(120)는 상술한 바와 같이 다양한 종류의 제어코드를 생성할 수 있으며, 이러한 제어코드들은 딥러닝 모델을 통하여 추출하는 방식으로 생성할 수 있다.
동작제어부(130)는 생성한 제어코드를 실행하여, 제어코드에 따른 제어동작을 수행하는 제어신호를 생성할 수 있다. 즉, 동작제어부(130)에서 생성한 제어신호에 따라 단말장치(100)에 포함된 스피커, 디스플레이부, 액추에이터 등이 동작할 수 있으며, 스피커, 디스플레이부, 액추에이터 등의 동작에 따라 제어동작이 구현될 수 있다. 동작제어부(130)는 컴파일러(compiler) 또는 인터프리터(interpreter)를 이용하여 제어코드를 실행할 수 있으며, 제어코드에 대응하는 제어신호를 생성할 수 있다.
상술한 바와 같이, 본 발명의 일 실시예에 의한 단말장치(100)는 자체적으로 음성인식을 이용하여 제어코드를 자동으로 생성할 수 있으며, 생성한 제어코드에 따른 제어동작을 수행할 수 있다. 다만, 실시예에 따라서는, 단말장치(100)가 서버(200)와의 통신을 통하여 제어코드를 생성하거나, 생성한 제어코드에 대응하는 제어동작을 수행하도록 구현하는 것도 가능하다.
일 실시예에 의하면, 음성인식을 통한 입력문자열 생성을 서버(200)에서 수행하도록 할 수 있다. 음성인식의 경우, 음성모델 데이터베이스에 저장된 표준음성패턴과 수신한 음성명령을 비교해야하므로, 대응하는 입력 문자열을 추출하는데 많은 연산이 필요할 수 있다. 실시예에 따라서는, 단말장치(100)의 연산처리 능력이 부족할 수 있으므로, 단말장치(100)가 서버(200)로 음성명령을 전송한 후, 서버(200)에서 음성인식을 수행하도록 할 수 있다. 즉, 음성인식부(110)는 음성명령을 서버(200)로 전송할 수 있으며, 해당 음성명령에 대응하는 입력문자열로의 변환을 요청할 수 있다. 이후 서버(200)로부터 입력문자열을 수신받으면, 이를 이용하여 제어코드를 생성하고 제어동작을 실행할 수 있다.
다른 실시예에 의하면, 단말장치(100)가 서버(200)로 음성명령을 전송하면, 서버(200)에서 음성인식 및 코드생성을 수행하고, 단말장치(100)는 서버로부터 제어코드를 수신하여 제어코드를 실행하는 것도 가능하다. 즉, 단말장치(100)는 음성명령을 서버(200)로 전송한 후, 서버(200)로부터 음성명령에 대응하는 제어코드를 수신할 수 있으며, 단말장치(100)는 수신한 제어코드를 이용하여 제어동작을 수행할 수 있다.
또 다른 실시예에 의하면, 단말장치(100)가 서버(200)로 음성명령을 전송하면, 서버(200)에서 음성인식, 코드생성 및 코드실행까지 실행한 후, 제어신호를 서버(200)로부터 수신하여 제어동작을 수행하는 것도 가능하다. 예를들어, 사용자가 "내일 아침 9시에 알려줘"라는 음성명령을 입력하는 경우, 단말장치(100)는 대응하는 음성명령을 서버(200)로 전송할 수 있으며, 서버(200)는 수신한 음성명령을 입력문자열로 변경하고, 입력문자열에 대응하는 제어코드를 생성한 후, 이를 실행할 수 있다. 이 경우, 서버(200)의 스케줄러에 "내일 아침 9시"에 "알람"을 생성하는 프로그램이 등록될 수 있으며, 이후, 알람발생시점에 도달하면 서버(200)는 단말장치(100)로 알람신호를 전송하여 단말장치(100)가 알람을 출력하도록 제어할 수 있다. 즉, 단말장치(100)는 서버(200)의 제어에 따라 동작하는 기능만을 수행할 수 있다.
도3은 본 발명의 일 실시예에 의한 서버를 나타내는 블록도이다.
도3을 참조하면 본 발명의 일 실시예에 의한 서버(200)는 음성수신부(210), 코드생성부(220) 및 코드전송부(230)를 포함할 수 있으며, 실시예에 따라서는 코드전송부(230) 대신에 제어신호 전송부(240)를 포함하는 것도 가능하다.
음성수신부(210)는 단말장치(100)로부터 사용자가 발화한 음성명령을 수신할 수 있으며, 수신한 음성명령에 대응하는 입력 문자열을 생성할 수 있다. 즉, 서버(200)가 단말장치(100)로부터 음성명령에 대한 입력 문자열로의 변환을 요청받으면, 음성수신부(210)에서 수신한 음성명령을 입력 문자열로 변환할 수 있다. 구체적으로, 서버(200)에는 각각의 문자에 대응하는 표준음성패턴이 저장된 음성모델 데이터베이스 등이 구비되어 있을 수 있으며, 음성수신부(210)는 입력되는 음성명령의 전기적 패턴을 음성모델 데이터베이스에 저장된 표준음성패턴과 비교할 수 있다. 이후, 음성명령에 대응하는 표준음성패턴을 추출하고, 추출한 표준음성패턴에 대응하는 문자로 변환하는 방식으로 입력문자열을 생성할 수 있다. 다만, 음성수신부(210)가 음성을 문자로 변환하는 방식은 이에 한정되는 것은 아니며, 이외에도 다양한 방식으로 음성을 문자로 변환할 수 있다.
코드생성부(220)는 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 입력 문자열에 대응하는 제어코드를 생성할 수 있다. 코드생성부(220)는 딥러닝 모델(Deep Learning model)을 이용하여, 입력 문자열을 단말장치(100)에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환할 수 있다. 여기서, DSL 코드를 제어코드로 설정할 수 있으나, 실시예에 따라서는, 도메인 특화 언어와 범용 언어(general-purpose programming language) 사이에 설정된 변환규칙에 따라, DSL 코드를 범용 언어의 범용 코드로 변환하고, 범용 코드를 제어코드로 설정하는 것도 가능하다. 코드생성부(220)에서 사용하는 딥러닝 모델은 샘플 문자열과 상기 샘플 문자열에 대응한 제어동작을 정의한 DSL을 매칭한 복수의 샘플들을, 예를 들면, 시퀀스투시퀀스(sequence to sequence, seq2seq), Transformer, CSSL (Convolutional Sequence to Sequence Learning) 등과 같은 기법에 따라 딥러닝하여 형성하는 것일 수 있다. 딥러닝 모델을 이용하여 자동으로 제어코드를 생성하는 내용은 앞서 설명하였으므로, 여기서는 구체적인 설명을 생략한다.
코드전송부(230)는 생성한 제어코드를 단말장치(100)로 전송할 수 있다. 단말장치(100)로부터 수신한 음성명령에 대응하여 제어코드를 생성한 이후에는, 제어코드를 단말장치(100)로 전송하여, 단말장치(100)가 제어코드에 따라 동작하도록 할 수 있다. 한편, 실시예에 따라서는, 단말장치(100)에 전송한 제어코드에 함수 또는 인스턴트 프로그램이 포함될 수 있다. 이 경우, 단말장치(100)가 제어코드를 실행하면, 서버(200)가 단말장치(100)로부터 해당 함수 또는 인스턴트 프로그램에 대한 호출을 요청받을 수 있다. 이때, 코드전송부(230)는 해당 함수 또는 인스턴트 프로그램에 대응하는 제어코드를 단말장치(100)로 전송하여, 단말장치(100)가 해당 함수 또는 인스턴트 프로그램을 실행하도록 할 수 있다.
추가적으로, 도3(b)에 도시한 바와 같이, 서버(200)에 코드전송부(230) 대신에 제어신호 전송부(240)가 포함될 수 있다. 즉, 실시예에 따라서는, 서버(200)에서 제어코드를 실행하여 제어신호를 생성할 수 있으며, 제어신호를 단말장치(100)로 전송하는 방식으로, 단말장치(100)가 제어코드에 따라 동작하도록 제어할 수 있다. 구체적으로, 제어신호 전송부(240)는 생성한 제어코드를 실행하여 제어코드에 따른 제어동작을 수행하는 제어신호를 생성할 수 있으며, 생성한 제어신호를 단말장치(100)로 전송할 수 있다.
도4는 본 발명의 일 실시예에 의한 단말장치(100)와 서버(200)를 이용한 코드 자동 생성을 나타내는 개략도이다.
도4(a)에 도시한 바와 같이, 단말장치(100)는 사용자로부터 음성명령을 입력받을 수 있으며(S11), 입력받은 음성명령을 서버(200)로 전송할 수 있다(S12). 즉, 단말장치(100)는 마이크로폰 등을 통하여 사용자의 음성명령을 수신한 후, 전기적 신호로 서버(200)로 전송할 수 있다. 이후, 서버(200)는 수신한 음성명령을 대응하는 입력문자열로 변환할 수 있으며(S13), 입력문자열을 프로그래밍 언어(programming language)로 변환하여 제어코드를 생성할 수 있다(S14). 음성명령을 입력문자열로 변환할 때에는 각각의 문자에 대응하는 표준음성패턴에 저장된 음성모델 데이터베이스를 이용할 수 있으며, 입력문자열을 이용하여 제어코드를 생성할 때에는 딥러닝 모델을 활용할 수 있다. 이후, 제어코드의 생성이 완료되면, 서버(200)는 제어코드를 단말장치(100)로 전송할 수 있으며(S15), 단말장치(100)는 수신한 제어코드를 실행하여 제어코드에 대응하는 제어동작을 수행할 수 있다(S16). 즉, 단말장치(100)와 서버(200)와의 통신을 이용하여, 제어 코드를 자동으로 생성하는 것이 가능하다.
한편, 도4(b)에 도시한 바와 같이, 서버(200)에서 제어코드 생성 및 컴파일까지 수행하고, 단말장치(100)에서는 제어신호에 따른 제어동작만을 수행하도록 하는 것도 가능하다. 구체적으로, 단말장치(100)는 사용자로부터 음성명령을 입력받을 수 있으며(S21), 입력받은 음성명령은 서버(200)로 전송할 수 있다(S22). 이후, 서버(200)는 수신한 음성명령을 입력문자열로 변환하고(S23), 입력문자열에 대응하는 제어코드를 생성할 수 있다(S24). 이후, 서버(200)에서 컴파일러 또는 인터프리터 등을 이용하여 제어코드를 실행할 수 있으며(S25), 제어코드의 실행에 따른 제어신호를 단말장치(100)로 전송할 수 있다(S26). 제어신호를 수신한 단말장치(100)는 제어신호에 대응하여 제어동작을 수행할 수 있다(S27).
도5는 본 발명의 일 실시예에 의한 단말장치에서의 코드 자동 생성 방법을 나타내는 순서도이다.
도5를 참조하면, 본 발명의 일 실시예에 의한 단말장치에서의 코드 자동 생성 방법은, 음성인식단계(S110), 코드생성단계(S120) 및 동작제어단계(S130)를 포함할 수 있다.
이하, 도5를 참조하여 본 발명의 일 실시예에 의한 단말장치에서의 코드 자동 생성 방법을 설명한다.
음성인식단계(S110)에서는, 사용자가 발화하는 음성명령을 인식하고, 음성명령을 대응하는 입력 문자열로 변환할 수 있다. 음성인식단계(S110)에서는 단말장치에 구비된 마이크로폰(microphone)을 통하여 사용자의 음성명령을 수신할 수 있으며, 마이크로폰을 통하여 사용자의 음성명령을 전기적 신호로 입력받을 수 있다. 이후, 음성명령을 변환하여 대응하는 입력문자열을 생성할 수 있다.
구체적으로, 각각의 문자에 대응하는 표준음성패턴이 저장된 음성모델 데이터베이스 등이 존재할 수 있으며, 음성인식단계(S110)에서는 입력되는 음성명령의 전기적 신호를 음성모델 데이터베이스에 저장된 표준음성패턴과 비교할 수 있다. 이후, 음성명령에 대응하는 표준음성패턴을 추출하여 대응하는 문자로 변환할 수 있으며, 변환된 문자들을 결합하여 입력문자열을 생성할 수 있다. 다만, 음성을 문자로 변환하는 방식은 이에 한정되는 것은 아니며, 이외에도 다양한 방식으로 음성을 문자로 변환할 수 있다.
코드생성단계(S120)에서는, 입력문자열을 프로그래밍 언어(programming language)로 변환하여, 입력문자열에 대응하는 제어코드를 생성할 수 있다. 입력 문자열 내에는 사용자가 단말장치에 요청하는 제어동작들이 포함되므로, 입력 문자열을 이용하여 제어코드를 생성할 수 있다. 이때, 딥러닝 모델(Deep learning model)을 이용할 수 있다.
구체적으로, 딥러닝 모델(Deep learning model)을 이용하여, 입력 문자열을 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Langugage)의 DSL 코드로 변환할 수 있다. 도메인 특화 언어는 단말장치에 대하여 특화되어 사용되는 프로그래밍 언어로, 단말장치가 수행할 수 있는 각각의 기능이나 동작에 대응하는 DSL 코드의 명령어 등이 설정되어 있을 수 있다. 따라서, 인공지능 스피커에 특화된 도메인 특화언어를 이용하면, 입력 문자열을 보다 용이하게 DSL 코드로 변환하는 것이 가능하다.
한편, 코드생성단계(S120)에서 사용하는 딥러닝 모델은 예를 들면, 시퀀스투시퀀스(sequence to sequence, seq2seq), Transformer, CSSL (Convolutional Sequence to Sequence Learning) 등과 같은 다양한 기법에 의하여 학습될 수 있으며, 딥러닝 모델의 학습을 위해 사용되는 샘플은 입력문자열과, 각각의 입력문자열에 대응한 제어동작이 정의된 DSL 코드들의 쌍일 수 있다. 이 경우, 사용자가 입력한 다양한 입력 문자열에 대응하는 DSL 코드들이 학습되므로, 딥러닝 모델을 이용하면 각각의 입력 문자열에 대응하는 DSL 코드들을 용이하게 추출할 수 있다.
이후, 딥러닝 모델로부터 추출한 DSL 코드를 범용 언어(general-purpose programming language)의 범용 코드로 변환하고, 변환된 범용 코드를 제어코드로 설정할 수 있다. 이 경우, 단말장치에 특화된 도메인 특화언어와 범용 언어 사이에는 변환규칙이 미리 설정되어 있을 수 있으며, 변환규칙에 따라 DSL 코드를 범용 코드로 변환시킬 수 있다. 제어코드는 이후 서버 등 다른 장치 등에서도 활용될 수 있으므로, 범용 코드를 제어코드로 사용함으로써 호환성과 활용도를 높일 수 있다. 다만, 실시예에 따라서는, 생성한 DSL 코드를 제어코드로 설정할 수 있으며, DSL 코드를 이용하여 단말장치를 제어하도록 구현하는 것도 가능하다.
동작제어단계(S130)에서는, 생성한 제어코드를 실행하여, 제어코드에 따른 제어동작을 수행하는 제어신호를 생성할 수 있다. 즉, 동작제어단계(S130)에서 생성한 제어신호에 따라 단말장치에 포함된 스피커, 디스플레이부, 액추에이터 등을 동작시킬 수 있으며, 스피커, 디스플레이부, 액추에이터 등의 동작에 따라 제어동작이 구현될 수 있다. 이때, 제어코드는 컴파일러(compiler) 또는 인터프리터(interpreter)를 이용하여 실행함으로써, 제어코드에 대응하는 제어신호를 생성할 수 있다.
상술한 바와 같이, 본 발명의 일 실시예에 의한 단말장치에서의 코드 자동 생성 방법은, 단말장치가 직접 음성인식을 수행하여 제어코드를 자동으로 생성하고, 생성한 제어코드를 이용하여 단말장치에 대한 제어동작을 수행할 수 있다. 다만, 실시예에 따라서는, 서버와의 통신을 통하여 제어코드를 생성하거나, 생성한 제어코드에 대응하는 제어동작을 수행하도록 구현하는 것도 가능하다.
도6은 본 발명의 일 실시예에 의한 서버에서의 코드 자동 생성 방법을 나타내는 순서도이다.
도6을 참조하면, 본 발명의 일 실시예에 의한 서버에서의 코드 자동 생성 방법은, 음성수신단계(S210), 코드생성단계(S220) 및 코드전송단계(S230)를 포함할 수 있다.
이하, 도6을 참조하여 본 발명의 일 실시예에 의한 서버에서의 코드 자동 생성 방법을 설명한다.
음성수신단계(S210)에서는, 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 음성명령에 대응하는 입력 문자열을 생성할 수 있다. 즉, 서버는 단말장치로부터 음성명령에 대한 입력 문자열로의 변환을 요청받으면, 단말장치로부터 수신한 음성명령을 입력 문자열로 변환할 수 있다. 실시예에 따라서는, 표준음성패턴이 저장된 음성모델 데이터베이스를 이용하여, 음성명령을 입력문자열을 생성할 수 있다.
코드생성단계(S220)에서는, 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 입력 문자열에 대응하는 제어코드를 생성할 수 있다. 구체적으로, 딥러닝 모델(Deep Learning model)을 이용하여, 입력 문자열을 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환할 수 있다. 여기서, DSL 코드를 제어코드로 설정할 수 있으나, 실시예에 따라서는, 도메인 특화 언어와 범용 언어(general-purpose programming language) 사이에 설정된 변환규칙에 따라, DSL 코드를 범용 언어의 범용 코드로 변환하고, 범용 코드를 제어코드로 설정하는 것도 가능하다. 코드생성단계(S220)에서 사용하는 딥러닝 모델은 샘플 문자열과 상기 샘플 문자열에 대응한 제어동작을 정의한 DSL을 매칭한 복수의 샘플들을, 시퀀스투시퀀스(sequence to sequence, seq2seq), Transformer, CSSL (Convolutional Sequence to Sequence Learning) 등과 같은 다양한 기법에 따라 딥러닝하여 형성하는 것일 수 있다. 다만, 딥러닝 모델을 이용하여 자동으로 제어코드를 생성하는 내용은 앞서 설명하였으므로, 여기서는 구체적인 설명을 생략한다.
코드전송단계(S230)에서는, 생성한 제어코드를 단말장치로 전송할 수 있다. 단말장치로부터 수신한 음성명령에 대응하여 제어코드를 생성한 이후에는, 제어코드를 단말장치로 전송하여, 단말장치가 제어코드에 따라 동작하도록 할 수 있다. 한편, 실시예에 따라서는, 단말장치에 전송한 제어코드에 함수 또는 인스턴트 프로그램이 포함될 수 있다. 이 경우, 단말장치가 제어코드를 실행하면, 서버가 단말장치로부터 해당 함수 또는 인스턴트 프로그램에 대한 호출을 요청받을 수 있다. 이때, 서버는 해당 함수 또는 인스턴트 프로그램에 대응하는 제어코드를 단말장치로 전송하여, 단말장치가 해당 함수 또는 인스턴트 프로그램을 실행하도록 할 수 있다.
추가적으로, 코드전송단계(S230)에서 제어코드를 전송하는 대신에 제어신호를 단말장치로 전송하는 것도 가능하다. 즉, 서버에서 제어코드를 실행하여 제어신호를 생성할 수 있으며, 생성된 제어신호를 단말장치에 전송하여 단말장치가 대응하는 동작을 수행하도록 할 수 있다.
전술한 본 발명은, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 본 발명에 따른 구성요소를 치환, 변형 및 변경할 수 있다는 것이 명백할 것이다.
1: 사용자 100: 단말장치
110: 음성인식부 120: 코드생성부
130: 동작제어부 200: 서버
210: 음성수신부 220: 코드생성부
230: 코드 전송부 240: 제어신호 전송부
S110: 음성인식단계 S120: 코드생성단계
S130: 동작제어단계 S210: 음성수신단계
S220: 코드생성단계 S230: 코드 전송단계

Claims (14)

  1. 사용자가 발화하는 음성명령을 인식하고, 상기 음성명령을 대응하는 입력 문자열로 변환하는 음성인식부;
    상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드생성부; 및
    상기 생성한 제어코드를 실행하여, 상기 제어코드에 따라 단말장치에 포함된 스피커, 디스플레이부, 액추에이터 중 적어도 어느 하나에 대한 제어동작을 수행하기 위한 제어신호를 생성하는 동작제어부를 포함하는 것으로,
    상기 코드생성부는
    딥러닝 모델(Deep Learning model)을 이용하여, 상기 입력 문자열을 상기 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환하고, 상기 DSL코드를 상기 제어코드로 설정하며,
    상기 딥러닝 모델은
    샘플 문자열과 상기 샘플 문자열에 대응하는 제어동작을 정의한 DSL코드를 매칭한 복수의 샘플들을, 딥러닝 기법으로 학습하여 형성하고,
    상기 코드생성부는
    상기 딥러닝 모델을 이용하여,인스턴트 프로그램 또는 함수를 포함하는 제어코드를 생성하고,
    상기 동작제어부는
    컴파일러(compiler) 또는 인터프리터(interpreter)를 이용하여 상기 제어코드를 실행하고, 상기 제어코드에 대응하는 제어신호를 생성하는 것을 특징으로 하는 단말장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 코드생성부는
    상기 도메인 특화 언어와 범용 언어(general-purpose programming language) 사이에 설정된 변환규칙에 따라, 상기 DSL 코드를 상기 범용 언어의 범용 코드로 변환하고, 상기 범용 코드를 상기 제어코드로 설정하는 것을 특징으로 하는 단말장치.
  5. 제1항에 있어서, 상기 음성인식부는
    상기 음성명령을 서버로 전송하여 상기 음성명령에 대응하는 입력문자열로의 변환을 요청하고, 상기 서버로부터 상기 입력문자열을 수신받는 것을 특징으로 하는 단말장치.
  6. 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 상기 음성명령에 대응하는 입력 문자열을 생성하는 음성수신부;
    상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드 생성부; 및
    상기 생성한 제어코드를 상기 단말장치로 전송하는 코드 전송부를 포함하는 것으로,
    상기 코드생성부는
    딥러닝 모델(Deep Learning model)을 이용하여, 상기 입력 문자열을 상기 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환하고, 상기 DSL 코드를 상기 제어코드로 설정하며,
    상기 딥러닝 모델은
    샘플 문자열과 상기 샘플 문자열에 대응한 제어동작을 정의한 DSL을 매칭한 복수의 샘플들을, 딥러닝 기법으로 학습하여 형성하고,
    상기 코드생성부는
    상기 딥러닝 모델을 이용하여, 인스턴트 프로그램 또는 함수를 포함하는 제어코드를 생성하는 것을 특징으로 하는 서버.
  7. 삭제
  8. 삭제
  9. 제6항에 있어서, 상기 코드생성부는
    상기 도메인 특화 언어와 범용 언어(general-purpose programming language) 사이에 설정된 변환규칙에 따라, 상기 DSL 코드를 상기 범용 언어의 범용 코드로 변환하고, 상기 범용 코드를 상기 제어코드로 설정하는 것을 특징으로 하는 서버.
  10. 제6항에 있어서, 상기 코드 전송부는
    상기 제어코드에 함수가 포함되고, 상기 단말장치로부터 상기 함수에 대한 호출을 요청받으면, 상기 함수에 대응하는 코드를 전송하는 것을 특징으로 하는 서버.
  11. 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 상기 음성명령에 대응하는 입력 문자열을 생성하는 음성수신부;
    상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드 생성부; 및
    상기 생성한 제어코드를 실행하여 상기 제어코드에 따라 상기 단말장치에 포함된 스피커, 디스플레이부, 액추에이터 중 적어도 어느 하나에 대한 제어동작을 수행하기 위한 제어신호를 생성하고, 상기 제어신호를 상기 단말장치로 전송하는 제어신호 전송부를 포함하는 것으로,
    상기 코드생성부는
    딥러닝 모델(Deep Learning model)을 이용하여, 상기 입력 문자열을 상기 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환하고, 상기 DSL 코드를 상기 제어코드로 설정하며,
    상기 딥러닝 모델은
    샘플 문자열과 상기 샘플 문자열에 대응한 제어동작을 정의한 DSL코드를 매칭한 복수의 샘플들을, 딥러닝 기법으로 학습하여 형성하고,
    상기 코드생성부는
    상기 딥러닝 모델을 이용하여, 인스턴트 프로그램 또는 함수를 포함하는 제어코드를 생성하고,
    상기 제어신호 전송부는
    컴파일러(complier) 또는 인터프리터(interpreter)를 이용하여 상기 제어코드를 실행하고, 상기 제어코드에 대응하는 제어신호를 생성하는 것을 특징으로 하는 서버.
  12. 사용자가 발화하는 음성명령을 인식하고, 상기 음성명령을 대응하는 입력 문자열로 변환하는 음성인식단계;
    상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드생성단계; 및
    상기 생성한 제어코드를 실행하여, 상기 제어코드에 따라 단말장치에 포함된 스피커, 디스플레이부, 액추에이터 중 적어도 어느 하나에 대한 제어동작을 수행하기 위한 제어신호를 생성하는 동작제어단계를 포함하는 것으로,
    상기 코드생성단계는
    딥러닝 모델(Deep Learning model)을 이용하여, 상기 입력 문자열을 상기 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환하고, 상기 DSL 코드를 상기 제어코드로 설정하며,
    상기 딥러닝 모델은
    샘플 문자열과 상기 샘플 문자열에 대응한 제어동작을 정의한 DSL코드를 매칭한 복수의 샘플들을, 딥러닝 기법으로 학습하여 형성하고,
    상기 코드생성단계는
    상기 딥러닝 모델을 이용하여, 인스턴트 프로그램 또는 함수를 포함하는 제어코드를 생성하고,
    상기 동작제어단계는
    컴파일러(complier) 또는 인터프리터interpreter)를 이용하여 상기 제어코드를 실행하고, 상기 제어코드에 대응하는 제어신호를 생성하는 것을 특징으로 하는 단말장치에서의 코드 자동 생성 방법.
  13. 단말장치로부터 사용자가 발화한 음성명령을 수신하면, 상기 음성명령에 대응하는 입력 문자열을 생성하는 음성수신단계;
    상기 입력 문자열을 프로그래밍 언어(programming language)로 변환하여, 상기 입력 문자열에 대응하는 제어코드를 생성하는 코드 생성단계; 및
    상기 생성한 제어코드를 상기 단말장치로 전송하는 코드 전송단계를 포함하는 것으로,
    상기 코드생성단계는
    딥러닝 모델(Deep Learning model)을 이용하여, 상기 입력 문자열을 상기 단말장치에 대응하는 도메인 특화 언어(DSL: Domain Specific Language)의 DSL 코드로 변환하고, 상기 DSL 코드를 상기 제어코드로 설정하며,
    상기 딥러닝 모델은
    샘플 문자열과 상기 샘플 문자열에 대응한 제어동작을 정의한 DSL코드를 매칭한 복수의 샘플들을, 딥러닝 기법으로 학습하여 형성하고,
    상기 코드생성단계는
    상기 딥러닝 모델을 이용하여, 인스턴트 프로그램 또는 함수를 포함하는 제어코드를 생성하는 것을 특징으로 하는 서버에서의 코드 자동 생성 방법.
  14. 하드웨어와 결합되어, 제12항 내지 제13항 중 어느 한 항의 코드 자동 생성 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
KR1020180063036A 2018-05-31 2018-05-31 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버 KR102133466B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180063036A KR102133466B1 (ko) 2018-05-31 2018-05-31 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버
JP2019099231A JP2019212302A (ja) 2018-05-31 2019-05-28 コード自動生成方法、それを用いる端末装置およびサーバ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180063036A KR102133466B1 (ko) 2018-05-31 2018-05-31 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버

Publications (2)

Publication Number Publication Date
KR20190136843A KR20190136843A (ko) 2019-12-10
KR102133466B1 true KR102133466B1 (ko) 2020-07-13

Family

ID=68845281

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180063036A KR102133466B1 (ko) 2018-05-31 2018-05-31 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버

Country Status (2)

Country Link
JP (1) JP2019212302A (ko)
KR (1) KR102133466B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102370370B1 (ko) * 2020-04-06 2022-03-04 카페24 주식회사 전자상거래 시스템에서 쇼핑몰에 등록된 상품의 상태를 동적으로 변경하는 장치, 방법 및 시스템
CN112947930B (zh) * 2021-01-29 2024-05-17 南通大学 一种基于Transformer的Python伪代码自动生成方法
KR102664695B1 (ko) * 2021-12-21 2024-05-09 주식회사크리모 영유아 피지컬 컴퓨팅 교육용 음성인식과 터치 혼합 입력장치
CN115981615B (zh) * 2023-03-20 2023-06-30 中科航迈数控软件(深圳)有限公司 融合语言模型与知识图谱的g代码生成方法及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060106608A1 (en) * 2004-11-18 2006-05-18 International Business Machines Corporation Method and system for efficient voice-based programming
JP2015026139A (ja) * 2013-07-24 2015-02-05 富士電機株式会社 プログラム生成装置、プログラム生成方法、およびプログラム生成用プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000236585A (ja) * 1999-02-15 2000-08-29 Nippon Telegr & Teleph Corp <Ntt> 機器制御方法及び装置並びに制御サーバ
JP2011164861A (ja) * 2010-02-08 2011-08-25 Honda Motor Co Ltd 情報処理システム
EP3534274A4 (en) * 2016-10-31 2019-10-30 Sony Corporation INFORMATION PROCESSING DEVICE AND INFORMATION PROCESSING METHOD

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060106608A1 (en) * 2004-11-18 2006-05-18 International Business Machines Corporation Method and system for efficient voice-based programming
JP2015026139A (ja) * 2013-07-24 2015-02-05 富士電機株式会社 プログラム生成装置、プログラム生成方法、およびプログラム生成用プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Aditya Desai et al, "Program Synthesis using Natural Language"(2015.09.)*

Also Published As

Publication number Publication date
KR20190136843A (ko) 2019-12-10
JP2019212302A (ja) 2019-12-12

Similar Documents

Publication Publication Date Title
KR102133466B1 (ko) 코드 자동 생성 방법과, 이를 이용하는 단말장치 및 서버
US11887604B1 (en) Speech interface device with caching component
US12008990B1 (en) Providing content on multiple devices
US11468889B1 (en) Speech recognition services
US11195531B1 (en) Accessory for a voice-controlled device
US10152965B2 (en) Learning personalized entity pronunciations
CN107210033B (zh) 基于众包来更新用于数字个人助理的语言理解分类器模型
US10887710B1 (en) Characterizing environment using ultrasound pilot tones
US8898064B1 (en) Identifying candidate passwords from captured audio
CN102842306A (zh) 语音控制方法及装置、语音响应方法及装置
WO2017172658A1 (en) Speech recognition and text-to-speech learning system
US8478593B2 (en) Enhanced accuracy for speech recognition grammars
KR20210106397A (ko) 음성 전환 방법, 장치 및 전자 기기
US11532301B1 (en) Natural language processing
JP2014106523A (ja) 音声入力対応装置及び音声入力対応プログラム
US10062386B1 (en) Signaling voice-controlled devices
JP4809358B2 (ja) 対話システムの忠実度を向上させる方法及びシステム
KR20190001435A (ko) 음성 입력에 대응하는 동작을 수행하는 전자 장치
US11626107B1 (en) Natural language processing
CN111292749B (zh) 智能语音平台的会话控制方法及装置
JPWO2015045039A1 (ja) 方法、電子機器およびプログラム
KR20220118818A (ko) 전자 장치 및 전자 장치의 동작 방법
US20240249725A1 (en) Speech interface device with caching component
JPWO2019030810A1 (ja) 音声認識装置および音声認識方法
KR20230045333A (ko) 전자 장치 및 전자 장치의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant