KR20230006900A - 예제 기반 음성 봇 개발 기법 - Google Patents

예제 기반 음성 봇 개발 기법 Download PDF

Info

Publication number
KR20230006900A
KR20230006900A KR1020227042499A KR20227042499A KR20230006900A KR 20230006900 A KR20230006900 A KR 20230006900A KR 1020227042499 A KR1020227042499 A KR 1020227042499A KR 20227042499 A KR20227042499 A KR 20227042499A KR 20230006900 A KR20230006900 A KR 20230006900A
Authority
KR
South Korea
Prior art keywords
conversation
training
voice
bot
voice bot
Prior art date
Application number
KR1020227042499A
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
Priority claimed from US17/112,418 external-priority patent/US11804211B2/en
Priority claimed from US17/541,098 external-priority patent/US20220180858A1/en
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20230006900A publication Critical patent/KR20230006900A/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/02Methods for producing synthetic speech; Speech synthesisers
    • G10L13/027Concept to speech synthesisers; Generation of natural phrases from machine-based concepts
    • 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/06Creation of reference templates; Training of speech recognition systems, e.g. adaptation to the characteristics of the speaker's voice
    • G10L15/063Training
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/01Customer relationship services
    • G06Q30/015Providing customer assistance, e.g. assisting a customer within a business location or via helpdesk
    • G06Q30/016After-sales
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/12Hotels or restaurants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/60Business processes related to postal services
    • 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/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/02User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • 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/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/1822Parsing for meaning understanding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/27Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique
    • G10L25/30Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/487Arrangements for providing information services, e.g. recorded voice services or time announcements
    • H04M3/493Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
    • H04M3/4936Speech interaction details

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Acoustics & Sound (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Signal Processing (AREA)
  • Finance (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Development Economics (AREA)
  • Accounting & Taxation (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Primary Health Care (AREA)
  • Machine Translation (AREA)

Abstract

구현은 제3자 개발자가 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝할 수 있는 음성 봇 개발 플랫폼을 제공하는 것에 관한 것이다. 트레이닝 인스턴스는 각각 트레이닝 입력 및 트레이닝 출력을 포함할 수 있다. 트레이닝 입력은 대응하는 대화의 일부 및 그 대응하는 대화의 이전 컨텍스트를 포함할 수 있다. 트레이닝 출력에는 대응하는 대화의 일부에 대한 대응하는 실측 응답이 포함될 수 있다. 트레이닝하는 것에 후속하여, 음성 봇이 제3자를 대신하여 대화를 수행하기 위해 배치시될 수 있다. 일부 구현에서, 음성 봇은 대응하는 대화 부분의 특정 특징에 음성 봇이 주목하도록 대응하는 특징 강조 입력에 기초하여 추가로 트레이닝된다. 일부 추가적 또는 대안적인 구현에서, 음성 봇은 원격 프로시저 호출(RPCs)을 통해 제3자 시스템과 상호 작용하도록 추가로 트레이닝된다.

Description

예제 기반 음성 봇 개발 기법
본 발명은 예제 기반 음성 봇(voice bot) 개발 기법에 관한 것이다.
인간은 "봇", "챗봇", "자동화 어시스턴트", "대화형 개인 비서", "지능형 개인 비서", "대화 에이전트" 등의 다양한 컴퓨터 디바이스로 지칭되는 대화형 소프트웨어 애플리케이션을 통해 인간 대 컴퓨터와의 대화에 참여할 수 있다. 예를 들어, 이러한 봇은 전화를 걸거나 수신 전화에 응답하고, 제3자를 대신하여 동작을 수행하기 위해 인간과 대화를 할 수 있다. 그러나, 이러한 봇의 기능은 봇이 동작을 수행하기 위해 이용하는 사전 정의된 의도 스키마(intent schemas)에 의해 제한될 수 있다. 즉, 봇과의 대화에 참여하는 인간이 시전 정의된 의도 스키마에 정의되지 않은 의도를 포함하는 음성 발언을 제공하면 봇은 실패할 것이다. 또한, 이러한 봇을 업데이트하기 위해, 기존 의도 스키마가 수정되거나 새로운 의도 스키마가 추가될 수 있다. 하지만, 인간 음성의 다양한 뉘앙스에 대해 봇을 견고하게 만들기 위해 정의되어야 하는 의도 스키마는 사실상 무한하다. 이러한 의도 스키마를 수동으로 정의 및/또는 수동으로 구체화하기 위해서는 광범위한 컴퓨팅 리소스의 이용이 필요하다. 또한 대량의 스키마가 정의되더라도 대량의 의도 스키마를 저장 및/또는 이용하기 위해서는 많은 양의 메모리가 필요하다. 따라서, 의도 스키마는 인간 음성의 뉘앙스를 학습할 정도로 실질적으로 확장할 수 없다.
본 명세서에 개시된 구현은 제3자와 관련된 음성 봇이 복수의 트레이닝 인스턴스에 기초하여 트레이닝될 수 있게 하는 음성 봇 개발 플랫폼을 제공하는 것에 관한 것이다. 음성 봇은 제3자와 관련된 전화 통화에 대해 제3자를 대신하여 대화를 수행하기 위해 하나 이상의 ML 모델의 복수의 기계 학습(ML) 계층을 이용하는 하나 이상의 프로세서에 해당할 수 있다. 음성 봇 개발 플랫폼은 제3자 개발자로부터 음성 봇 개발 플랫폼으로 향하는 제3자 개발자와 관련된 클라이언트 디바이스를 통해 사용자 입력에 기초하여 복수의 트레이닝 인스턴스를 얻을 수 있다. 제3자와 관련된 전화 통화는 각각의 클라이언트 디바이스를 통해 인간에 의해 개시되고 제3자에게 전달되는 수신 전화, 및/또는 음성 봇 개발 플랫폼을 통해 음성 봇에 의해 개시되고 인간 또는 인간과 관련된 추가적인 제3자에게 전달되는 발신 전화를 포함할 수 있다. 또한, 제3자와 관련된 전화 통화는 다양한 음성 통신 프로토콜(예를 들어, Voice over Internet Protocol(VoIP), 공중 전화망(public switched telephone networks)(PSTN) 및/또는 기타 전화 통신 프로토콜)을 사용하여 수행될 수 있다.
예를 들어, 음성 봇이 트레이닝되고 있는 제3자가 가상 카페(Hypothetical Cafe)라는 가상의 레스토랑 엔터티라고 가정한다. 또한 Hypothetical Cafe와 관련된 음성 봇을 트레이닝하기 위한 복수의 트레이닝 인스턴스가 음성 봇 개발 플랫폼을 통해 획득되었다고 가정한다. 이 예에서, 음성 봇은 그후 수신 전화에 응답하고 전화 통화 중에 레스토랑 예약, 영업 시간 문의, 포장 주문 및/또는 Hypothetical Cafe로 직접 걸려온 전화 통화와 관련된 기타 다른 동작과 관련된 하나 이상의 동작을 수행할 수 있다. 또한, 음성 봇은 추가로 또는 대안적으로 발신 전화 통화 수행을 시작하고 인벤토리(inventory) 주문, 정보 기술 요청 및/또는 Hypothetical Cafe를 대신하여 발신 전화 통화와 관련된 기타 다른 동작이 통화 중에 수행될 수 있다. 특히, 음성 봇의 각각의 인스턴스가 임의의 주어진 시간에 각각의 인간과 다수의 개별 대화에 참여할 수 있도록 음성 봇의 다수의 각각의 인스턴스가 배치될 수 있다. 예를 들어, 음성 봇의 각 인스턴스는 음성 봇의 ML 계층(들)의 해당 인스턴스를 이용하는 해당 프로세서(들)를 포함할 수 있다.
다양한 구현들에서, 복수의 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함할 수 있다. 트레이닝 인스턴스 입력은 대응하는 대화의 일부 및 대응하는 대화와 관련된 이전 컨텍스트를 포함할 수 있다. 예를 들어, 대응하는 대화의 일부는 사용자(예를 들어, 제3자 개발자 또는 다른 사람)의 음성 입력을 캡처하는 오디오 데이터, 하나 이상의 자동 음성 인식(ASR) 모델을 사용하여 오디오 데이터를 처리하는 것에 기초하여 생성된 복수의 음성 가설, 및/또는 제3자 개발자가 제공한 텍스트를 포함할 수 있다. 또한, 대응하는 대화와 관련된 이전 컨텍스트는 대화의 일부를 선행하는 대응하는 대화의 선행 오디오 데이터, 하나 이상의 ASR 모델을 사용하여 선행 오디오 데이터를 처리하는 것에 기초하여 생성된 복수의 선행 음성 가설, 제3자 개발자가 제공하는 텍스트 및/또는 대응하는 대화와 관련된 메타데이터를 포함할 수 있다. 트레이닝 인스턴스 출력은 대응하는 대화의 적어도 일부에 대한 대응하는 실측(실제)(ground truth) 응답을 포함할 수 있다. 예를 들어, 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답은 사용자(예를 들어, 제3자 개발자 또는 다른 사람)의 음성 응답을 캡처하는 오디오 데이터, 하나 이상의 ASR 모델을 사용하여 오디오 데이터를 처리하는 것에 기초하여 생성된 복수의 음성 가설, 실측 응답과 관련된 실측 임베딩 및/또는 제3 개발자가 제공한 텍스트를 포함할 수 있다.
이러한 구현의 일부 버전에서, 트레이닝 인스턴스 입력은 하나 이상의 ML 모델의 복수의 ML 계층을 사용하여 처리되어 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성할 수 있다. 또한, 예측 임베딩은 임베딩 공간에서 트레이닝 인스턴스 출력과 관련된 실측 임베딩과 비교될 수 있다. 하나 이상의 손실(loss)은 예측 임베딩과 실측 임베딩 사이의 거리 메트릭(예를 들어, 코사인 거리, 유클리드 거리 및/또는 기타 거리 메트릭)에 기초하여 생성될 수 있고, 복수의 ML 계층 중 하나 이상은 하나 이상의 손실에 기초하여 업데이트될 수 있다. 이러한 구현의 일부 추가 또는 대안 버전에서, 복수의 ML 계층의 제1 ML 계층은 대응하는 대화의 적어도 일부를 처리하여 복수의 ML 계층 중 제1 임베딩을 생성하는데 이용될 수 있고, 복수의 ML 계층의 제2 ML 계층은 대응하는 대화의 이전 컨텍스트를 처리하여 제2 임베딩을 생성하는데 이용될 수 있고, 제1 임베딩과 제2 임베딩은 연결되어 대응하는 대화의 현재 상태와 관련된 임베딩을 생성할 수 있다. 즉, 대응하는 대화의 현재 상태와 관련된 임베딩은 대응하는 대화의 히스토리에 대해 대응하는 대화를 인코딩한다. 이들 구현의 일부 추가적인 또는 대안적인 추가 버전에서, 대화의 적어도 일부에 포함되거나 대화의 적어도 일부에 포함된 오디오 데이터에 기초하여 생성되는 복수의 음성 가설은 처리되기 전에 정렬 및/또는 주석이 달릴 수 있다.
다양한 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 하나 이상의 대응하는 특징 강조 입력(feature emphasis input)과 연관될 수 있다. 대응하는 특징 강조 입력(들)은 제3자 개발자로부터의 사용자 입력에 기초하여 얻을 수 있으며, 대응하는 트레이닝 인스턴스의 특정 특징이 중요한 이유에 대해 표시로 제공될 수 있다. 대응하는 특징 강조 입력(들)은 전술한 바와 같이, 복수의 ML 계층을 트레이닝하기 위한 트레이닝 인스턴스 입력의 일부로서, 트레이닝 인스턴스 입력을 처리한 후에 복수의 ML 계층의 업데이트를 바이어스하기 위해, 및/또는 트레이닝 동안 대응하는 특징 강조 입력(들)에 대해 복수의 ML 계층에 주목하는 포인터 네트워크에 대한 입력으로 이용될 수 있다. 예를 들어, Hypothetical Cafe와 관련된 음성 봇의 트레이닝 인스턴스 입력으로 이용되는 대응하는 대화의 일부가 "오후 6시에 4인 예약을 하고 싶습니다."에 해당한다면, 대응하는 특징 강조 입력(들)은 대응하는 대화의 일부가 레스토랑 예약을 위한 시간 특징 및 인원수 특징을 포함한다는 표시를 포함할 수 있다. 결과적으로 음성 봇은 추론 시 입력의 특정 기능에 주목하도록 트레이닝될 수 있다.
여기에 설명된 대응하는 특징 강조 입력(들)을 사용함으로써, 다양한 기술적 이점을 얻을 수 있다. 하나의 비-제한적인 예로서, 음성 봇은 대응하는 특징 강조 입력을 포함함으로써 주어진 양의 트레이닝 인스턴스에 기초하여 주어진 수준의 정확도 및/또는 견고성을 달성할 수 있다. 대응하는 특징 강조 입력을 포함하지 않으면 주어진 수준의 정확도 및/또는 견고성을 달성하기 위해 더 많은 양의 트레이닝 인스턴스가 필요하거나 주어진 수준의 정확도 및/또는 견고성을 달성할 수 없다. 예를 들어, 주어진 음성 봇에 의해 처리되는 입력이 사실상 무한할 수 있지만, 사실항 무한한 각 입력에 대해 미리 정의된 의도 스키마를 요구하지 않고 응답의 분산을 주어진 음성 봇에 대한 후보 응답으로 제한할 수 있다. 그 결과, 음성 봇은 보다 빠르고 효율적인 방식으로 트레이닝될 수 있으며, 이에 따라 음성 봇을 트레이닝하는 데 사용되는 클라이언트 디바이스의 컴퓨팅 리소스 및/또는 트레이닝 인스턴스, 트레이닝 손실 및/또는 트레이닝 데이터가 하나 이상의 네트워크를 통해 전송되는 구현에서 네트워크 리소스를 줄일 수 있다.
다양한 구현에서, 음성 봇은 하나 이상의 제3자 시스템과 원격 프로시저 호출(RPC)을 수행하도록 트레이닝될 수 있다. 제3자 시스템은 예를 들어 예약 시스템, 인벤토리 시스템, 상태 업데이트 시스템 및/또는 음성 봇으로부터 RPC 아웃바운드 요청을 수신하고 반응형 RPC 인바운드 요청을 음성 봇으로 다시 전송할 수 있는 기타 제3자 시스템을 포함할 수 있다. 음성 봇 개발 플랫폼에 의해 획득된 복수의 트레이닝 인스턴스는 RPC 트레이닝 인스턴스를 포함할 수 있다. 각 RPC 트레이닝 인스턴스는 RPC 아웃바운드 트레이닝 인스턴스 또는 RPC 인바운드 트레이닝 인스턴스일 수 있다. 주어진 RPC 트레이닝 인스턴스가 RPC 아웃바운드 트레이닝 인스턴스인 구현에서, 트레이닝 인스턴스 입력은 전술한 바와 같이 대응하는 대화의 일부 및 대응하는 대화의 이전 컨텍스트를 포함할 수 있다. 그러나 트레이닝 인스턴스 출력에는 RPC 아웃바운드 요청을 생성하고 전송하기 위한 표시와 선택적으로 실측 응답이 포함될 수 있다. 계속해서 위의 Hypothetical Cafe의 예에서, RPC 아웃바운드 요청은 "오후 6시에 4인 예약을 하고 싶습니다"라는 대응하는 대화 부분에 대한 응답으로 [시간 = 6:00PM; 인원수= 4]의 구조화된 요청이 예약 시스템으로 전송된다. 또한, 트레이닝 인스턴스 출력은 음성 봇이 레스토랑 예약에 대한 예약 가능 여부를 문의하고 있음을 사람에게 알리기 위해 "확인하겠습니다"라는 실측 응답을 포함할 수 있다. 주어진 RPC 트레이닝 인스턴스가 RPC 인바운드 트레이닝 인스턴스인 구현에서, 트레이닝 인스턴스 입력은 하나 이상의 제3자 시스템으로부터의 RPC 인바운드 요청을 포함할 수 있다. 또한, 트레이닝 인스턴스 출력은 RPC 인바운드 요청에 대한 대응하는 실측 응답을 포함할 수 있다. 계속해서 위의 Hypothetical Cafe의 예에서, RPC 인바운드 요청은 원하는 시간이 가능한지 여부(예를 들어, 오후 6시에 4명 예약) 및 원하는 시간을 사용할 수 없는 경우 선택적으로 하나 이상의 대체 시간을 나타내는 구조화된 요청일 수 있다. 또한, 음성 봇이 레스토랑 예약 가능 여부를 묻고 있다고 인간에게 알려주기 위하여, 트레이닝 인스턴스 출력에는 "오후 6시에 이용할 수 있습니다. 이름은 무엇입니까?" 또는 "오후 6시에는 이용할 수 없지만 오후 7시와 8시에는 가능합니다"라는 실측 응답이 포함될 수 있다.
본 명세서에 설명된 RPC 트레이닝 인스턴스를 사용함으로써 다양한 기술적 이점을 얻을 수 있다. 하나의 비-제한적 예로서, 음성 봇은 제3자 시스템에 요청을 전송하는 방법 및/시기와 음성 봇이 수행하는 전화 대화의 동작(들)을 해결하는데 이러한 요청에 대한 응답을 이용하는 방법을 배울 수 있다. 결과적으로 이러한 동작(들)은 대화 중에 음성 봇에 의해 해결될 수 있으며, 대화에 추가 사람을 참여시킬 필요 없이 효율적으로 해결될 수 있다. 또한, RPC 트레이닝 인스턴스를 이용하면 잘못된 RPC 요청이 적기 때문에 RPC 요청의 양을 줄일 수 있으므로, RPC 요청을 생성하는 데 소비되는 컴퓨팅 리소스 및/또는 하나 이상의 네트워크를 통해 RPC 요청을 전송하는데 소비되는 네트워크 리소스를 줄일 수 있다.
일부 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 제3자 개발자로부터의 사용자 입력에 기초하여 음성 봇 개발 플랫폼을 통해 이전 전화 통화 모음(corpus)으로부터 획득될 수 있다. 제3자 개발자는 추가 사용자 입력을 통해 이전 전화 통화 모음에서 하나 이상의 트레이닝 인스턴스에 레이블을 지정하도록 요청받을 수 있다. 예를 들어, 음성 봇 개발 플랫폼은 제3자 개발자에게 하나 이상의 트레이닝 인스턴스에 대해 대응하는 특징 강조 입력(들)을 정의하고, 하나 이상의 트레이닝 인스턴스에 대한 RPC 요청(있는 경우)을 정의하고, 및/또는 하나 이상의 트레이닝 인스턴스에 대해 다른 레이블을 정의하도록 요청할 수 있다. 이전 전화 통화에는 여러 사람 및/또는 사람과 대응하는 음성 봇 간의 대응하는 대화를 캡처하는 오디오 데이터가 포함될 수 있다. 이전 전화 통화를 처리하여 하나 이상의 트레이닝 인스턴스를 생성할 수 있다. 예를 들어, 이전 전화 통화가 제1 유형의 인간(예를 들어, 고객)과 제2 유형의 인간(예를 들어, 직원) 간의 대응하는 대화를 캡처하는 오디오 데이터를 포함한다고 가정한다. 이 예에서, 고객과 관련된 대응하는 대화의 일부에 대응하는 오디오 데이터가 식별될 수 있고, 고객과 관련된 대응하는 대화의 일부에 응답하는 직원과 관련된 대응하는 응답에 대응하는 오디오 데이터가 식별될 수 있다. 고객과 관련된 대응하는 대화의 일부는 트레이닝 인스턴스 입력의 일부로 이용될 수 있으며, 직원과 관련된 대응하는 응답은 트레이닝 인스턴스 출력의 일부로 이용될 수 있다. 또한 대응하는 대화의 특정 지점에서 대응하는 대화의 이전 컨텍스트가 트레이닝 인스턴스 입력의 일부로 이용될 수도 있다. 대응하는 전화 통화 중에 RPC가 수행되는 구현에서, 제3 자 개발자는 RPC 아웃바운드 요청 또는 RPC 인바운드 요청을 대응하는 트레이닝 인스턴스에 삽입해야 할 수 있다. 이러한 구현의 일부 버전에서 이전 전화 통화는 음성 봇이 트레이닝되는 제3자와 연관될 수 있다. 이러한 구현의 일부 추가 또는 대체 버전에서, 이전 전화 통화는 음성 봇이 트레이닝되는 제3자와 구별되는 하나 이상의 다른 제3자와 연관될 수 있다.
일부 추가적 또는 대안적 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 제3자 개발자로부터의 사용자 입력에 기초하여 음성 봇 개발 플랫폼을 통해 수행되는 예시적(시범적) 대화(demonstrative conversation)로부터 획득될 수 있다. 예시적 대화는 한 명 이상의 인간(예를 들어, 제3자 개발자를 포함하거나 포함하지 않을 수 있음) 간의 대응하는 예시적 대화를 캡처하는 오디오 데이터 및/또는 텍스트를 포함할 수 있다. 계속해서 위의 Hypothetical Cafe 예에서, 인간은 Hypothetical Cafe의 고객의 관점에서 대응하는 대화를 시작하기 위해 사용자 입력을 제공할 수 있고, 인간 또는 추가 인간은 Hypothetical Cafe 직원의 관점에서 추가 후속 사용자 입력을 제공할 수 있고, 인간은 직원의 관점에서 추가 후속 사용자 입력을 제공할 수 있고, 인간 또는 추가 인간은 고객의 관점에서 추가 후속 사용자 입력을 제공할 수 있으며, 이런 식으로 예시적 대화가 끝날 때까지 계속된다. 예시적 대화는 복수의 트레이닝 인스턴스 중 하나 이상을 생성하는 이전 전화 통화 모음의 이전 전화 통화에 대해 위에서 설명한 것과 동일하거나 유사한 방식으로 처리될 수 있다.
일부 추가적 또는 대안적 구현에서, 제3자 개발자로부터의 사용자 입력에 기초하여 음성 봇 개발 플랫폼을 통해 복수의 트레이닝 인스턴스 중 하나 이상이 직접 획득될 수 있다. 예를 들어, 제3자 개발자는 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력으로 이용될 대응하는 대화의 적어도 일부를 정의할 수 있고, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 출력으로 이용될 대응하는 대화의 일부에 대한 실측 응답을 정의할 수 있다. 또한, 제3자 개발자는 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력의 일부 또는 해당 대화의 “이전” 부분의 대화 요약으로도 이용될 대응하는 대화에 대한 이전 컨텍스트를 선택적으로 정의할 수 있다. 특히, 제3자 개발자가 대화의 이러한 부분을 정의하더라도 제3자 개발자는 예시적 대화처럼 전체 대화를 정의할 필요는 없다. 결과적으로 제3자 개발자는 동작(예를 들어, 레스토랑 예약 동작, 항공편 변경 동작, 인벤토리 확인 동작 및/또는 해당 전화 통화 동안 수행될 수 있는 기타 동작)의 파라미터, RPC의 성능, 소개 및/또는 대응하는 대화의 다른 양태에 대한 특정 값 요청과 같은 대화의 특정 부분에 대한 하나 이상의 트레이닝 인스턴스를 정의할 수 있다.
다양한 구현에서, 음성 봇에 의해 수행되는 각각의 전화 통화에 대한 대응하는 대화 요약이, 배치(deployment) 시, 생성될 수 있다. 대응하는 대화 요약은 음성 봇 개발 플랫폼을 통해 제3자 개발자에게 제공되어 음성 봇의 성능을 모니터링할 수 있다. 일부 구현에서, 대응하는 대화 요약은 예를 들어 대응하는 전화 통화 각각의 자연어 요약, 대응하는 전화 통화의 시간, 대응하는 전화 통화의 결과, 대응하는 전화 통화와 관련된 금전 정보 및/또는 전화 통화와 관련된 기타 정보를 포함할 수 있다. 계속해서 Hypothetical Cafe의 예에서, 대응하는 대화 요약은 예를 들어 "사용자가 예약을 위해 전화를 걸었고, 시간이 가능했으며, 예약이 이루어졌습니다."일 수 있다. 일부 추가적 또는 대안적 구현에서, 대응하는 대화 요약이 선택되면, 음성 봇 개발 플랫폼을 통해 제3자 개발자에게 제시될 대응하는 전화 통화의 전사(transcription)를 발생시킬 수 있다. 대응하는 대화 요약은 음성 활동 데이터베이스에 저장될 수 있다.
본 명세서에 설명된 기술을 사용함으로써 다양한 기술적 이점을 얻을 수 있다. 한 가지 비-제한적인 예로서, 음성 봇 개발 플랫폼을 사용하면 사전 정의된 의도 스키마가 아닌 대화의 예에 기초하여 음성 봇을 트레이닝할 수 있다. 이를 통해 새로운 트레이닝 인스턴스를 추가하거나 기존 트레이닝 인스턴스를 수정하여 음성 봇 동작을 쉽게 추가하거나 수정할 수 있다. 그 결과, 본 명세서에서 설명된 음성 봇 개발 플랫폼을 사용하여 트레이닝된 음성 봇은 더 확장성이 있고, 많은 양의 의도 스키마를 정의할 필요가 없기 때문에 메모리 소비가 감소된다. 따라서, 트레이닝되고 이용되는 ML 모델(들)은 더 작은 메모리 풋프린트(footprint)일 수 있고 더 강력하고/하거나 정확할 수 있다. 또한, 음성 봇 개발 플랫폼을 사용하여 트레이닝된 음성 봇은 높은 수준의 정확도와 재현율을 얻음으로써, 음성 봇 개발 플랫폼을 사용하여 트레이닝된 음성 봇은 인간의 언어의 뉘앙스를 더 잘 이해하고 그에 따라 응답할 수 있으므로 전화 통화를 보다 빠르고 효율적으로 완료할 수 있다.
위의 설명은 본 명세서에 개시된 일부 구현의 개요로서 제공된다. 이러한 구현 및 다른 구현은 본 명세서에서 추가로 상세하게 설명된다.
도 1은 본 명세서에 개시된 구현이 구현될 수 있는 다양한 양태를 입증하는 예시적인 환경의 블록도를 도시한다.
도 2a는 다양한 구현에 따른 음성 봇 트레이닝을 위한 예시적인 프로세스 흐름을 도시한다.
도 2b는 다양한 구현에 따른 트레이닝된 음성 봇을 사용하기 위한 예시적인 프로세스 흐름을 도시한다.
도 3a, 도 3b 및 도 3c는 다양한 구현에 따른 음성 봇 개발 플랫폼과 관련된 사용자 인터페이스의 다양한 비-제한적인 예를 도시한다.
도 4는 다양한 구현에 따른 특징 강조 입력(들)의 적어도 일부분에 기초하여 음성 봇을 트레이닝하는 예시적인 방법을 도시하는 흐름도를 도시한다.
도 5는 다양한 구현에 따른 원격 프로시저 호출(들)의 적어도 일부분에 기초하여 음성 봇을 트레이닝하는 예시적인 방법을 도시하는 흐름도를 도시한다.
도 6은 다양한 구현에 따른 컴퓨팅 디바이스의 예시적인 아키텍처를 도시한다.
도 1을 참조하면, 본 발명의 다양한 양태를 나타내고 본 명세서에 개시된 구현들이 구현될 수 있는 예시적인 환경의 블록도가 도시되어 있다. 클라이언트 디바이스(110)가 도 1에 도시되어 있고, 다양한 구현에 있어, 사용자 입력 엔진(111), 렌더링 엔진(112) 및 음성 봇 개발 시스템 클라이언트(113)를 포함한다. 클라이언트 디바이스(110)는 예를 들어, 독립형 보조 디바이스(예를 들어, 마이크로폰(들), 스피커(들) 및/또는 디스플레이를 가짐), 랩탑, 데스크탑 컴퓨터, 태블릿, 웨어러블 컴퓨팅 디바이스, 차량용 컴퓨팅 디바이스, 및/또는 음성 봇 개발 시스템 클라이언트(113)를 구현할 수 있는 다른 클라이언트 디바이스일 수 있다.
사용자 입력 엔진(111)은 클라이언트 디바이스(110)에서 다양한 유형의 사용자 입력을 검출할 수 있다. 클라이언트 디바이스(110)에서 검출된 사용자 입력은 클라이언트 디바이스(110)의 마이크(들)를 통해 검출된 음성 입력, 클라이언트 디바이스(110)의 사용자 인터페이스 입력 디바이스(들)(예를 들어, 터치스크린)을 통해 검출된 터치 입력, 및/또는 클라이언트 디바이스(110)의 사용자 인터페이스 입력 디바이스(들)(예를 들어, 터치스크린 상의 가상 키보드, 물리적 키보드, 마우스, 스타일러스, 및/또는 클라이언트 디바이스(110)의 임의의 다른 사용자 인터페이스 입력 디바이스를 통해)를 통해 검출된 타이핑된 입력을 포함할 수 있다.
렌더링 엔진(112)은 출력이 사용자 인터페이스 출력을 통해 클라이언트 디바이스(110)에서 시각적 및/또는 청각적으로 렌더링되게 할 수 있다. 출력은 예를 들어 클라이언트 디바이스(110)의 사용자 인터페이스를 통해 시각적으로 렌더링될 수 있는 음성 봇 개발 시스템 클라이언트(113)와 관련된 다양한 유형의 사용자 인터페이스(예를 들어, 도 3a, 3b 및 3c와 관련하여 설명된 바와 같이), 클라이언트 디바이스(110)의 사용자 인터페이스를 통해 시각적으로 및/또는 클라이언트 디바이스(110)의 스피커(들)를 통해 청각적으로 렌더링될 수 있는 음성 봇 개발 시스템 클라이언트(113)와 관련된 알림, 및/또는 본 명세서에 기술된 임의의 다른 출력을 시각적 및/또는 청각적으로 렌더링하는 것을 포함할 수 있다.
음성 봇 개발 시스템 클라이언트(113)는 다양한 구현에서 자동 음성 인식(ASR) 엔진(130A1), 자연 언어 이해(NLU) 엔진(140A1) 및 텍스트 음성 변환(TTS) 엔진(150A1)을 포함할 수 있다. 또한, 음성 봇 개발 시스템 클라이언트(113)은 하나 이상의 네트워크(1991)(예를 들어, Wi-Fi, 블루투스(Bluetooth), 근거리 통신(near-field communication)(NFC), 근거리 통신망(local area networks)(LAN), 광역 통신망(wide area networks)(WAN), 이더넷(Ethernet), 인터넷(Internet) 및/또는 기타 네트워크의 모든 조합)를 통해 음성 봇 개발 시스템(120)과 통신할 수 있다. 음성 봇 개발 시스템 클라이언트(113) 및 음성 봇 개발 시스템(120)은 클라이언트 디바이스(110)와 상호작용하는 사용자의 관점에서 음성 봇 개발 플랫폼의 논리적 인스턴스를 형성한다. 도 1에는 음성 봇 개발 시스템(120)이 클라이언트 디바이스(110)로부터 원격으로(예를 들어, 하나 이상의 서버를 통해) 구현되는 것으로 도시되어 있지만, 이는 예시를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, 음성 봇 개발 시스템(120)은 대안적으로 클라이언트 디바이스(110)에서 로컬로 구현될 수 있다.
음성 봇 개발 플랫폼은 제3자 개발자(예를 들어, 클라이언트 디바이스(110)의 사용자)와 관련된 제3자를 대신하여, 제3자와 관련된 전화 통화에 대해 대화를 수행하기 위해 배치되는 음성 봇을 여기에 설명된 바와 같이 트레이닝하는 데 이용될 수 있다. 특히, 음성 봇 개발 플랫폼은 제1자(first party)에 의해 제공될 수 있으며, 제3자 개발자는 음성 봇 개발 플랫폼을 이용하여 제3자 개발자와 관련된 제3자를 위해 음성 봇을 트레이닝할 수 있다. 본 명세서에서 사용되는 제1자(first-party)라는 용어는 음성 봇 개발 플랫폼을 게시하는 엔티티를 의미하는 반면, 제3자(third-party)라는 용어는 제1자와 관련된 엔티티와 구별되며 음성 봇을 게시하지 않는 엔티티를 의미한다. 따라서 제3자 개발자는 음성 봇 개발 플랫폼과 상호작용하여 제3자와 연계된 음성 봇을 트레이닝하는 사용자를 의미한다.
본 명세서에 기술된 전화 통화는 다양한 음성 통신 프로토콜(예를 들어, Voice over Internet Protocol(VoIP), 공중 전화망(PSTN) 및/또는 기타 전화 통신 프로토콜)을 사용하여 수행될 수 있다. 본 명세서에 기술된 바와 같이, 합성 음성은 보조 전화 통화(assisted telephone call)의 일부로서 렌더링될 수 있으며, 이는 합성 음성을 보조 전화 통화의 참가자 중 적어도 한 명이 인식할 수 있도록 통화에 삽입하는 것을 포함할 수 있다. 합성 음성은 주어진 전화 통화의 엔드포인트 중 하나인 클라이언트 디바이스(110)에 의해 생성 및/또는 삽입될 수 있고, 전화 통화에 연결된 서버(예를 들어, 음성 봇 개발 시스템(120)을 구현하는)에 의해 생성 및/또는 삽입될 수 있다.
음성 봇 개발 시스템(120)은 다양한 구현에서 ASR 엔진(130A2), NLU 엔진(140A2), TTS 엔진(150A2), 음성 봇 트레이닝 엔진(160), 음성 봇 엔진(170), 오류 식별 엔진(180) 및 대화 요약 엔진(185)을 포함한다. 음성 봇 트레이닝 엔진(160)은 제3자를 대신하여 제3자와 관련된 전화 통화에 대해 대화를 수행하기 위해 배치되는 음성 봇을 트레이닝하는 데 이용될 수 있으며, 다양한 구현에서 트레이닝 인스턴스 엔진(161)과 트레이닝 엔진(162)을 포함할 수 있다. 또한, 음성 봇 엔진(170)은 차후에 제3자와 관련된 전화 통화에 대해 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇을 이용할 수 있고, 다양한 구현에 있어서, 응답 엔진(171) 및 원격 프로시저 호출(RPC) 엔진(172)을 포함할 수 있다.
트레이닝 인스턴스 엔진(161)은 사용자 입력 엔진(111)을 통해 클라이언트 디바이스(110)에서 검출되고 제3자 개발자에 의해 제공되는 사용자 입력에 기초하여 음성 봇을 트레이닝하기 위한 복수의 트레이닝 인스턴스를 획득할 수 있다. 복수의 트레이닝 인스턴스는 트레이닝 인스턴스(들) 데이터 베이스(161A)에, 그리고 복수의 트레이닝 인스턴스에 기초하여 트리이닝될 음성 봇의 표시와 관련하여 저장될 수 있다. 복수의 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함할 수 있다. 트레이닝 인스턴스 입력은 대응하는 대화의 일부(예를 들어, 오디오 데이터 및/또는 이에 대응하는 복수의 음성 가설), 대응하는 대화와 관련된 이전 컨텍스트, 수신 전화 통화의 표시, 발신 전화 통화 수행을 시작하는 동작 또는 명령, RPC 인바운드 요청 또는 하나 이상의 특징 강조 입력. 트레이닝 인스턴스 출력은 다음 중 하나 이상을 포함할 수 있다: 대응하는 대화의 일부에 대한 실측 응답(예를 들어, 오디오 데이터 및/또는 이에 대응하는 복수의 음성 가설), 수신 전화 통화에 대한 소개, 발신 전화 통화의 시작 또는 RPC 아웃바운드 요청 중 하나 이상을 포함할 수 있다.
일부 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 사용자 입력에 기초하여 이전 전화 통화 모음(corpus)으로부터 획득될 수 있다. 제3자 개발자는 사용자 입력을 통해 이전 전화 통화 모음에서 하나 이상의 트레이닝 인스턴스에 레이블을 지정해야 할 수 있다. 이전 전화 통화에는 다수의 인간 및/또는 인간과 대응하는 음성 봇 간의 대응하는 대화를 캡처하는 오디오 데이터가 포함될 수 있다. 트레이닝 인스턴스 엔진(161)은 하나 이상의 트레이닝 인스턴스를 생성하기 위해 이전 전화 통화를 처리할 수 있다. 예를 들어, 이전 전화 통화가 제1 유형의 인간(예를 들어, 고객)과 제2 유형의 인간(예를 들어, 직원) 간의 대응하는 대화를 캡처하는 오디오 데이터를 포함한다고 가정한다. 이 예에서, 트레이닝 인스턴스 엔진(161)은 고객과 관련된 대응하는 대화의 일부분에 해당하는 오디오 데이터를 식별할 수 있고, 고객과 관련된 해당 대화의 일부분에 응답하는 직원과 관련된 대응하는 응답에 해당하는 오디오 데이터를 식별할 수 있다. 고객과 관련된 대응하는 대화의 일부는 트레이닝 인스턴스 입력의 일부로 이용될 수 있으며, 직원과 관련된 해당 응답은 트레이닝 인스턴스 출력의 일부로 이용될 수 있다. 또한, 대응하는 대화의 이전 컨텍스트도 트레이닝 인스턴스 입력의 일부로 이용될 수 있다. 대응하는 대화의 이전 컨텍스트는 대응하는 대화에 대한 이전 오디오 데이터(및/또는 이에 대응하는 복수의 음성 가설 또는 이에 대응하는 인식된 텍스트), 대화와 관련된 메타데이터(예를 들어, 고객의 위치, 해당 전화 통화가 시작된 시간, 파라미터 값이 요청되었는지 여부 등), 및/또는 이전 전화 통화와 관련된 기타 컨텍스트 정보를 포함할 수 있다.
이러한 구현의 일부 버전에서, 이전 전화 통화는 음성 봇이 트레이닝되고 있는 제3자와 연관될 수 있다. 예를 들어 제3자가 다양한 제품을 판매하는 Hypothetical Market이라는 가상의 소매 업체라고 가정한다. 이전 전화 통화는 제1 유형의 인간(예를 들어, 고객)과 제2 유형의 인간(예를 들어, Hypothetical Market의 직원) 중 하나 이상 사이의 대응하는 대화를 캡처하는 오디오 데이터, Hypothetical Market과 관련된 음성 봇 또는 Hypothetical Market과 관련된 대화형 음성 응답(interactive voice response)(IVR) 시스템을 포함할 수 있다. 이러한 구현의 일부 추가 또는 대체 버전에서 이전 전화 통화는 음성 봇이 트레이닝되고 있는 제3자와 구별되는 하나 이상의 다른 제3자와 연관될 수 있다. 이러한 구현의 일부 추가 버전에서, 트레이닝 인스턴스 엔진(161)에 의해 획득된 하나 이상의 다른 제3자와 관련된 이전 전화 통화는 음성 봇이 트레이닝되고 있는 제3자(예를 들어, 소매업체, 항공업체, 식당업체, 학교 또는 대학업체, 공급업체, 배송 업체, 정부기관 및/또는 기타 모든 유형의 사람, 장소 또는 사물)와 동일한 유형의 엔티티인 다른 제3자로 제한될 수 있다. 계속해서 위의 예에서, Hypothetical Market과 관련된 음성 봇에 대한 트레이닝 인스턴스를 생성하는 데 사용된 이전 전화 통화는 다른 소매업체 및 선택적으로 동일하거나 유사한 제품을 판매하는 다른 소매업체와 관련된 통화로 제한될 수 있다.
추가적인 또는 대안적인 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 사용자 입력에 기초하여 수행되는 예시적 대화로부터 획득될 수 있다. 예시적 대화는 하나 이상의 인간(예를 들어, 제3자 개발자를 포함하거나 포함하지 않을 수 있음) 간의 대응하는 예시적 대화를 캡처하는 오디오 데이터 및/또는 텍스트를 포함할 수 있다. 예를 들어 제3자가 다양한 제품을 판매하는 Hypothetical Market이라는 가상의 소매 업체라고 가정한다. 이 예에서 인간은 Hypothetical Market의 고객 관점에서 대응하는 대화를 시작하기 위해 사용자 입력을 제공할 수 있고, 인간 또는 추가 인간은 Hypothetical Market 직원의 관점에서 후속 사용자 입력을 제공할 수 있고, 또한 인간은 직원의 관점에서 추가 후속 사용자 입력을 제공할 수 있고, 인간 또는 추가 인간은 고객 등의 관점에서 추가 후속 사용자 입력을 제공할 수 있다(예를 들어, 도 3b와 관련하여 설명됨). 트레이닝 인스턴스 엔진(161)은 트레이닝 인스턴스 모음에 대해 전술한 유사한 방식으로 하나 이상의 트레이닝 인스턴스를 생성하기 위해 예시적 대화를 처리할 수 있다.
일부 추가적인 또는 대안적인 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상이 사용자 입력에 기초하여 직접 획득될 수 있다. 예를 들어, 제3자 개발자는 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력으로 이용될 대응하는 대화의 적어도 일부를 정의할 수 있고, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 출력으로 이용될 대응하는 대화의 일부에 대한 실측 응답을 정의할 수 있다. 또한, 제3자 개발자는 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력의 일부 또는 대응하는 대화의 "이전" 부분의 대화 요약으로도 이용될 대응하는 대화에 대한 이전 컨텍스트를 선택적으로 정의할 수 있다. 특히 제3자 개발자가 대화의 이러한 부분을 정의하더라도 제3자 개발자가 예시적 대화와 같이 전체 대화를 정의할 필요는 없다. 결과적으로 제3자 개발자는 동작(예를 들어, 레스토랑 예약 동작, 항공편 변경 동작, 인벤토리 확인 동작 및/또는 해당 전화 통화 동안 수행될 수 있는 기타 동작)의 파라미터, RPC의 성능, 소개 및/또는 대응하는 대화의 다른 양태에 대한 특정 값 요청과 같은 대화의 특정 부분에 대한 하나 이상의 트레이닝 인스턴스를 정의할 수 있다.
다양한 구현에서, 하나 이상의 대응하는 특징 강조 입력은 복수의 트레이닝 인스턴스 중 하나 이상과 연관될 수 있다. 하나 이상의 대응하는 특징 강조 입력은 예를 들어, 트레이닝 인스턴스 입력의 하나 이상의 부분이 시간 특징, 날짜 특징, 이름 특징, 계좌 번호 특징, 이메일 주소 특징, 전화 번호 특징, 금전 특징, 수량 특징, 제품 이름 특징, 위치 특징, RPC 요청 특징, 및/또는 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력 또는 트레이닝 인스턴스 출력의 기타 모든 특징을 포함하는 것과 같이, 특정 트레이닝 인스턴스의 하나 이상의 부분이 음성 봇 트레이닝에 중요한 이유를 타나내는 자연어 입력(예를 들어, 음성 및/또는 타이핑)일 수 있다. 하나 이상의 대응하는 특징 강조 입력은 대응하는 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력에 포함될 수 있고, 트레이닝 인스턴스 입력을 처리한 후에 트레이닝되는 음성 봇에 대응하는 복수의 ML 계층의 바이어스 업데이트에 이용되고, 및/또는 트레이닝 중에 음성 봇이 하나 이상의 대응하는 특징 강조 입력에 주목하도록 하는 원인을 식별하기 위해 포인터 네트워크에 대한 입력으로 이용된다. 결과적으로 트레이닝된 음성 봇은 차후에 대화를 수행하기 위해 제3자에 의해 음성 봇이 배치될 때 이러한 특징의 발생에 주목할 수 있다.
하나 이상의 대응하는 특징 강조 입력이 포인터 네트워크에 대한 입력으로서 이용되는 구현에서, 대응하는 대화의 일부(또는 대화 인코딩, 대화 임베딩, 대화 벡터, 및/또는 다른 표현) 및/또는 대응하는 대화의 이전 컨텍스트(또는 컨텍스트 인코딩, 컨텍스트 임베딩, 컨텍스트 벡터 및/또는 다른 표현)는 트레이닝 동안 포인터 네트워크를 사용하여 처리될 수 있다. 대응하는 대화 부분의 하나 이상의 토큰은, 대응하는 대화 부분의 토큰 중 하나 이상이 하나 이상의 대응하는 특징 강조 입력에 대응하는 것으로 예측되는지 여부를 나타내는 하나 이상의 값(예를 들어, 확률, 로그 우도(log likelihood), 이진 값 또는 기타 값)으로 레이블될 수 있다. 또한, 대응하는 대화 부분의 토큰 중 하나 이상이 하나 이상의 대응하는 특징 강조 입력에 대응하는 것으로 예측되는지 여부를 나타내는 하나 이상의 값은 제3자 개발자가 제공하는 하나 이상의 특징 강조 입력에 기초하여 결정되는 하나 이상의 실측 값(ground truth value)과 비교될 수 있다.
예를 들어, 트레이닝 중인 음성 봇이 Hypothetical Market과 연관되어 있고, 트레이닝 인스턴스 입력이 "가능한 경우 제품 X를 구매하고 싶습니다"에 대응하는 대화의 적어도 일부를 포함하고 가정하고, 제3자 개발자가 제공하는 하나 이상의 대응하는 특징 강조 입력이 제품 특징 및 가용성 기능을 나타낸다고 가정한다. 이 예에서 "제품 X" 및 "사용 가능"에 해당하는 하나 이상의 토큰은 이러한 기능이 대응하는 대화의 일부에 올바르게 응답하는 데 의미가 있음을 나타내는 값과 연결될 수 있다. 그러나 포인터 네트워크가 "구매"는 예측 값(예를 들어, "구매"에 주목해야 함을 나타내는 0.5의 확률)과 함께 처리되는 것에 기초하여 특징 강조 입력에 대응하는 것으로 예측하고, "제품 X"는 예측 값(예를 들어, "제품 X"에 주목해야 함을 나타내는 확률 0.6)과 함께 처리되는 것에 기초하여 특징 강조 입력에 대응하는 것으로 예측한다고 가정하자. 이 예에서 "구매"와 관련된 예측 값 0.5는 제1 손실을 발생시키기 위해 제3자 개발자가 입력한 대응하는 특징 강조 입력으로 “구매”가 제공되지 않았기 때문에 확률 0.0과 같은 실측 값과 비교될 수 있고, "제품 X"와 관련된 예측 값 0.6은 제2 손실을 발생시키기 위해 제3자 개발자가 입력한 대응하는 특징 강조 입력으로 "제품 X"가 제공되었기 때문에 확률 1.0과 같은 실측 값과 비교될 수 있다. 이러한 실측 값은 제3자 개발자가 제공하는 하나 이상의 대응하는 특징 강조 입력에 기초하여 결정될 수 있다. 또한, 포인터 네트워크는 적어도 제1 손실 및 제2 손실에 기초하여(예를 들어, 역전파를 통해) 업데이트될 수 있다. 다른 말로 하면, 포인터 네트워크는 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력을 처리하여 대응하는 대화의 특정 부분 및/또는 주목해야 하는 트레이닝 인스턴스 입력에 포함된 대응하는 대화(또는 그 표현)의 이전 컨텍스트를 학습할 수 있다. 따라서 트레이닝 시 포인터 네트워크는 음성 봇에 해당하는 복수의 ML 계층을 학습하는 데 사용되는 동일한 트레이닝 인스턴스에 기초하여 학습될 수 있다.
일부 구현에서, 음성 봇에 대응하는 복수의 ML 계층은 포인터 네트워크에 대응하는 ML 계층을 더 포함할 수 있다. 포인터 네트워크에 대응하는 ML 계층은 어텐션(attention) 계층에 해당하는 계층과 유사할 수 있지만 차이점이 있다. 예를 들어, 변환기 ML 모델의 어텐션 계층은 전통적으로 출력 시퀀스(예를 들어, 오디오 데이터 스트림에 대응하는 텍스트)를 생성하는 동안, 변환기 ML 모델이 입력 시퀀스(예를 들어, 오디오 데이터 스트림)에 주목하도록 시퀀스 간 처리에 사용된다. 유사하게 포인터 네트워크에 대응하는 ML 계층은 출력 시퀀스를 생성하는 동안 변환기 ML 모델이 입력 시퀀스에 주목하도록 이용될 수 있다. 그러나 포인터 네트워크는 변환기 ML 모델이 입력 시퀀스의 특정 부분(예를 들어, 입력 시퀀스에 포함된 특정 단어 또는 구)에 주목한다. 일부 구현에서, 포인터 네트워크에 대응하는 ML 계층은 여기에 설명된 변환기 ML 모델의 일부일 수 있다. 추가적인 또는 대안적인 구현에서, 포인터 네트워크에 대응하는 ML 계층은 본 명세서에 설명된 변환기 ML 모델과 관련하여 사용될 수 있지만 별개일 수 있다.
따라서, 포인터 네트워크는 사용자에게 응답할 때 음성 봇이 대응하는 복수의 ML 계층에 대해 의미 있는 대화 부분을 예측하고 및/또는 음성 봇이 특별한 방식으로 사용자에게 응답한 이유를 설명하는 데 이용될 수 있다. 또한, 음성 봇에 대응하는 복수의 ML 계층은 이에 응답하여 제공되는 후보 응답의 바이어스 선택에서, 포인터 네트워크에 의해 결정된 이러한 예측된 부분을 이용할 수 있다. 계속해서 Hypothetical Market 예에서, "제품 X를 사용할 수 있으면 구매하고 싶습니다"에 대응하는 대화 부분이 트레이닝 인스턴스 입력으로 이용된다고 가정하고, "제품 X"가 실제로 판매 "가능"하다고 더 가정한다. 이러한 가용성에 기초하여 예측 응답은 "사용 가능합니다", "사용 가능합니다. 제품 X를 구매하시겠습니까?" 등에 해당할 수 있다. 이 예에서 예측 응답을 선택할 때 제3자 개발자가 제공한 하나 이상의 대응하는 특징 강조 입력은 예측 응답에 대한 바이어싱에 이용될 수도 있다. 따라서, 하나 이상의 특징 강조 입력은 트레이닝 동안 의미 있는 대응하는 대화의 하나 이상의 특정 부분을 예측하기 위해 초기 포인터 네트워크를 트레이닝하는 데 사용될 수 있을 뿐만 아니라, 음성 봇이 대응하는 대화의 일부에 대한 예측 응답을 선택하는 데 이용될 수 있다.
달리 말하면, 제3자 개발자는 음성 봇 개발 시스템(120)과 상호 작용하여 특징 강조 입력을 제공할 수 있다. 음성 봇은 추론 시 포인터 네트워크를 사용하여 대응하는 대화에 중요한 대응하는 대화의 특정 기능을 학습할 뿐만 아니라, 음성 봇은 추론 시 포인터 네트워크를 사용하여 생성된 출력에 기초하여 예측 응답이 어떻게 변경되거나 바이어스될 수 있는지도 학습할 수 있다. 그 결과, 트레이닝된 음성 봇은 추론에서 특정 방식으로 응답한 이유에 대해 제3자 개발자에게 표시를 제공할 수 있다(예를 들어, 아래에 설명된 대화 요약 엔진(185)을 통해).
본 명세서에 기술된 대응하는 특징 강조 입력(들)을 사용함으로써, 다양한 기술적 이점을 얻을 수 있다. 하나의 비-제한적인 예로서, 음성 대응하는 해당 특징 강조 입력을 포함함으로써 주어진 양의 트레이닝 인스턴스에 기초하여 주어진 수준의 정확도 및/또는 견고성을 달성할 수 있다. 대응하는 특징 강조 입력을 포함하지 않으면 주어진 수준의 정확도 및/또는 견고성을 달성하기 위해 더 많은 양의 트레이닝 인스턴스가 필요하거나 주어진 수준의 정확도 및/또는 견고성을 달성할 수 없다. 그 결과, 음성 봇은 보다 빠르고 효율적인 방식으로 트레이닝될 수 있으므로 음성 봇을 트레이닝하는 데 사용되는 클라이언트 디바이스의 컴퓨팅 리소스, 및/또는 트레이닝 인스턴스, 트레이닝 손실, 및/ 또는 트레이닝 데이터가 하나 이상의 다른 네트워크로 전송되는 구현에서 네트워크 리소스를 줄일 수 있다.
다양한 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 RPC 트레이닝 인스턴스일 수 있다. 본 명세서에서 사용되는 바와 같이, RPC 트레이닝 인스턴스는 적어도 하나의 대응하는 RPC 인바운드 요청을 포함하는 대응하는 트레이닝 인스턴스 입력 및/또는 적어도 하나의 대응하는 RPC 아웃바운드 요청을 포함하는 대응하는 트레이닝 인스턴스 출력을 갖는 트레이닝 인스턴스를 포함한다. 대응하는 트레이닝 인스턴스 출력에 포함된 RPC 아웃바운드 요청은 음성 봇이 RPC 요청을 생성하고, RPC 요청을 하나 이상의 네트워크(1992)를 통해 하나 이상의 제3자 시스템(190)(예를 들어, 예약 시스템, 인벤토리 시스템, 상태 확인 시스템, 및/또는 기타 제3자 시스템)에 전송해야 함을 나타낼 수 있다. 대응하는 트레이닝 인스턴스 입력에 포함된 RPC 인바운드 요청은 음성 봇이 하나 이상의 네트워크(1992)를 통해 하나 이상의 제3자 시스템(190)으로부터 RPC 요청에 대한 응답을 수신하고, 응답에 근거하여 출력을 생성하도록 응답을 처리해야 함을 나타낼 수 있다. 네트워크(들)(1992)은 도 1에 도시된 네트워크(들)(1991)과 별도로 도시되지만, 이는 명확성을 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, 네트워크(들)(1992) 및 네트워크(들)(1991)은 본 명세서에 기술된 동일한 네트워크 또는 네트워크의 별개의 조합일 수 있다. RPC 요청은 음성 봇 트레이닝을 위한 복수의 트레이닝 인스턴스가 생성되는 대응하는 대화와 직접적으로 연관되지 않기 때문에(예를 들어, 대화의 음성 또는 타이핑된 입력에서 직접 캡처되지 않음), 제3자 개발자는 트레이닝 인스턴스에 대한 RPC 아웃 바운드 요청 및 RPC 인바운드 요청, RPC 아웃바운드 요청이 전달되어야 하는 하나 이상의 제3자 시스템 중 특정 제3자 시스템, RPC 요청의 형식, RPC 요청에 대한 응답의 형식, 및/또는 RPC와 관련된 기타 정보를 정의해야 할 수 있다.
사용자 입력 엔진(111)이 전술한 바와 같이 트레이닝 인스턴스를 획득할 때 클라이언트 디바이스(110)의 마이크(들)를 통해 사용자의 음성 입력을 검출하는 구현에서, 음성 입력을 캡처하는 오디오 데이터가 처리될 수 있다. 일부 구현에서, 클라이언트 디바이스(110)의 ASR 엔진(130A1)은 ASR 모델(들)(130A)을 사용하여 음성 입력을 캡처하는 오디오 데이터를 처리할 수 있다. 추가적인 또는 대안적인 구현에서, 클라이언트 디바이스(110)는 네트워크(들)(1991)를 통해 음성 봇 개발 시스템(120)에 오디오 데이터를 전송할 수 있고, ASR 엔진(130A2)은 ASR 모델(들)(130A)을 사용하여 음성 입력을 캡처하는 오디오 데이터를 처리할 수 있다. 음성 인식 엔진(들)(130A1 및/또는 130A2)은 오디오 데이터의 처리에 기초하여 음성 입력에 대한 복수의 음성 가설을 생성할 수 있고, 복수의 음성 가설 각각과 관련된 대응 값(예를 들어, 확률 값, 로그 우도 값, 및/또는 다른 값)에 기초하여 음성 입력에 대한 인식된 텍스트로서 특정 음성 가설을 선택적으로 선택할 수 있다. 다양한 구현에서, ASR 모델(들)(130A)은 ASR 엔진(들)(130A1 및/또는 130A2)이 모델을 직접 사용하여 복수의 음성 가설을 생성할 수 있도록 하는 종단 간 음성 인식 모델(들)이다. 예를 들어, ASR 모델(들)(130A)은 문자별로(또는 다른 토큰별로) 복수의 음성 가설 각각을 생성하는 데 사용되는 종단 간 모델(들)일 수 있다. 문자별로 인식된 텍스트를 생성하는 데 사용되는 이러한 종단 간 모델(들)의 비-제한적인 한 예는 순환 신경망 변환기(recurrent neural network transducer)(RNN-T) 모델이다. RNN-T 모델은 어텐션 메커니즘을 사용하지 않는 시퀀스 간 모델의 한 형태이다. 다른 구현에서, ASR 모델(들)(130A)은 ASR 엔진(들)(130A1 및/또는 130A2)이 예측 음소(들)(phonemes)(및/또는 다른 표현)를 대신 생성할 수 있는 종단 간 음성 인식 모델(들)이 아니다. 예를 들어, 예측된 음소(들)(및/또는 다른 표현들)는 예측 음소(들)에 부합하는 복수의 음성 가설을 결정하기 위해 ASR 엔진(들)(130A1 및/또는 130A2)에 의해 이용될 수 있다. 그렇게 함으로써, ASR 엔진(들)(130A1 및/또는 130A2)은 디코딩 그래프, 어휘 목록 및/또는 다른 자원(들)을 선택적으로 사용할 수 있다. 다양한 구현에서, (예를 들어, 트레이닝 인스턴스 입력, 트레이닝 인스턴스 출력, 대응하는 특징 강조 입력(들), 예시적 대화, 및/또는 음성 봇의 개발 플랫폼의 다른 양태와 관련하여) 대응하는 전사가 클라이언트 디바이스(110)에서 렌더링될 수 있다.
이러한 구현의 일부 버전에서, 클라이언트 디바이스(110)의 NLU 엔진(140A1) 및/또는 음성 봇 개발 시스템(120)의 NLU 엔진(140A2)은 NLU 모델(들)(140A)을 사용하여, 음성 입력에 포함된 의도(들)를 결정하기 위한 ASR 엔진(들)(130A1 및/또는 130A2)에 의해 생성되는 인식된 텍스트를 처리할 수 있다. 예를 들어, 클라이언트 디바이스(110)가 “’두 사람에 대해 오후 6시 30분에 예약이 있습니까?’의 트레이닝 인스턴스 입력 추가”라는 음성 입력을 제3 개발자로부터(예를 들어, 트레이닝 인스턴스 입력을 정의하는 독립형 음성 입력의 일부로) 검출하면, 클라이언트 디바이스(110)는 ASR 모델(들)(130A1 및/또는 130A2)을 사용하여 음성 입력에 대응하는 인식된 텍스트를 생성하기 위해 음성 입력을 캡처하는 오디오 데이터를 처리할 수 있고, NLU 모델들(140A)을 사용하여 트레이닝 인스턴스 입력(예를 들어, 음성 데이터에 대한 오디오 데이터 및/또는 대응하는 음성 가설을 포함할 수 있음)을 추가하려는 적어도 하나의 의도를 결정하기 위해 인식된 텍스트를 처리할 수 있다.
이러한 구현의 일부 버전에서, 클라이언트 디바이스(110)의 TTS 엔진(150A1) 및/또는 음성 봇 개발 시스템(120)의 TTS 엔진(150A2)은 합성 음성을 캡처하는 합성 음성 오디오 데이터를 생성할 수 있다. 합성 음성은 렌더링 엔진(112)을 사용하여 클라이언트 디바이스(110)에서 클라이언트 디바이스(110)의 스피커(들)를 통해 렌더링될 수 있다. 합성 음성은 여기에 설명된 음성 봇 개발에 의해 생성된 임의의 출력을 캡처할 수 있으며, 예를 들어 트레이닝 인스턴스가 추가되었다는 표시(또는 특정 트레이닝 인스턴스 입력, 트레이닝 인스턴스 출력, 특징 강조 입력 등 반복), 제3자 개발자에게 하나 이상의 추가 트레이닝 인스턴스 또는 트레이닝 인스턴스 그룹(및 선택적으로 특정 기능과 관련된 인스턴스)을 추가하도록 요청하는 알림, 제3자 개발자에게 하나 이상의 기존 트레이닝 인스턴스 또는 트레이닝 인스턴스의 근거(및 선택적으로 특정 기능과 관련된 것들)를 수정하도록 요청하는 알림, 음성 봇의 트레이닝이 시작, 완료되었다는 표시 또는 음성 봇 트레이닝에 대한 상태 업데이트, 및/또는 제 3자 개발자에게 청각적으로 전달될 수 있는 음성 봇 또는 음성 봇 개발 플랫폼과 관련된 기타 정보를 포함할 수 있다.
트레이닝 엔진(162)은 음성 봇(예를 들어, 그의 ML 계층(들))을 트레이닝시키기 위해 트레이닝 인스턴스 엔진(161)에 의해 획득된(예를 들어, 트레이닝 인스턴스(들) 데이터베이스(161A)에 저장된) 복수의 트레이닝 인스턴스를 이용할 수 있다. 음성 봇은 제3자를 대신하여 제3자와 관련된 전화 통화를 위한 대화를 수행하기 위해, 하나 이상의 ML 모델(예를 들어, ML 계층(들) 데이터베이스(170A1)에 저장됨)의 복수의 기계 학습(ML) 계층을 이용하는 하나 이상의 프로세서에 해당할 수 있다. 복수의 ML 계층은 변환기 ML 모델(예를 들어, 입력 계층, 인코딩 계층, 디코딩 계층, 피드포워드 계층, 어텐션 계층, 출력 계층 및/또는 기타 ML 계층), 단방향 및/또는 양방향 RNN 모델(예를 들어, 입력 계층, 숨겨진 계층, 출력 계층 및/또는 기타 ML 계층) 및/또는 다른 ML 모델의 다른 ML 계층에 대응할 수 있다. 일부 구현에서, 포인터 네트워크에 대응하는 ML 계층은 여기에 설명된 변환기 ML 모델의 일부일 수 있다. 추가적인 또는 대안적인 구현에서, 포인터 네트워크에 대응하는 ML 계층은 본 명세서에 설명된 변환기 ML 모델과 관련하여 사용될 수 있지만 별개일 수 있다.
예를 들어, 도 2a를 참조하면, 음성 봇 트레이닝을 위한 예시적인 프로세스 흐름(200A)이 도시된다. 일부 구현에서, 트레이닝 인스턴스 엔진(161)은 트레이닝 인스턴스(들) 데이터베이스(161A)에 저장된 음성 봇과 관련된 복수의 트레이닝 인스턴스 중에서 주어진 트레이닝 인스턴스를 얻을 수 있다. 일부 구현에서, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력은 대응하는 대화의 일부에 대응하는 오디오 데이터(201) 및 대응하는 대화에 대한 대화 컨텍스트(202)를 적어도 포함할 수 있다. 또한, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 출력은 대화의 일부에 대한 실측 응답(203)을 포함할 수 있다. 오디오 데이터(201)는 복수의 음성 가설(204)을 생성하기 위해 ASR 모델(들)(130A)을 사용하여, ASR 엔진(들)(130A1 및/또는 130A2)에 의해 처리될 수 있다. 다른 구현에서, 트레이닝 인스턴스 입력은 오디오 데이터(201)에 기초하여 생성된 복수의 음성 가설(204)을 포함할 수 있지만, 오디오 데이터(201) 자체는 포함하지 않을 수 있다.
일부 구현에서, 인코딩 엔진(162a1)은 ML 계층(들) 데이터베이스(170A1)에 저장된 복수의 ML 계층의 제1 ML 계층을 사용하여, 제1 인코딩을 생성하기 위해 복수의 음성 가설(204)을 처리할 수 있다. 인코딩 엔진(162a1)은 ML 계층(들) 데이터베이스(170A1)에 저장된 복수의 ML 계층의 제2 ML 계층의 제1 ML 계층을 사용하여 대화 컨텍스트(202)를 처리하여 제2 인코딩을 생성할 수 있다. 또한, 연결 엔진(162a2)은 제1 인코딩과 제2 인코딩을 연결하여 연결된 인코딩을 생성할 수 있다. 연결된 인코딩은 해당 대화의 현재 상태를 나타낼 수 있다. 예를 들어, 연결된 인코딩은 전체 대화를 전체적으로 인코딩하기 위해 대화의 히스토리 및 대화의 가장 최근 부분을 인코딩할 수 있다.
대응하는 대화의 현재 상태를 인코딩하여 대화의 다이얼로그(dialog)를 추적함으로써 음성 봇은 대응하는 대화의 상태를 모델링 및/또는 학습할 수 있다. 따라서, 그 결과 트레이닝된 음성 봇은 대응하는 전화 통화를 통해 수행 중인 동작과 관련된 파라미터(들)에 대한 대응하는 값을 요청하는 방법을 학습할 수 있다. 예를 들어, 트레이닝 인스턴스 입력에 "안녕하세요, 판매 가능한 제품 X가 있습니까?"에 대응하는 대화의 적어도 일부가 포함되어 있다고 가정한다. 이 예에서, 음성 봇은 인간이 제품 X에 대한 인벤토리 확인을 요청하고 있음을 이해하도록 트레이닝된다. 또한, 해당 대화의 대화 컨텍스트(202)를 인코딩함으로써, 음성 봇은 또한 제품 X가 사용 가능한 경우, 인간이 구매와 관련된 이름 파라미터에 대응하는 값을 제공하지 않았거나 제품 X를 보류한 경우, 제품 X 구매와 관련된 금전 파라미터, 인간이 제품 X를 자신의 거주지로 배송하기를 원할 때 주소 파라미터의 경우 등을 이해하도록 트레이닝된다. 따라서 음성 봇은 대화 상태를 추적하여 이러한 파라미터 중 하나 이상에 대응하는 값을 인간에게 연속적으로 프롬프트(prompt)하도록 트레이닝될 수 있다.
또한, 임베딩 엔진(162a3)은 복수의 ML 계층 중 하나 이상을 사용하여 예측 응답(205)(예를 들어, 제3자의 제3자 시스템과 RPC 수행, 트레이닝 인스턴스 입력에 응답하여 제공되는 합성 음성 또는 텍스트, 수신 전화 응답, 발신 전화 시작, 및/또는 트레이닝 인스턴스 입력에 반응할 것으로 예측되는 다른 응답)과 관련된 예측 임베딩을 생성하기 위해 연결된 인코딩을 처리할 수 있다. 예측 응답(205)은 후보 응답(들) 데이터베이스(171A)(예를 들어, 실측 응답(203) 및 복수의 추가적인 후보 응답을 포함함) 내의 복수의 후보 응답으로부터 선택될 수 있다. 예측 임베딩을 생성할 때 연결된 인코딩의 크기는 고정된 차원으로 축소될 수 있다. 이는 예측 응답(205)과 관련된 예측 임베딩이 손실 엔진(162a4)에 대해 기술된 다른 임베딩과 임베딩 공간에서 쉽게 비교될 수 있게 한다.
이러한 구현의 일부 버전에서, 그리고 복수의 음성 가설(204)을 처리하기 전에, 트레이닝 엔진(162)은 복수의 음성 가설이 정렬되게 할 수 있다. 예를 들어, 복수의 음성 가설이 "오후 4시"의 음성 입력을 캡처한다고 가정한다. 이 예에서, 복수의 음성 가설은 [for, #empty, 4PM; for, 4, 오후; 넷, 넷, PM]로 정렬될 수 있고, 복수의 정렬된 음성 가설 각각은 이후에 서로 조합되어 처리될 수 있다. 이러한 구현의 일부 추가 버전에서, 트레이닝 엔진(162)은 또한 복수의 정렬된 음성 가설에 주석을 달게 할 수 있다. 계속해서 위의 예에서, 복수의 정렬된 음성 가설은 [for, #empty (@null), 4PM (@time); for, 4(@time), 오후(@time); 사(@time), 사(@time), 오후(@time)]와 같은 주석이 달릴 수 있다.
트레이닝 인스턴스 입력이 또한 오디오 데이터(201)를 포함하는 구현에서, 인코딩 엔진(162a1)은 복수의 음성 가설에 기초하여 생성된 인코딩에 더하여 또는 그 대신에 오디오 데이터(201)와 관련된 인코딩을 생성할 수 있다. 이러한 구현에서, 연결 엔진(162a2)은 오디오 데이터(201)와 관련된 인코딩 및 대화 컨텍스트(202)와 관련된 인코딩을 처리하여 연결된 인코딩을 생성할 수 있다. 또한, 임베딩 엔진(162a3)은 복수의 ML 계층 중 하나 이상을 사용하여 연결된 인코딩을 처리하여 예측 응답(205)과 관련된 예측 임베딩을 생성할 수 있다.
다양한 구현에서, 비록 도 2a에 도시되지는 않았지만, 트레이닝 엔진(162)은 ML 계층(들) 데이터베이스(170A1)에 저장된 ML 계층(들)에 대응하는 포인트 네트워크를 더 트레이닝할 수 있다. 이러한 구현에서 그리고 트레이닝 중에 하나 이상의 대응하는 특징 강조 입력을 제3자 개발자로부터 수신할 수 있으며 포인터 네트워크를 트레이닝하는 데 사용할 수 있다. 처음에, 트레이닝 엔진(162)은 포인터 네트워크가 오디오 데이터(201), 대화 컨텍스트(202) 및/또는 복수의 음성 가설(204)을 처리하여 출력을 생성하게 할 수 있다. 출력은 예를 들어 오디오 데이터(201)에서 캡처된 대화의 일부(예를 들어, 날짜 특징, 시간 특징, RPC 특징 등)에 응답하는 방법을 결정하는 데 의미가 있을 것으로 예상되는 대화의 하나 이상의 특징의 표시및 대화의 특정 부분이 오디오 데이터(201)에서 캡처된 대화의 일부분에 응답하는 방법을 결정할 때 얼마나 의미가 있을 것으로 예측되는지를 나타내는 대응하는 값(예를 들어, 이진 값, 확률, 로그 우도 등)을 포함할 수 있다. 하나 이상의 특징(및 대응 값)은 포인터 네트워크를 업데이트 하기 위한 하나 이상의 손실을 생성하기 위하여 하나 이상의 대응하는 특징 강조 입력(및 하나 이상의 대응하는 특징 각각에 대한 대응하는 실측 값)과 비교될 수 있다.
또한, 주어진 트레이닝 인스턴스에 대한 하나 이상의 대응하는 특징 강조 입력에 기초하여포인터 네트워크를 트레이닝하는 것 외에도, 인코딩 엔진(162a1) 및/또는 임베딩 엔진(162a3)은 오디오 데이터(201), 대화 컨텍스트(202) 및/또는 복수의 음성 가설(204)과 함께 부가 입력으로 제공되는 주어진 트레이닝 인스턴스와 관련된 대응하는 특징 강조 입력 중 하나 이상을 처리할 수 있다. 하나 이상의 대응하는 특징 강조 입력을 처리함에 있어서, 결과적인 예측 임베딩은 하나 이상의 대응하는 특징 강조 입력과 관련된 후보 응답으로 바이어스될 수 있다. 예를 들어, 하나 이상의 대응하는 특징 강조 입력이 레스토랑 예약을 위한 시간 특징을 포함하는 경우, 후보 응답들은 시간 특징에 의해 표시된 시간이 레스토랑 예약에 사용 가능한지 여부를 결정하기 위해 아웃바운드 RPC 요청을 시작하는 것과 관련된 후보 응답들로 바이어스될 수 있다.
또한, 본 명세서에는 인코딩 엔진(162a1), 연결 엔진(162a2) 및 임베딩 엔진(162a3)이 특정 기능을 특정 순서로 수행하는 것으로 설명되지만, 이들 특정 성능이 재정렬될 수 있고, 및/또는 이러한 엔진 중 하나 이상이 생략될 수 있음을 이해해야 한다. 예를 들어, 인코딩 엔진(162a1)은 생략될 수 있고, 임베딩 엔진(162a3)은 복수의 ML 모델(들)의 각각의 ML 계층을 사용하여 복수의 음성 가설(204) 및 대화 컨텍스트(202)를 처리하여 복수의 음성 가설과 관련된 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성할 수 있다.
또한, 손실 엔진(162a4)은 다양한 구현에서 임베딩 공간에서 예측 응답(205)과 관련된 예측 임베딩을 실측 응답(203)과 관련된 실측 임베딩과 비교하여 하나 이상의 손실(206)을 생성할 수 있다. 예측 임베딩 및 실측 임베딩은 각각 예측 응답(205) 및 대응하는 실측 응답(203)의 더 낮은 차원 표현에 대응할 수 있다. 임베딩 공간을 통해 이러한 저차원 임베딩을 비교할 수 있다. 또한, 예측 응답(205)과 관련된 예측 임베딩은 임베딩 공간에서 대응하는 실측 응답(203)과 관련된 대응하는 실측 임베딩에 근접해야 한다. 즉, 대응하는 대화의 적어도 일부 및 대화의 이전 컨텍스트를 처리함에 있어서, 시스템은 대응하는 대화의 적어도 일부에 대한 실제 응답과 유사한 응답을 예측해야 한다. 예를 들어, 임베딩 공간에서 예측 임베딩과 대응하는 실측 임베딩 사이의 거리 메트릭(예를 들어, 코사인 유사성 거리, 유클리드 거리 및/또는 다른 거리 메트릭)이 결정될 수 있으며, 하나 이상의 손실(206)은 거리 메트릭에 기초하여 생성될 수 있다.
일부 구현에서, 주어진 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝하는 동안, 예측 응답(205)(예를 들어, 내적 아키텍처)과 관련된 예측 임베딩을 생성하는데 이용되는 복수의 ML 계층과 별개인 별개의 ML 모델(도시되지 않음)을 사용하여 실측 응답(203)과 관련된 실측 임베딩이 생성될 수 있다. 실측 임베딩은 그 후 추론에서 복수의 후보 응답 중 하나로 이용될 후보 응답(들) 데이터베이스(171A)에 저장될 수 있다. 특히, 별개의 ML 계층은 별개의 ML 계층이 실측 임베딩에 할당하기 위해 임베딩 공간의 각 부분(들)을 학습하도록 하나 이상의 손실(206)에 기초하여 추가적으로 또는 대안적으로 업데이트될 수 있다(그리고 복수의 ML 계층 중 하나 이상 및/또는 별개의 ML 계층은 선택적으로 고정된 상태로 남을 수 있다). 또한, 대응하는 대화의 일부에 대한 잘못된 응답인 하나 이상의 응답과 관련된 대응하는 임베딩은 추가로 또는 대안적으로 임베딩 공간에서 대응하는 대화의 일부에 대한 올바른 임베딩을 추가로 구별하기 위해 부정적인 예로서 이용될 수 있다. 별개의 ML 계층을 업데이트한 후, 대응하는 후보 응답 임베딩을 생성하기 위해 업데이트된 별개의 ML 계층을 사용하여 복수의 추가 후보 응답을 처리할 수 있다. 이러한 후보 응답 임베딩 및 대응하는 후보 응답은 음성 봇 트레이닝에 사용되지 않더라도 후보 응답(들) 데이터베이스(171A)에 저장될 수도 있다. 따라서 추론 시, 후보 응답 임베딩 및 대응하는 후보 응답이 알려져 있으므로 별개의 ML 계층은 생략될 수 있다. 추가적인 또는 대안적인 구현에서, 실측 임베딩은 트레이닝 인스턴스(들) 데이터베이스(161A)에서 주어진 트레이닝 인스턴스에 대한 실측 응답과 관련하여 저장될 수 있다.
업데이트 엔진(162a5)은 복수의 ML 계층 중 하나 이상이 손실(206) 중 하나 이상에 기초하여 업데이트되도록 할 수 있다 (그리고 복수의 ML 계층 중 하나 이상은 선택적으로 고정된 상태로 남을 수 있다). 예를 들어, 업데이트 엔진(162a5)은 손실(206) 중 하나 이상이 복수의 ML 계층 중 하나 이상에 걸쳐 역전파되어 복수의 ML 계층 중 하나 이상의 각각의 가중치를 업데이트하도록 할 수 있다. 일부 구현에서, 업데이트 엔진(162a5)은 복수의 ML 계층 중 하나 이상을 바이어스 업데이트 하기 위해 주어진 트레이닝 인스턴스에 대한 대응하는 특징 강조 입력 중 하나 이상을 이용할 수 있다. 복수의 ML 계층 중 하나 이상은 전술한 동일 또는 유사한 방식으로 트레이닝 인스턴스 엔진(161)에 의해 획득된 추가적인 트레이닝 인스턴스(들)에 기초하여 더 업데이트될 수 있다. 일부 구현에서 음성 봇은 하나 이상의 조건이 만족될 때까지 이러한 방식으로 트레이닝될 수 있다. 하나 이상의 조건은 예를 들어, 업데이트되는 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 유효성 검사(validation), 업데이트되는 복수의 추가 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 수렴(예를 들어, 제로 손실 또는 제로 손실의 임계 범위 내), 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층이 현재 이용되고 있는 음성 봇의 인스턴스(있는 경우)보다 더 잘 수행한다는 결정, 트레이닝 인스턴스의 최소 임계량에 기반한 트레이닝의 발생, 및/또는 트레이닝 인스턴스에 기초한 트레이닝 기간을 포함할 수 있다.
음성 봇이 특정 방식으로 트레이닝되고 특정 아키텍처를 사용하는 것으로 설명되지만, 이는 예시를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어 Hypothetical Market과 연결된 음성 봇을 트레이닝할 때 Hypothetical Cafe라는 가상 레스토랑과 연결된 음성 봇을 기본 음성 봇으로 이용할 수 있다. 이 예에서, Hypothetical Market과 관련된 음성 봇에 대한 Hypothetical Cafe와 관련된 음성 봇(또는 그러한 트레이닝 인스턴스에 기초하여 생성된 출력)을 적응시키기 위해 하나 이상의 전이 학습 기술(예를 들어, 메타 학습)이 이용될 수 있다. 예를 들어, 트레이닝 인스턴스 입력에는 Hypothetical Market과 관련된 음성 봇이 다른 소매 관련 목적을 위해 트레이닝되고 있는 반면, Hypothetical Cafe와 연간된 원래 음성 봇은 식당 목적으로 트레이닝되었음을 나타내는 추가 입력이 포함될 수 있다.
다시 도 1을 간략히 참조하면, 음성 봇을 트레이닝한 후, 음성 봇 엔진(170)은 트레이닝된 음성 봇을 이용하여 제3자를 대신하여 제3자와 관련된 전화 통화에 대한 대화를 수행하도록 할 수 있고, 다양한 구현에서, 응답 엔진(171) 및 원격 프로시저 호출(RPC) 엔진(172)을 포함할 수 있다. 트레이닝된 음성 봇은 각각의 추가 클라이언트 디바이스(195)를 통해 수신 전화 통화를 시작하거나 발신 전화에 응답한 인간 또는 추가 음성 봇과 전화 통화를 수행할 수 있다. 전화 통화는 음성 통신 프로토콜(예를 들어, Voice over Internet Protocol(VoIP), 공중 전화망(PSTN) 및/또는 다른 전화 통신 프로토콜을 사용하여 하나 이상의 네트워크(1993)를 통해 수행될 수 있다. 특히, 이러한 통화는 클라우드 기반 전화 통화일 수 있으므로 음성 봇 트레이닝에 사용되는 클라이언트 디바이스(110)는 해당 전화의 엔드포인트가 아니다. 오히려, 음성 봇 개발 시스템(120)(예를 들어, 하나 이상의 서버)은 추가 클라이언트 디바이스(195) 중 하나와 함께 전화 통화의 엔드포인트 역할을 할 수 있다.
예를 들어, 특히 도 2b를 참조하여, 음성 봇이 트레이닝된 제3자가 다양한 제품을 판매하는 Hypothetical Market이라는 가상의 소매 업체라고 가정한다. 또한 인간이 Hypothetical Market과의 전화 통화를 시작하기 위해 추가 클라이언트 디바이스(195) 각각에 사용자 입력을 제공하고, 음성 봇은 인간에 의해 시작된 수신 전화 통화에 응답하고, 음성 봇에 대한 특정 소개에 대응하는 합성 음성을 캡처하는 합성 음성 오디오 데이터(예를 들어, TTS 모델(들)(150A)을 사용하여 생성됨)가 합성 음성이 추가 클라이언트 디바이스(195) 각각의 스피커(들)을 통해 인간에게 인지될 수 있도록 추가 클라이언트 디바이스(195) 각각에서 들을 수 있게 렌디링된다고 가정한다. 또한 인간이 합성 음성 오디오 데이터의 가청 렌더링에 응답하여 "안녕하세요, 제품 X를 판매할 수 있습니까?"라는 음성 발언을 제공한다고 가정한다. 음성 발언은 하나 이상의 네트워크를 통해 도 1의 음성 봇 개발 시스템(120)으로 전송되는 오디오 데이터(207)에 캡처될 수 있다.
ASR 엔진(130A2)은 음성 발언에 대응하는 복수의 음성 가설(209)을 생성하기 위하여, ASR 모델(들)(130A)을 사용하여 오디오 데이터(207)를 처리할 수 있다. 음성 봇 엔진(170)은 선택적으로 복수의 음성 가설(209)이 정렬 및/또는 주석이 달리도록 할 수 있다. 또한, 응답 엔진(171)은 ML 계층(들) 데이터베이스(170A1)에 저장된 복수의 ML 계층을 사용하여, 복수의 음성 가설(209) 중 하나 이상, 인간에 의해 시작된 수신 전화 통화에 대한 대화 컨텍스트(208)(예를 들어, 음성 봇 활동 데이터베이스(170A2)에 저장됨) 및/또는 응답 임베딩을 생성하기 위한 오디오 데이터(207)를 처리할 수 있다. 일부 구현에서, 오디오 데이터(207)는 ASR 엔진(130A2)에 의해서만 처리될 수 있고, 및/또는 복수의 음성 가설(209)은 사용자에 의해 제공된 음성 발언이 완전하다는 결정에 응답하여 응답 엔진(171)에 의해서만 처리될 수 있다. 예를 들어, 음성 봇 개발 시스템(120)은 인간이 “판매”라는 단어를 말한 후 음성 발언 제공을 완료했는지 확인하기 위하여, 사람이 음성 발언 제공을 완료한 때를 검출하도록 트레이닝된 엔드포인트 모델(들)을 사용하여, 오디오 데이터를 처리할 수 있다.
일부 구현에서, 응답 엔진(171)은 응답 임베딩을 후보 응답(들) 데이터베이스(171A)에 저장된 복수의 후보 응답과 관련된 복수의 후보 응답 임베딩과 비교할 수 있다. 또한, 응답 엔진(171)은 임베딩 공간에서 응답 임베딩과 복수의 후보 응답과 관련된 복수의 후보 응답 임베딩 중 하나 이상 사이의 거리 메트릭에 기초하여, 음성 발언에 대한 응답(210)으로서 복수의 후보 응답 중 주어진 하나를 선택할 수 있다. 예를 들어, 거리 임계값을 만족하는 대응하는 거리 메트릭과 관련된 후보 응답이 응답(210)으로서 선택될 수 있다. 응답(210)은 응답(210)을 캡처하는 합성 음성 오디오 데이터(212)를 생성하기 위해 TTS 모델(들)(150A)을 사용하여 TTS 엔진(150A2)에 의해 처리될 수 있다. 또한, 합성 음성 오디오 데이터(212)는 각각의 추가 클라이언트 디바이스(195)에서 들리도록 렌더링될 수 있다.
다양한 구현에서, 오디오 데이터(207), 대화 컨텍스트(208), 및/또는 복수의 음성 가설(209)은 도 1 및 도 2a와 관련하여 전술한 방식으로 트레이닝되는 트레이닝된 포인터 네트워크를 사용하여 처리될 수 있다. 포인터 네트워크는 오디오 데이터(207)에 응답하여 제공될 응답을 선택하고 및/또는 오디오 데이터(207)에 응답하여 RPC 아웃바운드 요청을 생성할 때 의미가 있을 것으로 예측되는 대화 또는 대화 컨텍스트의 특정 부분을 식별할 수 있다(예를 들어, 특징 강조 출력). 이러한 구현에서, 포인터 네트워크를 사용하여 식별된 대화 또는 대화 컨텍스트의 특정 부분은 응답 엔진(171)에 대한 입력으로서(예를 들어, 트레이닝된 음성 봇에 대응하는 복수의 ML 계층에 대한 부가 입력으로서) 제공될 수 있다. 또한, 응답 엔진(171)은 응답(210)의 선택 및/또는 RPC 아웃바운드 요청(211A)의 생성을 바이어스할 수 있다. 더욱이, 대화 요약 엔진(185)에 대해 더 상세히 설명된 바와 같이, 특징 강조 출력은 트레이닝된 음성 봇이 특정 방식으로 행동한 이유에 대한 설명과 대화의 개요를 제공하는 대화의 대화 요약을 생성하는데 이용될 수 있다.
일부 구현에서, 응답 엔진(171)은 RPC 요청이 오디오 데이터(207)에서 캡처된 음성 발언에 필요한지 결정할 수 있다. 이러한 구현의 일부 버전에서, RPC 엔진(172)은 RPC 아웃바운드 요청(211A)을 생성하고, RPC 아웃바운드 요청을 하나 이상의 제3자 시스템(190)으로 전송할 수 있다. 계속해서 위의 예에서, 응답 엔진(171)은 Hypothetical Market이 판매를 위한 "제품 X"의 인벤토리를 가지고 있는지 여부를 결정하기 위해 RPC 요청이 필요한지 결정할 수 있다. 따라서, RPC 엔진(172)은 인벤토리 제3자 시스템(190)으로 전송되는 RPC 아웃바운드 요청(211A)으로서 구조화된 요청(예를 들어, 인벤토리 = 제품 X, 의도 = 판매)을 생성할 수 있다. RPC 엔진(172)은 RPC 아웃바운드 요청(211A)에 응답하여 RPC 인바운드 요청(211B)을 수신할 수 있다. 예를 들어, RPC 인바운드 요청(211B)은 "제품 X"가 Hypothetical Market을 통해 판매 가능하거나 불가능하다는 것을 나타낼 수 있다. 응답 엔진(171)이 RPC 요청이 필요하다고 결정하는 구현에서, RPC 아웃바운드 요청(211A)과 관련된 합성 음성 오디오 데이터의 하나 이상의 인스턴스(예를 들어, "확인하는 동안 잠시만 기다리십시오”) 및/또는 RPC 인바운드 요청(211B) 과 관련된 합성 음성 오디오 데이터의 하나 이상의 인스턴스(예를 들어, "예, 우리는 제품 X를 판매할 수 있습니다. 구입하시겠습니까?")는 위에서 설명한 동일하거나 유사한 방식으로 추가 클라이언트 디바이스(195) 각각에서 렌더링될 수 있다.
이 프로세스는 전화 통화가 완료될 때까지 인간에 의해 제공되는 음성 발언에 대한 대응하는 응답을 생성하기 위해 반복될 수 있다. 사람과의 전화 통화는 음성 봇 활동 데이터베이스(170A2)에 저장될 수 있다. 예를 들어, 음성 봇 활동 데이터베이스(170A2)는 주어진 전화 통화에 대해, 인간의 음성 발언에 대응하는 오디오 데이터, 음성 통화의 합성 음성에 대응하는 합성 음성 오디오 데이터, 주어진 전화 통화 결과, 주어진 전화 통화 시간, 주어진 전화 통화와 관련된 시간 및/또는 날짜, 및/또는 주어진 전화 통화에서 파생된 기타 정보를 포함할 수 있다. 일부 구현에서 음성 봇은 대화에 참여하기 전에 음성 봇과 상호 작용하기 위해 인간의 동의를 요청할 수 있다. 전화 통화 중에 인간이 음성으로 대화에 참여하는 데 동의하는 구현에서, 음성 봇은 사용자와 대화에 참여할 수 있다. 인간이 전화 통화 중에 음성으로 대화에 참여하는 데 동의하지 않는 구현에서, 음성 봇은 전화 통화를 종료하거나 제3자와 관련된 추가 사람이 전화 통화에 참여하도록 요청할 수 있다.
다시 도 1을 참조하면, 오류 식별 엔진(180)은 ML 계층(들) 데이터베이스(180A)에 저장된 ML 모델의 복수의 ML 계층을 사용하여 음성 봇 활동 데이터베이스(170A2)에 저장된 음성 봇 활동을 처리하여 음성 봇의 임의의 행동 오류를 식별할 수 있다. 식별된 행동 오류는 복수의 ML 계층을 사용하여 생성된 출력에 기초하여 하나 이상의 서로 다른 범주의 오류로 분류될 수 있다. 하나 이상의 서로 다른 범주의 오류에는, 예를 들어, 음성 봇이 조기에 통화를 종료하는 경우, 음성 봇이 응답을 제공하지 못하고 시간이 초과되는 경우, 음성 봇이 인간이 원하는 동작을 완료하는데 필요한 파라미터에 해당하는 값을 요청하지 못하는 경우, 인간이 원하는 동작을 완료하기 위해 인간이 제공한 파라미터에 해당하는 값을 음성 봇이 인식하지 못하는 경우, 음성 봇이 필요할 때 RPC를 수행하지 못하는 경우, 음성 봇이 잘못된 제3자 시스템과 RPC를 수행하는 경우, 및/또는 대응하는 전화 통화 중에 발생할 수 있는 해당 음성 봇의 기타 행동 오류를 포함할 수 있다. 즉, 식별된 행동 오류의 근본 원인이 동일한 경우 식별된 행동 오류는 하나 이상의 동일한 이종 범주의 오류로 분류될 수 있다.
일부 구현에서, 오류 식별 엔진(180)은 이러한 식별된 행동 문제를 수정하기 위해 하나 이상의 조치를 자동으로 수행할 수 있다. 하나 이상의 동작은 예를 들어 음성 봇의 재트레이닝을 위한 새로운 트레이닝 인스턴스의 합성 및/또는 음성 봇의 재 트레이닝을 위한 기존 트레이닝 인스턴스의 수정을 포함할 수 있다. 예를 들어, 오류 식별 엔진(180)은 음성 봇이 대응하는 대화의 일부에 포함된 여러 특징을 혼동했다고 판단할 수 있지만 이러한 특징을 포함하는 트레이닝 인스턴스에는 음성 봇이 여러 기능을 일관되게 구별할 수 없도록 하는 희소성 문제가 있다. 이 예에서, 오류 식별 엔진(180)은 희소성 문제를 해결하기 위해 다수의 특징 중 하나 이상을 포함하는 합성 트레이닝 인스턴스를 생성할 수 있고, 생성된 합성 트레이닝 인스턴스를 포함하는 음성 봇과 관련된 복수의 트레이닝 인스턴스에 기초하여 음성 봇이 재트레이닝되도록 할 수 있다. 다른 예로서, 오류 식별 엔진(180)은 부가적으로 또는 대안적으로, 다수의 특징 중 하나 이상을 더 구별하기 위해 하나 이상의 기존 트레이닝 인스턴스를 재라벨링할 수 있다.
일부 추가적 또는 대안적 구현에서, 오류 식별 엔진(180)은 알림이 제3자 개발자에게 제공되도록 할 수 있다. 알림에는 제3자 개발자가 수행할 때 이러한 식별된 동작 문제를 수정해야 하는 하나 이상의 동작 표시가 포함될 수 있다. 알림은 해당 통화에 대한 대화 요약과 함께 렌더링되거나 별도의 인터페이스(예를 들어, 팝업 알림, 알림 인터페이스 등)를 통해 렌더링될 수 있다. 하나 이상의 동작에는, 예를 들어, 음성 봇의 재트레이닝을 위한 새로운 트레이닝 인스턴스 추가 및/또는 음성 봇의 재트레이닝을 위한 기존 트레이닝 인스턴스 수정이 포함될 수 있다. 예를 들어, 오류 식별 엔진은 하나 이상의 트레이닝 인스턴스를 제공하고, 제3자 개발자에게 다수의 트레이닝 인스턴스 중 하나 이상에 대한 하나 이상의 대응하는 특징 강조 입력을 식별하도록 프롬프트하고, 하나 이상의 트레이닝 인스턴스의 특징을 포함하는 더 많은 트레이닝 인스턴스를 추가하고, 하나 이상의 다른 레이블을 포함하도록 트레이닝 인스턴스에 레이블을 재지정하고, 및/또는 식별된 행동 오류의 근본 원인을 수정할 수 있는 기타 다른 동작을 수행할 수 있다.
대화 요약 엔진(185)은 음성 봇 활동 데이터베이스(170A2)에 저장된 음성 봇 활동에 기초하여 음성 봇에 의해 수행된 각각의 전화 통화에 대한 대응하는 대화 요약을 생성할 수 있다. 대응하는 대화 요약은 렌더링 엔진(112)을 사용하여 클라이언트 디바이스(110)의 사용자 인터페이스에서 렌더링될 수 있다. 일부 구현에서, 해당 대화 요약은 예를 들어, 각각의 대응하는 전화 통화의 자연 언어 요약, 대응하는 전화 통화 시간, 대응하는 전화 통화의 결과, 대응하는 전화 통화와 관련된 금전 정보 및/또는 음성 봇이 대화 중에 생성된 하나 이상의 특징 강조 출력에 기초하여 특정 출력을 제공한 이유와 같은 전화 통화와 관련된 기타 정보를 포함할 수 있다. 계속해서 Hypothetical Market 예에서, 대응하는 대화 요약은 예를 들어 "사용자가 제품 X의 가용성에 대해 문의하기 위해 전화를 걸었습니다. 제품 X를 사용할 수 있는지 확인했습니다. 사용자는 제품 X를 $100에 구입했습니다."가 될 수 있다. 일부 추가적 또는 대안적 구현에서, 대응하는 대화 요약은, 선택될 때, 대응하는 전화 통화의 전사가 렌더링 엔진(112)을 사용하여 클라이언트 디바이스(110)의 사용자 인터페이스에서 렌더링되게 할 수 있다. 상기 대응하는 대화 요약은 아래에서 설명된다(예를 들어, 도 3c을 참조하여).
따라서, 본 명세서에 기술된 음성 봇 개발 플랫폼은 제3자와 관련된 제3자 개발자가 음성 트레이닝하고, 음성 봇의 성능을 모니터링하고, 이후에 음성 봇의 식별된 행동 오류에 기초하여 음성 봇을 업데이트할 수 있게 한다. 특히, 음성 봇 개발 플랫폼은 대화의 일부에 기초하여 음성 봇을 트레이닝하고 더 많은 예제를 추가하거나 기존 예제를 수정하여 음성 봇을 업데이트한다는 점에서 예제 기반이라고 할 수 있다. 결과적으로 제3자 개발자는 규칙 기반 음성 봇을 개발하는 데 필요할 수 있는 다양한 의도 스키마를 정의하는 방법이나 ML에 대한 광범위한 지식이 필요하지 않다.
본 명세서에서는 음성 봇이 제3자를 대신하여 제3자와 관련된 전화 통화를 수행하기 위해 이후에 배치되는 것으로 설명되지만, 이는 예를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, 여기에 설명된 음성 봇은 인간이 주어진 음성 봇과 인간 대 컴퓨터 대화에 참여할 수 있는 모든 시나리오에 배치될 수 있다. 예를 들어, 주어진 음성 봇은 드라이브 스루 시스템을 통해 드라이브 스루에서 인간과 대화를 수행하고, 인간의 클라이언트 디바이스 및/또는 인간이 주어진 음성 봇과 인간 대 컴퓨터 대화에 참여할 수 있는 전화 통화 외부의 다른 도메인을 통해 자동 비서로서 인간과 대화를 수행하도록 트레이닝될 수 있다. 따라서 이러한 음성 봇의 행동은 해당 음성 봇을 트레이닝하는 데 사용되는 트레이닝 인스턴스에 기초하여 할 수 있음을 이해해야 한다.
본 명세서에 설명된 기술을 사용함으로써 다양한 기술적 이점을 얻을 수 있다. 비-제한적인 예로 음성 봇 개발 플랫폼을 사용하면 미리 정의된 의도 스키마가 아닌 대화의 예에 기초하여 음성 봇을 트레이닝할 수 있다. 이를 통해 새 트레이닝 인스턴스를 추가하거나 기존 트레이닝 인스턴스를 수정하여 음성 봇 동작을 쉽게 추가하거나 수정할 수 있다. 그 결과, 본 명세서에서 설명하는 음성 봇 개발 플랫폼을 사용하여 트레이닝된 음성 봇은 더 확장성이 있고, 많은 양의 의도 스키마를 정의할 필요가 없기 때문에 메모리 소비가 감소된다. 따라서 트레이닝되고 이용되는 ML 모델(들)은 더 작은 메모리 풋프린트일 수 있고 더 강력하고/하거나 정확할 수 있다. 또한, 음성 봇 개발 플랫폼을 사용하여 트레이닝된 음성 봇은 높은 수준의 정확도와 재현율을 얻음으로써 음성 봇 개발 플랫폼을 사용하여 트레이닝된 음성 봇은 인간의 말의 뉘앙스를 더 잘 이해하고 그에 따라 응답할 수 있으므로, 전화 통화를 보다 빠르고 효율적으로 완료할 수 있다.
이제 도 3a, 3b 및 3c로 돌아가면, 음성 봇 개발자 플랫폼과 관련된 사용자 인터페이스(300)의 다양한 비-제한적 예가 도시되어 있다. 제3자 개발자는 음성 봇 개발 시스템 클라이언트 또는 음성 봇 개발 시스템을 포함하는 클라이언트 디바이스(예를 들어, 도 1의 클라이언트 디바이스(110))를 사용하여 음성 봇 개발 플랫폼과 상호 작용할 수 있다. 음성 봇 개발 플랫폼과 상호 작용함으로써 제3자 개발자는, 배치 시, 제3자에게 직접 걸려온 전화 통화 또는 제3자를 대신하여 시작된 발신 전화 통화에서 제3자 개발자와 연결된 제3자를 대신하여 대화를 수행할 수 있는 음성 봇을 트레이닝할 수 있다. 예시를 위해 도 3a, 3b 및 3c에서는, 제3자 개발자가 가상의 레스토랑인 Hypothetical Cafe와 관련된 전화 통화에 대한 대화를 수행하기 위해 새 음성 봇을 만들고 있다고 가정한다.
구체적으로 도 3a을 참조하면, 음성 봇 개발 플랫폼의 홈 스크린 또는 랜딩 페이지는 사용자 인터페이스(300) 상에 시각적으로 렌더링되는 것으로 도시된다. 다양한 구현에서, 제3자 개발자는 홈 스크린 또는 랜딩 페이지에 다양한 그래픽 요소를 제공받을 수 있다. 예를 들어, 사용자 인터페이스(300)는 제3자 개발자에 의해 개발된 음성 봇 및/또는 제3자(예를 들어, Hypothetical Cafe)와 관련된 임의의 고유 식별자의 스니펫(snippet)을 제공하는 음성 봇 그래픽 요소(310)를 포함할 수 있다. 새로운 음성 봇을 생성할 때, 제3자 개발자는 개발 중인 새로운 음성 봇과 연관될 고유 식별자를 텍스트 입력 필드(318)에 제공할 수 있다. 예를 들어, 도 3a에 도시된 바와 같이, 제3자 개발자는 텍스트 입력 필드(318)에 "Hypothetical Cafe"의 타이핑된 입력을 제공하거나 "Hypothetical Cafe"에 대응하는 오디오 데이터를 캡처하는 음성 입력을 제공할 수 있다(그리고 선택적으로 마이크 인터페이스 요소(350)의 사용자 선택에 응답하여). 일부 구현에서, 제3자 개발자는 도 3a에 도시된 바와 같이, "더 보기" 그래픽 요소를 선택하여 음성 봇의 스니펫(다른 것이 존재하는 경우)을 확장하여 추가 음성 봇을 포함하거나, 사용자 인터페이스(300)에서 음성 봇 인터페이스를 시작할 수 있다.
또한, 사용자 인터페이스(300)는 새로운 음성 봇을 생성하는 데 사용되는 복수의 트레이닝 인스턴스의 스니펫을 제공하는 트레이닝 인스턴스 그래픽 요소(320)를 추가로 또는 대안적으로 포함할 수 있다. 복수의 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함할 수 있다. 트레이닝 인스턴스 입력은 예를 들어, 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 포함할 수 있고, 트레이닝 인스턴스 출력은 예를 들어, 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답을 포함할 수 있다. 복수의 트레이닝 인스턴스는 예를 들어, Hypothetical Cafe(또는 다른 레스토랑 엔티티)와 관련된 기존의 전화 통화 모음으로부터, 하나 이상의 인간(예를 들어, 개발자를 포함하거나 포함하지 않을 수 있음) 사이의 예시적 대화로부터, 및/또는 대화 스니펫에 해당하는 한 명 이상의 인간(예를 들어, 개발자를 포함하거나 포함하지 않을 수 있음)의 하나 이상의 다른 음성 발언로부터 획득할 수 있다. 복수의 트레이닝 인스턴스를 획득하고 Hypothetical Cafe 와 관련된 음성 봇을 트레이닝하는 것은 아래에서 설명된다(예를 들어, 도 3b와 관련하여). 일부 구현에서, 제3자 개발자는 도 3a에 도시된 바와 같이 “트레이닝 인스턴스(들) 추가” 그래픽 요소를 선택하여 Hypothetical Cafe와 관련된 음성 봇을 트레이닝하기 위한 트레이닝 인스턴스를 추가하거나 사용자 인터페이스(300)에서 트레이닝 인스턴스 인터페이스를 시작할 수 있다.
또한, 사용자 인터페이스(300)는 트레이닝된 음성 봇과 관련된 음성 봇 활동의 스니펫을 제공하는 음성 봇 활동 그래픽 요소(330)를 추가적으로 또는 대안적으로 포함할 수 있다. 음성 봇 활동에는 Hypothetical Cafe를 대신하여 트레이닝된 음성 봇이 수행하는 각각의 대응하는 전화 통화와 관련된 정보가 포함될 수 있다. 예를 들어, 음성 봇 활동은 각각의 대응하는 전화 통화와 관련된 시간 및/또는 날짜, 각각의 대응하는 전화 통화 시간, 각각의 대응하는 전화 통화와 관련된 요약, 각각의 대응하는 전화 통화와 관련된 전사 및/또는 Hypothetical Cafe를 대신하여 트레이닝된 음성 봇이 수행하는 각각의 대응하는 전화 통화와 관련된 기타 정보가 포함될 수 있다. 일부 구현에서, 음성 봇 활동은 대응하는 전화 통화 동안 및/또는 각각의 대응하는 전화 통화 후에 생성될 수 있다. 음성 봇 활동을 통해 제3자 개발자가 음성 봇의 성능을 모니터링할 수 있다. 음성 봇 활동은 아래에서 설명된다(도 3c와 관련하여). 일부 구현에서, 제3자 개발자는 추가 음성 활동을 포함하도록 음성 봇 활동의 스니펫(존재하는 경우)을 확장하거나 사용자 인터페이스(300)에서 음성 봇 활동 인터페이스를 실행하기 위해 도 3a에 도시된 바와 같이 "더 보기" 그래픽 요소를 선택할 수 있다.
또한, 사용자 인터페이스(300)는 트레이닝된 음성 봇과 관련된 식별된 음성 봇 행동 오류의 스니펫을 제공하는 음성 봇 행동 오류 그래픽 요소(340)를 추가적으로 또는 대안적으로 포함할 수 있다. 음성 봇 행동 오류에는 Hypothetical Cafe를 대신하여 대응하는 전화 통화 중에 트레이닝된 음성 봇이 만든 오류가 포함될 수 있다. 이러한 음성 봇 행동 오류에는 예를 들어, 레스토랑 예약이 불가능한 시간 수락 또는 제안, 잘못된 영업 시간 제공, 사용할 수 없는 음식 주문 수락 및/또는 트레이닝된 음성 봇의 잘못된 행동에 해당하는 기타 오류를 포함할 수 있다. 음성 봇 행동 오류를 통해 음성 봇 개발 플랫폼은 이러한 음성 봇 행동 오류의 해당 근본 원인을 식별할 수 있다. 일부 구현에서, 음성 봇 개발 플랫폼은 대응하는 근본 원인을 자동으로 수정하기 위해, 음성 봇을 재트레이닝하는 데 사용되는 복수의 트레이닝 인스턴스 중 하나 이상에 레이블 재지정, 음성 봇을 재트레이닝하는 데 사용되는 복수의 트레이닝 인스턴스 중 하나 이상에 하나 이상의 특징 강조 입력을 추가, 및/또는 식별된 음성 봇 행동 오류의 대응하는 근본 원인을 수정하기 위해 음성 봇 트레이닝 플랫폼에서 수행할 수 있는 기타 조치와 같은 하나 이상의 동작을 수행할 수 있다. 추가 또는 대체 구현에서 음성 봇 개발 플랫폼은 식별된 음성 봇 행동 오류의 근본 원인을 제3자 개발자에게 알리기 위해 하나 이상의 알림을 생성할 수 있다. 이러한 알림에는, 제3자 개발자에 의해 수행될 때, 제3자 개발자에게 음성 봇을 재트레이닝하는 데 사용되는 복수의 트레이닝 인스턴스 중 하나 이상에 레이블을 재지정하도록 요청하는 것, 제3자 개발자에게 음성 봇을 재트레이닝하는 데 사용되는 복수의 트레이닝 인스턴스 중 하나 이상에 하나 이상의 특징 강조 입력을 추가하도록 요청하는 것, 제3자 개발자에게 음성 봇을 재트레이닝하는 데 사용되는 하나 이상의 추가 트레이닝 인스턴스를 추가하도록 요청하는 것(및 선택적으로 하나 이상의 특정 레이블 또는 특징 강조 입력 포함), 및/또는 식별된 음성 봇 행동 오류의 대응하는 근본 원인을 수정하기 위해 제3자 개발자가 수행할 수 있는 기타 조치와 같은, 식별된 음성 봇 행동 오류의 대응하는 근본 원인을 수정할 수 있는 하나 이상의 동작 표시가 선택적으로 포함될 수 있다. 일부 구현에서, 제3자 개발자는 도 3a에 도시된 바와 같이, "더 보기" 그래픽 요소를 선택하여 식별된 음성 봇 행동 오류(존재하는 경우)의 스니펫을 확장하거나 사용자 인터페이스(300)에서 음성 봇 행동 오류 인터페이스를 시작할 수 있다.
제3자 개발자는 도 3a에 도시된 음성 봇에 대한 홈 페이지 또는 랜딩 페이지를 탐색할 수 있다. 예를 들어, 제3자 개발자가 텍스트 입력 필드(318)에서 음성 봇에 대해 "가상 카페(Hypothetical Cafe)"라는 고유 식별자를 제공하고 "트레이닝 인스턴스 추가" 그래픽 요소를 선택한다고 가정한다. 제3자 개발자는 도 3b에 도시된 바와 같이 사용자 인터페이스(300)를 통해 트레이닝 인스턴스 인터페이스를 제공받을 수 있다. 제3자 개발자는 트레이닝 인스턴스 인터페이스와 상호 작용하여 음성 봇 트레이닝을 위한 트레이닝 인스턴스를 정의할 수 있다.
일부 구현에서, 트레이닝 인스턴스는 트레이닝 인스턴스 모음으로부터 획득될 수 있다. 트레이닝 인스턴스 모음은 예를 들어, Hypothetical Cafe와 관련된 사용자(예를 들어, 직원)와 대응하는 이전 전화 통화 동안 추가 사용자(예를 들어, 고객) 사이의 하나 이상의 이전 대화, 대응하는 이전 전화 통화(예를 들어, 다른 식당 엔터티와 관련된 전화 통화)동안 Hypothetical Cafe와 관련되지 않은 다른 사용자 간의 하나 이상의 이전 대화, 및/또는 트레이닝 인스턴스가 생성될 수 있는 기타 대화를 포함할 수 있다. 예를 들어, 트레이닝 인스턴스 모음 인터페이스 요소(380)로 향하는 사용자 입력을 수신하는 것에 응답하여, 제3자 개발자는 트레이닝 인스턴스 모음에 액세스하여, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력(321A)(및 해당 대화의 임의의 이전 컨텍스트)으로 이용하기 위한 대응하는 대화의 일부, 및 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 출력(322a)으로 이용하기 위한 대응하는 대화의 일부에 대한 대응하는 응답을 선택할 수 있다. 트레이닝 인스턴스 모음 인터페이스 요소(380)로 향하는 사용자 입력은, 예를 들어, 터치스크린을 통해 또는 사용자 인터페이스 입력 디바이스(예를 들어, 마우스 또는 스타일러스)를 통해 검출되는 터치 입력 및/또는 클라이언트 디바이스의 마이크(들)를 통해 검출되는 음성 입력일 수 있다(그리고 선택적으로 음성 인터페이스 요소(350)로 향하는 사용자 입력에 응답하여). 다양한 구현에서, 제3자 개발자는 주어진 트레이닝 인스턴스에 대한 특징 강조 입력(323a)을 선택적으로 정의할 수 있다. 이러한 구현에서, 특징 강조 입력(323a)은 포인터 네트워크 및/또는 도 1 및 도 2a와 관련하여 전술한 바와 같이 음성 봇에 대응하는 복수의 ML 계층을 트레이닝하는 데 이용될 수 있다. 포인터 네트워크는 음성 봇에 대응하는 복수의 ML 계층의 일부이거나 음성 봇에 대응하는 복수의 ML 계층과 함께 이용되는 별도의 ML 계층일 수 있다.
일부 추가적 또는 대안적 구현에서, 트레이닝 인스턴스는 사용자 인터페이스(300)를 통해 사용자에게 제공되는 트레이닝 인스턴스 인터페이스에서 수신된 사용자 입력으로부터 획득될 수 있다. 트레이닝 인스턴스 인터페이스에서 수신된 사용자 입력은, 예를 들어, 터치스크린 또는 사용자 인터페이스 입력 디바이스(예를 들어, 마우스, 스타일러스, 키보드 등)를 통해 검출되는 터치 또는 타이핑된 입력 및/또는 클라이언트 디바이스의 마이크(들)를 통해 검출되는 음성 입력일 수 있다(및 선택적으로 음성 인터페이스 요소(350)로 향하는 사용자 입력에 응답하여). 예를 들어, 사용자는 도 3b에 도시된 트레이닝 인스턴스의 테이블에서 트레이닝 인스턴스 입력(321A) 및 트레이닝 인스턴스 출력(322a)(및 선택적으로 특징 강조 입력(323a)) 중 하나 이상을 포함하는 사용자 입력을 제공할 수 있다.
일부 추가적 또는 대안적 구현에서, 트레이닝 인스턴스는 예시적 대화(352b)로부터 획득될 수 있다. 예시적 대화(352b)는 Hypothetical Cafe와 관련된 음성 봇을 트레이닝하기 위한 복수의 트레이닝 인스턴스를 생성하기 위해 이용될 수 있다. 예를 들어, 도 3b의 예시적 대화에 의해 도시된 바와 같이, 제3자 개발자(및 선택적으로 다른 사람)는 예시적 대화를 위한 사용자 입력(예를 들어, 타이핑된 입력 또는 음성 입력)을 제공함으로써, Hypothetical Cafe와 관련된 사람(예를 들어, 직원)과 다른 사람(예를 들어, 고객) 간의 실제 대화를 시뮬레이션하기 위해, 다양한 역할에 따라 행동할 수 있다. 예를 들어, 제3자 개발자는 직원 그래픽 요소(362a)를 선택하고 "안녕하세요, 가상 카페입니다, 무엇을 도와드릴까요?"라는 사용자 입력(352b1)을 제공하고, 고객 그래픽 요소(362b)를 선택하고 "안녕하세요, 오늘 밤 6시에 4인용 테이블을 예약하고 싶습니다"라는 사용자 입력(354B1)을 제공하고, 직원 그래픽 요소(362a)를 선택하고 "확인해 보겠습니다"의 사용자 입력(352b2)에 이어 "죄송합니다. 오후 7시와 8시에만 4명이 이용할 수 있습니다"라는 사용자 입력(352b3)을 제공하고, 고객 그래픽 요소(362b)를 선택하고 "오후 7시로 하시겠습니다"의 사용자 입력(354B2)을 제공하고, 직원 그래픽 요소(362a)를 선택하고 "성함이 어떻게 되십니까?"의 사용자 입력(352b4)을 제공하고, 고객 그래픽 요소(362b)를 선택하고 "존 스미스"의 사용자 입력(354B3)을 제공하고, 직원 그래픽 요소(362a)를 선택하고 "감사합니다 존, 오늘 밤에 뵙겠습니다"라는 사용자 입력(352b5)을 제공할 수 있다. 음성 봇 개발 플랫폼은 예시적 대화(352b)에 기초하여 복수의 트레이닝 인스턴스를 자동으로 생성할 수 있다. 그러나 제3자 개발자는 예시적 대화(352b)에 기초하여 생성된 트레이닝 인스턴스에 대한 임의의 특징 강조 입력을 지정해야 할 수 있다.
예를 들어, 예시적 대화(352b)에 기초하여 생성된 트레이닝 인스턴스 입력(321A1)이 수신 전화가 있다는 표시를 포함한다고 가정하고, 트레이닝 인스턴스 출력(322a1)이 수신 전화에 응답하고 사용자 입력(352b1)에 대응하는 출력을 제공하는 것과 같이 수신 통화에 대한 대응하는 응답을 포함한다고 가정한다. 이 예에서 특징 강조 입력(323a1)은 수신 전화 통화에 대한 소개 특징에 대응할 수 있다. 수신 전화 통화에 대한 소개는 사용자 입력(352b1), 대화형 음성 응답(IVR) 시스템을 통해 제공되는 옵션 및/또는 제3자 개발자가 음성 봇이 학습하기를 원하는 기타 소개일 수 있다. 특히, 예시적 대화(352b)의 이전 부분이 없기 때문에 트레이닝 인스턴스 입력(321A1)에 대한 이전 대화 컨텍스트가 없다. 결과적으로 이 트레이닝 인스턴스에서 트레이닝된 음성 봇은 수신 전화에 응답하는 방법을 배울 수 있다. 트레이닝 인스턴스 입력 및/또는 트레이닝 인스턴스 출력이 사용자 입력에 기초하여 하는 구현에서, 사용자 입력은 사용자 입력을 캡처하는 오디오 데이터, 오디오 데이터 처리에 기초하여 생성된 복수의 음성 가설 및/또는 사용자 입력에 대응하는 텍스트에 대응할 수 있다.
다른 예로서, 예시적 대화(352b)에 기초하여 생성된 트레이닝 인스턴스 입력(321A2)이 사용자 입력(354B1)에 대응하는 예시적 대화(352b)의 일부 및 "$Context"에 의해 표시된 바와 같은 이전 대화 컨텍스트(예를 들어, 사용자 입력(354B1) 이전에 발생하는 예시적 대화(352b)의 사용자 입력 및/또는 예시적 대화(352b)와 관련된 메타데이터)를 포함한다고 가정하고, 트레이닝 인스턴스 출력(322a1)이 사용자 입력(352b2)과 같은 사용자 입력(354B1)에 대한 대응하는 응답 및 RPC(remote procedure call) 아웃바운드 가용성 요청을 개시하라는 표시를 포함한다고 가정한다. 이 예에서 특징 강조 입력(323a2)은 인원수 특징(예를 들어, 트레이닝 인스턴스 입력(321A2)에 대해 점선 상자로 표시된 "4명"), 시간 특징(예를 들어, 트레이닝 인스턴스 입력(321A2)에 대해 점선 상자로 표시된 "6PM") 및 RPC 아웃바운드 요청 특징과 같은 사용자 입력(354B1)의 특징에 대응할 수 있다. 특히, 트레이닝 인스턴스 출력(322a2)은 또한 가용성에 대한 RPC 아웃바운드 요청을 개시하라는 표시를 포함한다. 이 트레이닝 인스턴스는 RPC 트레이닝 인스턴스로 간주될 수 있으며, RPC 트레이닝 인스턴스의 유형은 RPC 아웃바운드 요청 트레이닝 인스턴스일 수 있다.
가용성에 대한 RPC 아웃바운드 요청에는 예를 들어, 요청된 시간에 특정 인원수에 대한 레스토랑 예약 가능 여부를 문의하기 위해 구조화된 요청을 생성하는 것(예를 들어, 가용성: [인원수] = 4; [시간] = 오후 6시, 또는 구조화된 요청에 대한 임의의 다른 형식), 및 Hypothetical Cafe에 대한 레스토랑 예약 관리와 관련된 제3자 시스템에 구조화된 요청을 전송하는 것을 포함할 수 있습니다. RPC 아웃바운드 요청이 예시적 대화(352b)에 명시적으로 포함되지 않더라도, 제3자 개발자는 가용성을 위한 RPC 아웃바운드 요청을 트레이닝 인스턴스 출력(322a2)에 추가하거나 삽입할 수 있다. 또한, RPC 아웃바운드 요청이 제3자 시스템에 전송되지만(그리고 예시적 대화(352b)에서 "고객"에 전송되지 않음), 음성 봇은 RPC 아웃바운드 요청 트레이닝 인스턴스인 레스토랑 예약에 대한 가용성을 요청하는 트레이닝 인스턴스 입력(321A2)에 기초하여 예시적 대화(352b) 동안 가용성에 대한 RPC 아웃바운드 요청을 생성 및 전송하도록 여전히 트레이닝될 수 있다. 더욱이, RPC 아웃바운드 요청이 레스토랑 예약 가능성과 연관되는 것으로 설명되지만, 이는 예시를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, RPC 아웃바운드 요청은 식품/ 인벤토리 가용성, 영업 시간 문의, 전화 통화 전달 및/또는 전화 통화 중에 하나 이상의 제3자 시스템과 상호 작용해야 하는 기타 기능과 관련될 수 있다. 결과적으로 이 RPC 아웃바운드 요청 트레이닝 인스턴스에서 트레이닝된 음성 봇은 RPC 아웃바운드 요청을 시작하는 시기와 방법을 학습할 수 있다.
또 다른 예로, 예시적 대화(352b)에 기초하여 생성된 트레이닝 인스턴스 입력(321A3)이 RPC 인바운드 요청에 대응하는 예시적 대화(352b)의 일부 및 "$Context"에 의해 표시되는 이전 대화 컨텍스트(예를 들어, RPC 인바운드 요청 및/또는 예시적 대화(352b)와 관련된 메타데이터 이전에 발생하는 예시적 대화(352b)에서의 사용자 입력)를 포함한다고 가정하고, 트레이닝 인스턴스 출력(322a3)이 사용자 입력(352b3)과 같은 RPC 인바운드 요청에 대한 대응하는 응답을 포함한다고 가정한다. 이 예에서 특징 강조 입력(323a3)은 RPC 인바운드 요청 특징에 대응할 수 있다. 특히, 트레이닝 인스턴스 출력(322a2)은 또한 가용성에 대한 RPC 아웃바운드 요청을 개시하라는 표시를 포함한다. 이 트레이닝 인스턴스는 RPC 트레이닝 인스턴스로 간주될 수 있으며, RPC 트레이닝 인스턴스의 유형은 RPC 인바운드 요청 트레이닝 인스턴스일 수 있다.
가용성이 있는 RPC 인바운드 요청은, 예를 들어, 예약 요청의 파라미터(예를 들어, 인원수 4, 시간 오후 6시)를 충족하는 레스토랑 예약이 있는지 여부의 표시를 포함하는 구조화된 응답과, 선택적으로 예약 요청의 파라미터를 만족하는 대체 하나 이상의 대체 시간 또는 시간 범위를 수신하는 것을 포함할 수 있다. 일부 구현에서, 예시적 대화(352b)의 현재 상태에 기초하여 하나 이상의 유사도(affinity) 특징이 생성될 수 있다. 예를 들어, 레스토랑 예약 요청 시간이 예시적 대화(352b)에 포함된 바와 같이 오후 6시이고 요청된 시간이 이용 가능하다고 가정한다. 이 경우 요청된 시간을 사용할 수 있음을 나타내는 하나 이상의 유사도 특징이 생성될 수 있다. 반대로 레스토랑 예약을 위해 요청한 시간을 사용할 수 없다고 가정한다. 이 경우 요청된 시간을 사용할 수 없음을 나타내고 요청된 시간을 대체 시간과 연관시키는 하나 이상의 유사도 특징(예를 들어, 예약 가능 시간이 요청시간 오후 6시 대신 오후 7시 및 오후 8시에 해당하는 경우, 요청한 시간 1시간 후 및 요청 시간 2시간 후)이 있다.
위에 설명된 RPC 아웃바운드 요청과 유사하게, RPC 인바운드 요청이 예시적 대화(352b)에 명시적으로 포함되지 않더라도, 제3자 개발자는 트레이닝 인스턴스 입력(321A3)에 가용성이 있는 RPC 인바운드 요청을 추가하거나 삽입할 수 있다. 또한, RPC 인바운드 요청이 제3자 시스템(그리고 예시적 대화(352b)에서 "고객"이 아님)으로부터 수신되더라도, 음성 봇은 RPC 인바운드 요청 트레이닝 인스턴스인 레스토랑 예약에 대한 가용성을 포함하는 트레이닝 인스턴스 입력(321A3)에 기초하여 예시적 대화(352b) 동안 가용성과 함께 RPC 인바운드 요청을 수신하도록 여전히 트레이닝될 수 있다. 더욱이, RPC 인바운드 요청이 레스토랑 예약 가능성과 연관되는 것으로 설명되지만, 이는 예시를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, RPC 인바운드 요청은 하나 이상의 제3자 시스템으로 전송된 해당 RPC 아웃바운드 요청에 기초하여 할 수 있다. 결과적으로 이 RPC 인바운드 요청 트레이닝 인스턴스에서 트레이닝된 음성 봇은 RPC 인바운드 요청을 처리하는 방법과 RPC 인바운드 요청에 포함된 대화 및 데이터의 컨텍스트에 기초하여 응답하는 방법을 배울 수 있다.
여기에 설명된 RPC 트레이닝 인스턴스를 사용하면 다양한 기술적 이점을 얻을 수 있다. 비-제한적 예로서, 음성 봇은 제3자 시스템에 요청을 전송하는 방법 및/또는 시기와 음성 봇이 수행하는 전화 대화의 동작을 해결하는 데 이러한 요청에 대한 응답을 이용하는 방법을 학습할 수 있다. 결과적으로 대화 중에 음성 봇이 동작을 해결할 수 있으며, 대화에 추가 사람을 참여시킬 필요 없이 효율적으로 해결할 수 있다. 또한 RPC 트레이닝 인스턴스를 이용하면 잘못된 RPC 요청이 적기 때문에 RPC 요청의 양을 줄일 수 있고, 따라서 RPC 요청을 생성하는 데 소비되는 컴퓨팅 리소스 및/또는 하나 이상의 네트워크를 통해 RPC 요청을 전송하는 데 소비되는 네트워크 리소스를 절약할 수 있다.
또 다른 예로, 예시적 대화(352b)에 기초하여 생성된 트레이닝 인스턴스 입력(321A4)이 사용자 입력(354B3)에 대응하는 예시적 대화(352b)의 일부 및 "$Context"에 의해 표시된 바와 같은 이전 대화 컨텍스트(예를 들어, 사용자 입력(354B1) 이전에 발생하는 예시적 대화(352b)의 사용자 입력 및/또는 예시적 대화(352b)와 관련된 메타데이터)를 포함한다고 가정하고, 트레이닝 인스턴스 출력(322a4)이 사용자 입력(352b5)에 대응하는 응답과 같이 수신 전화에 대응하는 응답을 포함한다고 가정한다. 이 예에서, 특징 강조 입력(323a4)은 이름 특징(예를 들어, 트레이닝 인스턴스 입력(321A4)에 대해 점선 상자로 표시된 "John Smith")에 대응할 수 있다. 특히, 예시적 대화(352b)에서 "고객"은 "직원"에 의해 요청될 때까지 레스토랑 예약에 대한 이름을 제공하지 않는다. 결과적으로 이 트레이닝 인스턴스에서 트레이닝된 음성 봇은 "고객"이 이름 파라미터(예를 들어, John Smith)에 대한 값을 제공하지 않는 경우 레스토랑 예약 시 이름 파라미터에 대한 값을 요청해야 하는 것을 학습할 수 있다.
다양한 구현에서 트레이닝 인스턴스를 정의한 후 Hypothetical Cafe와 연결된 음성 봇이 트레이닝 될 수 있다. 예를 들어, 음성 봇 그래픽 요소(382)로 향하는 사용자 입력을 수신하는 것에 응답하여, 음성 봇은 사용자 입력에 의해 정의된 트레이닝 인스턴스에 기초하여 트레이닝될 수 있다(예를 들어, 도 1의 음성 봇 트레이닝 엔진(160)과 관련되어 설명된 바와 같음). Hypothetical Cafe와 관련된 음성 봇은 ML 모델(예를 들어, RNN 모델, 변환기 모델, 포인터 네트워크, LSTM 모델 및/또는 다른 ML 모델)의 복수의 계층에 대응할 수 있다. 특히, 음성 봇을 트레이닝 할 때, ML 모델의 복수의 계층 중 하나 이상은 포인터 네트워크를 사용하여 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력에 주목할 수 있다. 예를 들어, 음성 봇은 적어도 인원수 특징, 시간 특징, 이름 특징, RPC 아웃바운드 요청 특징, RPC 인바운드 요청 특징 및/또는 도 3b와 관련하여 논의된 트레이닝 인스턴스와 도 3b에서 논의되지 않은 추가 트레이닝 인스턴스의 대응하는 특징 강조 입력에 의해 정의된 다른 특징에 주의를 기울일 수 있다. 포인터 네트워크는 트레이닝 인스턴스 입력(312a)에 기초하여 응답하는 방법을 결정하는 데 의미가 있을 것으로 예측되는 이러한 특징을 식별하도록 트레이닝될 수 있다.
음성 봇 배치 후, 제3자 개발자는 음성 봇의 진행 상황을 모니터링할 수 있다. 예를 들어, 음성 봇 활동 인터페이스 요소(384)로 향하는 사용자 입력을 수신한 것에 응답하여, 사용자 인터페이스(300)는 도 3c에 도시된 바와 같이 음성 봇 활동 인터페이스를 제시할 수 있다. 다른 예로서, 홈 인터페이스 요소(386)로 향하는 사용자 입력을 수신하는 것에 응답하여, 사용자 인터페이스(300)는 도 3a에 도시된 바와 같이 홈 페이지 또는 랜딩 페이지로 돌아갈 수 있고, 사용자 인터페이스(300)는 도 3c에 도시된 바와 같이, 음성 봇 활동 그래픽 요소(330)(또는 도 3a와 관련하여 전술한 대응하는 "더 보기" 그래픽 요소)의 제3자 개발자로부터의 선택에 응답하여 음성 봇 활동 인터페이스를 제시할 수 있다. 제3자 개발자는 음성 봇 활동 인터페이스와 상호 작용하여 Hypothetical Cafe와 연결된 음성 봇에 대한 음성 봇 활동을 볼 수 있다. 음성 봇 활동은 클라이언트 디바이스에 의해 액세스 가능한 하나 이상의 데이터베이스(예를 들어, 도 1의 음성 봇 활동 데이터베이스(170A2))에 저장될 수 있다.
예를 들어, 사용자는 Hypothetical Cafe를 대신하여 트레이닝된 음성 봇에 의해 수행된 전화 통화에 대한 대화 요약(331A)을 볼 수 있다. 일부 구현에서, 제3자 개발자는 도 3c에 도시되고 330A에 의해 지시된 바와 같이 음성 봇의 모든 음성 봇 활동을 볼 수 있다. 일부 추가적 또는 대안적 구현에서, 제3자 개발자는 모든 음성 봇 활동의 보기와 330B로 표시된 음성 봇의 식별된 행동 오류를 포함하는 음성 봇 활동만 보기 사이를 전환할 수 있다. 330A 및 330B와 관련된 텍스트는 선택 가능할 수 있으며 제3자 개발자가 음성 봇 활동의 이러한 서로 다른 보기 사이를 전환할 수 있게 한다. 다양한 구현에서 제3자 개발자는 음성 봇 활동 로그를 검색할 수 있다. 예를 들어, 제3자 개발자는 음성 봇 활동을 검색하기 위해 텍스트 입력 필드(330C)에 하나 이상의 용어를 입력할 수 있다. 더욱이, 다양한 구현에서, 하나 이상의 정렬 기준이 사용자에게 제시된 대화 요약(331A)을 정렬하기 위해 이용될 수 있다. 하나 이상의 정렬 기준은 예를 들어, 대응하는 전화 통화의 최근성, 제3자 개발자가 대응하는 대화 요약을 검토한 이후의 최근성 및/또는 임의의 다른 정렬 기준을 포함할 수 있다.
일부 구현에서 대화 요약은 Hypothetical Cafe를 대신하여 음성 봇에 의해 수행되는 대응하는 전화 통화에 대한 자연어 설명을 제공한다. 예를 들어, 대화 요약(331A1)은 "사용자가 예약을 하기 위해 전화를 걸었고, 요청된 시간이 이용 가능하지 않았으며, 대체 시간을 제안했고, 사용자가 예약에 대해 제안된 대체 시간을 수락했으며, 예약이 완료됨"이라고 표시한다. 이 예에서, 대화 요약(331A1)은 전화 통화가 도 3b의 예시적 대화(352b)와 유사함을 나타낸다. 대화 요약(331A1)은 추가로 또는 대안적으로, 대응하는 통화가 이루어진 시간 및 날짜, 대응하는 전화 통화 시간, 해당 전화 통화와 관련된 금전적 정보(예를 들어, 주문 취소 비용), 대응하는 전화 통화와 관련된 예약 정보, 및/또는 대응하는 전화 통화에서 파생된 기타 정보와 같은, RPC가 요청된 시간의 가용성을 확인하고 대체 시간을 식별하기 위해 수행되었다는 표시 및/또는 대응하는 전화 통화와 관련된 다른 정보(예를 들어, 포인터 네트워크를 사용하여 생성된 특징 강조 출력에 기반함)를 포함할 수 있다.
일부 추가 또는 대체 구현에서 Hypothetical Cafe를 대신하여 음성 봇에 의해 수행된 대응하는 전화 통화와 관련된 전사는 음성 통화 활동 인터페이스에서 액세스할 수 있다(선택적으로 음성 봇과 대화하는 인간이 대응하는 전화 통화에 대한 음성 봇 활동 모니터링에 동의하는 경우에만). 예를 들어, 대화 요약(331A2)은 "사용자가 포장 주문을 하기 위해 전화를 걸었고, 모든 음식이 이용 가능한지 확인했으며, 포장 주문이 주문 완료됨"을 나타낸다. 대화 요약(331A2)은 도 3c에 도시된 대화(352C)에 기초하여 생성될 수 있다. 예를 들어 음성 봇이 Hypothetical Cafe로 연결되고 각 클라이언트 디바이스를 통해 인간이 시작한 수신 전화에 응답한다고 가정한다. 또한 음성 봇이 수신 전화에 응답할 때 "안녕하세요, 가상 카페입니다, 무엇을 도와드릴까요?"라는 합성 음성(352C1)을 캡처하는 합성 음성 오디오 데이터를 렌더링한다고 가정한다. 또한, 음성 봇이 "안녕하세요, 포장 주문을 하고 싶습니다"라는 음성 발언(354C1)(및 대화(352C)의 이전 컨텍스트)을 캡처하는 오디오 데이터를 처리하고, 음성 발언(354C1)에 대한 응답으로서 “좋아요, 무엇을 드릴까요?”라는 합성 음성(352C2)을 캡처하는 합성 음성 오디오 데이터를 생성한다고 가정한다. 대화(352C)는 도 3c에 도시된 바와 같이 계속될 수 있다. 특히 대화에는 음성 발언(354C2)(예컨대, 'Peas on Earth' 수프와 'Here Today, Gone' 토마토 라자냐)의 포장 주문에 포함된 특정 항목의 가용성을 체크하기 위한 RPC 관련 제3자 인벤토리(재고) 시스템이 포함된다. RPC 관련 제3자 인벤토리 시스템은 대화(352)에서 합성 음성(352C3)(예컨대, "수프가 있는지 확인하겠습니다")에 의해 표시된 바와 같이 RPC 아웃바운드 요청을 포함할 수 있고, 합성 음성(352C4)(예를 들어, “오케이, 수프가 있습니다”)으로 대화(352)에 표시된 바와 같이 RPC 인바운드 요청을 포함할 수 있다. 또한, 음성 봇은 합성 음성(예를 들어, "40분")에 의해 또한 표시되는 바와 같이 포장 주문이 준비될 예상 시간을 포함할 수 있다.
일부 추가 또는 대안적 구현에서 주어진 전화 통화에 대해 식별된 음성 봇 행동 오류는 대응하는 대화 요약에 포함될 수 있다. 예를 들어, 대화 요약(331A3)은 "사용자가 파티오 좌석이 있는지 묻는 전화를 했음, 전화 통화는 실패함"를 나타낸다. 대화 요약(331A3)은 음성 봇이 인간이 제공하는 음성 발언에 대한 응답을 생성할 수 없는 경우, 또는 충분한 확신을 가지고 음성 발언에 대한 응답을 생성할 수 없는 경우(예를 들어, 도 1의 오류 식별 엔진(180)에 대해 설명된 바와 같이), 전화 통화가 실패했음을 나타낼 수 있다. 주어진 전화 통화에 대해 음성 봇 행동 오류가 식별되는 구현에서 대화 요약(331A3)은 음성 봇의 식별된 행동 오류를 수정하기 위해 음성 봇 개발 플랫폼에 의해 자동으로 수행된 하나 이상의 동작을 포함할 수 있다. 주어진 전화 통화에 대해 음성 봇 행동 오류가 식별되는 추가 또는 대안적 구현에서, 대화 요약(331A3)은 제3자 개발자에 의해 수행될 때 음성 봇의 식별된 행동 오류를 수정할 수 있는 하나 이상의 동작을 포함할 수 있다. 하나 이상의 동작에는 음성 봇을 재트레이닝하기 위해 하나 이상의 추가 트레이닝 인스턴스를 추가하거나 Hypothetical Cafe와 연결된 음성 봇을 교육하는 데 사용된 기존 트레이닝 인스턴스를 수정하는 것이 포함될 수 있다. 예를 들어, 트레이닝 인스턴스 인터페이스 요소(388)로 향하는 사용자 입력을 수신하는 것에 응답하여, 사용자 인터페이스(300)는 도 3b에 도시된 트레이닝 인스턴스 인터페이스로 돌아갈 수 있다. 다른 예로서, 홈 인터페이스 요소(386)로 향하는 사용자 입력을 수신하는 것에 응답하여, 사용자 인터페이스(300)는 도 3a에 도시된 바와 같이 홈 페이지 또는 랜딩 페이지로 돌아갈 수 있고, 사용자 인터페이스(300)는 도 3b에 도시된 바와 같이 제3자 개발자로부터의 트레이닝 인스턴스 그래픽 요소(320)(또는 도 3a와 관련하여 전술된 대응하는 "더 보기" 그래픽 요소)의 선택에 응답하여 트레이닝 인스턴스 인터페이스를 제공할 수 있다. Hypothetical Cafe와 관련된 음성 봇에 대한 트레이닝 인스턴스에 하나 이상의 추가 트레이닝 인스턴스가 추가될 수 있고/있거나 기존 트레이닝 인스턴스가 수정될 수 있다. 음성 봇 그래픽 요소(382)에 대한 사용자 입력을 수신하는 것에 응답하여, 음성 봇은 추가 트레이닝 인스턴스 및/또는 수정된 트레이닝 인스턴스에 기초하여 재트레이닝될 수 있다(예를 들어, 음성 봇 트레이닝 엔진(160)과 관련하여 설명된 바와 같음).
Hypothetical Cafe와 관련된 음성 봇의 단일 인스턴스만이 도 3a, 3b 및 3c에 도시되어 있지만, 이는 예를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, 음성 봇의 여러 인스턴스는 하나 이상의 컴퓨팅 디바이스(예를 들어, 클라이언트 디바이스(들), 서버(들) 및/또는 다른 컴퓨팅 디바이스(들))에 의해 동시에 구현될 수 있고, 음성 봇의 여러 인스턴스가 은 대응하는 인간(또는 다른 음성 봇)과 동시에 대화에 참여할 수 있다. 음성 봇의 각 인스턴스는 음성 봇의 복수의 ML 계층의 대응하는 인스턴스를 이용하는 대응하는 프로세서(들)를 포함할 수 있다. 더욱이 Hypothetical Cafe와 관련된 음성 봇이 도 3a, 3b 및 3c에 도시되어 있지만, 이는 예시를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, 다양한 엔티티로 발신 전화 통화를 시작하도록 음성을 추가적으로 또는 대안적으로 트레이닝할 수 있다. 예를 들어, 주어진 트레이닝 예에 대한 트레이닝 인스턴스 입력은 특정 동작을 수행하기 위해 특정 엔티티와 대응하는 전화 통화를 시작하는 동작 또는 명령을 포함할 수 있으며, 발신 전화 통화 시작과 관련된 대응하는 실측 응답을 포함할 수 있다. 이러한 방식으로 Hypothetical Cafe와 관련된 음성 봇은 공급업체로부터 더 많은 인벤토리를 주문하기 위해 발신 전화 통화를 시작 및 수행하고, 정보 기술의 소프트웨어 문제에 대해 문의하고, 고객과 레스토랑 예약을 확인하고, 음성 봇이 트레이닝된 기타 기능을 수행하는 데 이용될 수 있다.
이제 도 4로 돌아가면, 특징 강조 입력(들)에 적어도 일부분에 기초하여 음성 봇을 트레이닝하는 예시적인 방법(400)을 도시하는 흐름도가 도시되어 있다. 편의상, 이 방법(400)의 동작은 동작을 수행하는 시스템을 참조하여 설명된다. 이 방법(400)의 이 시스템은 적어도 하나의 프로세서, 적어도 하나의 메모리, 및/또는 컴퓨팅 디바이스(들)(예를 들어, 도 1의 클라이언트 디바이스(110), 도 1의 음성 봇 개발 시스템(120), 및/또는 도 6의 컴퓨팅 디바이스(610), 서버(들) 및/또는 다른 컴퓨팅 디바이스)의 다른 구성 요소를 포함한다. 더욱이, 이 방법(400)의 동작이 특정 순서로 도시되어 있지만, 이것은 제한을 의미하지 않는다. 하나 이상의 동작을 재정렬, 생략 및/또는 추가할 수 있다.
블록(452)에서, 시스템은 음성 봇을 트레이닝하기 위한 복수의 트레이닝 인스턴스를 획득하고, 복수의 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함한다. 일부 구현에서, 트레이닝 인스턴스 입력은 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 포함할 수 있고, 트레이닝 인스턴스 출력은 대화의 일부에 대한 대응하는 실측 응답을 포함할 수 있다. 일부 추가적 또는 대안적 구현에서, 트레이닝 인스턴스 입력은 수신 전화의 표시를 포함할 수 있고, 트레이닝 인스턴스 출력은 수신 전화에 응답하는 것과 관련된 대응하는 실측 응답 (및 선택적으로 수신 전화 응답과 관련된 소개)을 포함할 수 있다. 일부 추가 또는 대체 구현에서, 트레이닝 인스턴스 입력은 특정 동작을 수행하기 위해 특정 엔티티와 발신 전화 통화의 수행을 시작하는 동작 또는 명령을 포함할 수 있고, 트레이닝 인스턴스 출력은 발신 전화 통화를 시작하는 것과 관련된 대응하는 실측 응답을 포함할 수 있다. 다양한 구현에서, 복수의 트레이닝 인스턴스는, 음성 봇이 트레이닝되고 있는 제3자(또는 다른 제3자와 동일한 유형의 엔터티인 다른 제3자(예를 들어, 레스토랑 법인, 항공사 법인, 소매업체 법인 등))와 관련된 이전 전화 통화에 기초하여 생성되는 트레이닝 인스턴스 모음, 제3자와 관련된 제3자 개발자의 사용자 입력, 및/또는 한 명 이상의 인간이 제공하는 예시적 대화(예를 들어, 제3자 개발자를 포함하거나 포함하지 않을 수 있음)에서 얻을 수 있다. 음성 봇을 트레이닝시키기 위한 복수의 트레이닝 인스턴스를 획득하는 것은 도 3a, 3b 및 3c를 참조하여 설명한다.
블록(454)에서, 시스템은 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 획득한다. 대응하는 특징 강조 입력은 복수의 트레이닝 인스턴스 중 하나 이상에 대해 제3자 개발자에 의해 정의될 수 있다. 또한 특징 강조 입력은 음성 봇이 주어진 트레이닝 인스턴스에 대한 대응하는 대화 부분의 특정 특징에 주목하도록 한다. 예를 들어, 음성 봇이 트레이닝되고 있는 제3자가 Hypothetical Airlines라는 가상의 항공사 엔티티라고 가정하고, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력이 "나는 오늘 정오에서 내일 정오로 SDF에서 DCA로 항공편을 변경하고 싶습니다.”라는 대응하는 대화의 일부를 포함한다고 가정한다. 이 예에서 특징 강조 입력은 항공편 변경 특징(예를 들어, "내 항공편 변경"), 출발 위치 특징(예를 들어, "SDF"), 목적지 위치 특징(예를 들어, "DCA"), 원본 시간 및 날짜 특징(예를 들어, "오늘 정오") 및 원하는 시간 및 날짜 특징(예를 들어, "내일 정오")를 포함할 수 있다. 이 트레이닝 인스턴스 입력과 관련된 이들 특징 강조 입력은 하나 이상의 데이터베이스(예를 들어, 도 1의 트레이닝 인스턴스(들) 데이터베이스(161A))에 주어진 트레이닝 인스턴스와 연관되어 저장될 수 있고, (예를 들어, 도 1 및 2a와 관련하여)선택적으로 포인터 네트워크를 트레이닝하기 위해 이용될 수 있다.
블록(456)에서, 시스템은 ML 모델의 복수의 기계 학습(ML) 계층을 사용하여 주어진 트레이닝 인스턴스에 대해 트레이닝 인스턴스 입력(및 선택적으로 제3자 개발자가 제공하는 대응하는 특징 강조 입력)을 처리한다. 주어진 트레이닝 인스턴스와 관련된 해당 대화의 현재 상태와 관련된 임베딩을 생성한다. 일부 구현에서, 트레이닝 인스턴스 입력에 포함된 대응하는 대화의 일부는 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설에 대응한다. 이러한 구현의 일부 버전에서, 복수의 음성 가설은 제1 임베딩을 생성하기 위해 복수의 ML 계층의 제1 ML 계층을 사용하여 처리될 수 있고, 이전 대화 컨텍스트는 제2 임베딩을 생성하기 위해 복수의 ML 계층의 제2 ML 계층을 사용하여 처리될 수 있다. 제1 임베딩 및 제2 임베딩은 연결(concatenate)되어 대응하는 대화의 현재 상태와 관련된 임베딩을 생성할 수 있다. 일부 추가적 또는 대안적 구현에서, 트레이닝 인스턴스 입력에 포함된 대응하는 대화의 일부는 대응하는 대화의 일부를 캡처하는 오디오 데이터에 대응한다. 이러한 구현의 일부 버전에서, 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 생성하기 위해 자동 음성 인식(ASR) 모델을 사용하여 오디오 데이터가 처리될 수 있다. 이러한 구현의 일부 버전에서, 복수의 음성 가설(및 선택적으로 오디오 데이터와 함께)은 제1 임베딩을 생성하기 위해 복수의 ML 계층의 제1 ML 계층을 사용하여 처리될 수 있으며, 이전 대화 컨텍스트는 제2 임베딩을 생성하기 위해 복수의 ML 계층의 제2 ML 계층을 사용하여 처리될 수 있다. 제1 임베딩 및 제2 임베딩은 연결되어 대응하는 대화의 현재 상태와 관련된 임베딩을 생성할 수 있다.
블록(458)에서, 시스템은 대응하는 대화의 현재 상태에 기초하여 하나 이상의 유사도 특징을 생성한다. 하나 이상의 유사도 특징은 해당 대응하는 대화의 이전 컨텍스트에 포함된 특징 및/또는 대화의 현재 상태와 관련된 특징 사이의 관계를 나타낼 수 있다. 예를 들어, 음성 봇이 트레이닝되고 있는 제3자가 Hypothetical Airlines라는 가상의 항공사 엔티티라고 가정하고, 주어진 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력이 " 나는 오늘 정오에서 내일 정오로 SDF에서 DCA로 항공편을 변경하고 싶습니다.”라는 대응하는 대화의 일부를 포함한다고 가정한다. 이 예에서, 유사도 특징은 원래 시간 및 날짜 특징(예를 들어, "오늘 정오에")과 원하는 시간 및 날짜 특징(예를 들어, "내일 정오에") 사이의 24시간 차이와 관련된 시간적 유사도 특징, 대응하는 상용 고객 번호와 관련된 사용자에 대한 항공편 변경 요청과 관련된 계정 유사도 특징(대응하는 상용 고객 번호가 이전에 제공되었고 대응하는 대화의 이전 컨텍스트에 포함되었다고 가정) 및/또는 기타 유사도 특징을 포함할 수 있다.
블록(460)에서, 시스템은 ML 모델 또는 추가 ML 모델의 복수의 추가 ML 계층을 사용하여, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해 대응하는 대화의 현재 상태 및 하나 이상의 유사도 특징과 관련된 임베딩을 처리한다. 제3자 개발자가 하나 이상의 대응하는 특징 강조 입력을 제공하는 경우와 같은 일부 구현에서, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩은 제3자 개발자에 의해 제공되는 대응하는 특징 강조 입력 중 하나 이상에 기초하여 바이어스될 수 있다.
블록(462)에서, 시스템은 임베딩 공간에서, 예측 응답과 관련된 예측 임베딩과 대응하는 실측 응답과 관련된 실측 임베딩을 비교하여 하나 이상의 손실을 생성한다. 예측 임베딩 및 실측 임베딩은 각각 예측 응답 및 대응하는 실측 응답의 저차원 표현에 해당할 수 있다. 임베딩 공간을 통해 이러한 저차원 임베딩을 비교할 수 있다. 또한, 예측 응답과 관련된 예측 임베딩은 임베딩 공간에서 대응하는 실측 응답과 관련된 실측 임베딩에 근접해야 한다. 즉, 대응하는 대화의 적어도 일부 및 대화의 이전 컨텍스트를 처리함에 있어서, 시스템은 대응하는 대화의 적어도 일부에 대해 실제 응답과 유사한 응답을 예측해야 한다. 예를 들어, 임베딩 공간에서 예측 임베딩과 대응하는 실측 임베딩 사이의 거리 메트릭(예를 들어, 코사인 유사성 거리, 유클리드 거리 및/또는 다른 거리 메트릭)이 결정될 수 있으며, 하나 이상의 손실이 거리 메트릭에 기초하여 생성될 수 있다.
블록(464)에서, 시스템은 주어진 트레이닝 인스턴스에 대한 손실 중 하나 이상에 기초하여 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층을 업데이트한다. 예를 들어, 시스템은 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상에 걸쳐 하나 이상의 손실을 역전파할 수 있다. 또한, 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상을 업데이트함으로써, 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상은, 제3자 개발자가 주어진 트레이닝 인스턴스에 포함된 기능, 예를 들어 하나 이상의 대응하는 특징 기능 강조 입력으로 표시되는 특징에 주목할 수 있다. 결과적으로, 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층은 이러한 특정 특징 및 전체 대화의 맥락에서 이러한 특정 특징이 의미하는 바를 식별하도록 트레이닝된다.
블록(466)에서, 시스템은 음성 봇 트레이닝을 위한 추가 트레이닝 인스턴스가 있는지 여부를 결정한다. 블록(466)의 반복에서 시스템이 음성 봇에 대한 추가 트레이닝 인스턴스가 있다고 결정하면, 시스템은 블록(456)으로 복귀하고 추가 트레이닝 인스턴스에 기초하여 블록(456-464)의 프로세스를 반복할 수 있다. 일부 구현에서, 추가 트레이닝 인스턴스가 이용 가능할 때, 시스템은 하나 이상의 하나 이상의 조건이 만족될 때까지 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층을 계속 업데이트할 수 있다. 하나 이상의 조건은 예를 들어 업데이트되는 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 유효성 검사, 업데이트되는 복수의 추가 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 수렴(예를 들어, 제로 손실 또는 제로 손실의 임계 범위 내), 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층이 현재 이용되고 있는 음성 봇의 인스턴스(있는 경우)보다 (예를 들어, 정밀도 및/또는 리콜과 관련하여) 더 잘 수행한다는 결정, 트레이닝 인스턴스의 최소 임계량에 기반한 트레이닝의 발생, 및/또는 트레이닝 인스턴스에 기초한 트레이닝 기간을 포함할 수 있다. 일부 추가적 또는 대안적 구현에서, 시스템은 음성 봇을 트레이닝하기 위해 획득된 복수의 트레이닝 인스턴스 각각에서 음성 봇이 트레이닝될 때까지 복수의 ML 레이어 또는 복수의 추가 ML 레이어 중 하나 이상을 계속 업데이트할 수 있다. 블록(466)의 반복에서 시스템이 음성 봇에 대한 추가 트레이닝 인스턴스가 없다고 결정하거나 하나 이상의 조건이 충족될 때까지 시스템은 블록(468)으로 진행할 수 있다.
블록(468)에서, 시스템은 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 한다. 예를 들어 트레이닝된 음성 봇을 배치하여 제3자와 관련된 전화 통화에 대해 제3자를 대신하여 대화를 수행할 수 있다. 일부 구현에서 트레이닝된 음성 봇은 제3자를 대신하여 수신 전화에 응답하고 인간(또는 인간과 연결된 추가 음성 봇)과 대응하는 대화에 참여할 수 있다. 추가 또는 대체 구현에서 트레이닝된 음성 봇은 제3자를 대신하여 발신 전화 통화 수행을 시작하고 인간 또는 엔티티(또는 인간과 관련된 추가 음성 봇 또는 인관과 관련된 대화형 음성 응답(IVR) 시스템)와 대응하는 대화에 참여할 수 있다. 또 다른 예로, 드라이브 스루 또는 기타 서비스 시나리오에서 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇을 배치할 수 있다. 특히 트레이닝된 음성 봇의 여러 인스턴스가 제3자에 의해 동시에 배치될 수 있다. 트레이닝된 음성 봇의 여러 인스턴스를 배치하면 여러 수신 전화 통화와 여러 발신 전화 통화의 모든 조합을 동시에 처리할 수 있다.
이제 도 5로 돌아가면, 원격 프로시저 호출(RPC(s))에 적어도 일부분에 기초하여 음성 봇을 트레이닝하는 예시적인 방법(500)을 예시하는 흐름도가 도시한다. 편의상, 이 방법(500)의 동작들은 그 동작을 수행하는 시스템을 참조하여 설명된다. 이 방법(500)의 시스템은 적어도 하나의 프로세서, 적어도 하나의 메모리, 및/또는 컴퓨팅 디바이스(들)(예를 들어, 도 1의 클라이언트 디바이스(110), 도 1의 음성 봇 개발 시스템(120)) 및/또는 도 6의 컴퓨팅 디바이스(610), 서버(들), 및/또는 다른 컴퓨팅 디바이스)의 다른 구성요소(들)을 포함한다. 더욱이, 이 방법(500)의 동작이 특정 순서로 도시되어 있지만, 이것은 제한을 의미하지 않는다. 하나 이상의 동작들은 재정렬, 생략 및/또는 추가될 수 있다.
블록(552)에서, 시스템은 음성 봇을 트레이닝하기 위한 복수의 RPC 트레이닝 인스턴스를 획득하고, 복수의 트레이닝 인스턴스 각각에는 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력이 포함된다. 복수의 RPC 트레이닝 인스턴스는 음성 봇과 관련된 트레이닝 인스턴스의 상위 집합(예를 들어, 도 1의 트레이닝 인스턴스(들) 데이터베이스(161A))중에서 선택될 수 있다. 블록(554)에서, 시스템은 음성 봇을 트레이닝시키기 위해 복수의 RPC 트레이닝 인스턴스 중 주어진 RPC 트레이닝 인스턴스에 대한 RPC 요청 유형을 결정한다.
일부 구현에서, 주어진 RPC 트레이닝 인스턴스에 대한 RPC 요청 유형은 RPC 아웃바운드 요청일 수 있다. 시스템은 RPC 요청의 유형이 주어진 RPC 트레이닝 인스턴스에 대한 트레이닝 인스턴스 출력에 기초하여 RPC 아웃바운드 요청임을 결정할 수 있으며, 이는 서브 블록(552a1)에 표시된 바와 같이 적어도 대응하는 실측(ground truth) RPC 아웃바운드 요청을 포함한다. 블록(554)의 반복에서 시스템이 주어진 트레이닝 인스턴스에 대한 RPC 요청의 유형이 RPC 아웃바운드 요청이라고 결정하면, 시스템은 블록(556A)으로 진행할 수 있다.
블록(556A)에서, 시스템은 ML 모델의 복수의 기계 학습(ML) 계층을 사용하여 주어진 RPC 트레이닝 인스턴스에 대해, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 트레이닝 인스턴스 입력을 처리한다. 트레이닝 인스턴스 입력은 대응하는 대화의 적어도 일부를 포함할 수 있다. 트레이닝 인스턴스 입력은 도 4의 블록(456)과 관련하여 전술한 동일하거나 유사한 방식으로 처리될 수 있다.
블록(558A)에서, 시스템은 ML 모델 또는 추가 ML 모델의 복수의 추가 ML 계층을 사용하여, 트레이닝 인스턴스 입력에 포함된 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임배딩을 생성하기 위해 임베딩 및 하나 이상의 유사도 특징을 처리한다. 시스템은 도 4의 블록 458과 관련하여 전술한 동일하거나 유사한 방식으로 하나 이상의 유사도 특징을 생성할 수 있다. 또한, 시스템은 도 4의 블록(460)과 관련하여 위에서 설명한 것과 동일하거나 유사한 방식으로 복수의 추가 ML 계층을 이용하는 하나 이상의 유사도 특징 및 대응하는 대화의 현재 상태와 관련된 임베딩을 처리할 수 있다.
블록(560A)에서, 시스템은 임베딩 공간에서, 예측 임베딩과 상기 대응하는 실측 RPC 아웃바운드 요청과 관련된 실측 임베딩을 비교하여 하나 이상의 손실을 생성한다. 시스템은 도 4의 블록(462)과 관련하여 전술한 동일하거나 유사한 방식으로 하나 이상의 손실을 생성하기 위해 예측 임베딩과 실측 임베딩을 비교할 수 있다. 특히, 실측 임베딩은 RPC 아웃바운드 요청과 관련된다(도 4와 관련하여 위에서 설명된 대응하는 대화의 적어도 일부에 대한 실측 응답과 반대임). 주어진 RPC 트레이닝 인스턴스에 대한 RPC 아웃바운드 요청은 특정 제3자 시스템(예를 들어, 제3자 예약 시스템, 제3자 인벤토리 시스템 및/또는 기타 특정 제3자 시스템)과 연관될 수 있다. 그 결과, 이러한 특정 제3자 시스템 각각과 관련된 RPC 아웃바운드 요청은 임베딩 공간의 각 부분과 연관될 수 있다. 예를 들어 해당 RPC 아웃바운드 요청이 제3자 예약 시스템과 연결되어 있다고 가정한다. 이 예에서, 실측 임베딩은 예를 들어, 제3자 인벤토리 시스템과 연결된 임베딩과 달리 제3자 예약 시스템과 연결될 수 있다. 시스템은 블록(562)으로 진행한다. 블록(562)은 아래에서 설명된다.
다른 구현에서, 주어진 RPC 트레이닝 인스턴스에 대한 RPC 요청의 유형은 RPC 인바운드 요청일 수 있다. 시스템은 RPC 요청의 유형이 주어진 RPC 트레이닝 인스턴스에 대한 트레이닝 인스턴스 입력에 기초하여 RPC 인바운드 요청임을 결정할 수 있으며, 이는 서브 블록(552a2)에 표시된 바와 같이 적어도 대응하는 RPC 인바운드 요청을 포함한다. 블록(554)의 반복에서, 시스템이 주어진 트레이닝 인스턴스에 대한 RPC 요청의 유형이 RPC 인바운드 요청이라고 결정하면, 시스템은 블록(556B)으로 진행할 수 있다.
블록(556B)에서, 시스템은 ML 모델의 복수의 ML 계층을 사용하여, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 적어도 대응하는 RPC 인바운드 요청을 처리한다. 트레이닝 인스턴스 입력은 대응하는 대화의 적어도 일부를 추가로 포함할 수 있다. 트레이닝 인스턴스 입력은 도 4의 블록(456)과 관련하여 전술한 동일하거나 유사한 방식으로 처리될 수 있다. 특히, 트레이닝 인스턴스 입력은 RPC 인바운드 요청을 포함한다(단순히 도 4와 관련하여 위에서 설명된 대응하는 대화의 적어도 일부와 반대됨). 주어진 RPC 트레이닝 인스턴스에 대한 RPC 인바운드 요청은 특정 제3자 시스템(예컨대, 제3자 예약 시스템, 제3자 인벤토리 시스템 및/또는 기타 특정 제3자 시스템)과 연관될 수 있다. 그 결과, RPC 인바운드 요청은 대화에서 전달될 구조화된 정보일 수 있고, 블록(560A)과 관련하여 전술한 대응하는 RPC 아웃바운드 요청으로 수신된다.
블록(558B)에서, 시스템은 모델의 복수의 추가 ML 계층 또는 추가 ML 모델을 사용하여, 적어도 RPC 인바운드 요청에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해 임베딩 및 하나 이상의 유사도 특징을 처리한다. 시스템은 도 4의 블록(458)과 관련하여 전술한 동일하거나 유사한 방식으로 하나 이상의 유사도 특징을 생성할 수 있다. 또한, 시스템은 도 4의 블록(460)과 관련하여 위에서 설명한 것과 동일하거나 유사한 방식으로 복수의 추가 ML 계층을 이용하는 하나 이상의 유사도 특징 및 대응하는 대화의 현재 상태와 관련된 임베딩을 처리할 수 있다.
블록(560B)에서, 시스템은 임베딩 공간에서, 트레이닝 인스턴스 출력과 관련된 예측 임베딩 및 실측 임베딩을 비교하여 하나 이상의 손실을 생성한다. 트레이닝 인스턴스 출력에는 RPC 인바운드 요청에 대한 대응하는 실측 응답이 포함될 수 있다. 시스템은 도 4의 블록(462)과 관련하여 전술한 동일하거나 유사한 방식으로 하나 이상의 손실을 생성하기 위해 예측 임베딩과 실측 임베딩을 비교할 수 있다. 시스템은 블록(562)으로 진행한다.
블록(562)에서, 시스템은 블록(560A 또는 560B)에서 생성된 손실 중 하나 이상에 기초하여 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상을 업데이트한다. 시스템은 도 4의 블록(464)과 관련하여 전술한 동일하거나 유사한 방식으로 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층을 업데이트할 수 있다.
블록(564)에서, 시스템은 음성 봇 트레이닝을 위한 추가 RPC 트레이닝 인스턴스가 있는지 여부를 결정한다. 블록(564)의 반복에서 시스템이 음성 봇에 대한 추가 RPC 트레이닝 인스턴스가 있다고 결정하면, 시스템은 추가 RPC 트레이닝 인스턴스에 기초하여 블록(554)을 반환하고 블록(554-562)의 프로세스를 반복할 수 있다. 일부 구현에서 추가 RPC 트레이닝 인스턴스를 이용가능 할 때, 시스템은 하나 이상의 조건이 만족될 때까지 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층의 업데이트를 계속할 수 있다. 하나 이상의 조건은 예를 들어, 업데이트되는 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 유효성 검사, 업데이트되는 복수의 추가 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 수렴(예를 들어, 제로 손실 또는 제로 손실의 임계 범위 내), 복수의 ML 계층 중 하나 이상 또는 복수의 추가 ML 계층이 현재 이용되고 있는 음성 봇의 인스턴스(있는 경우)보다 (예를 들어, 정밀도 및/또는 리콜과 관련하여) 더 잘 수행한다는 결정, 트레이닝 인스턴스의 최소 임계량에 기반한 트레이닝의 발생, 및/또는 트레이닝 인스턴스에 기초한 트레이닝 기간을 포함할 수 있다. 일부 추가 또는 대안적인 구현에서, 시스템은 음성 봇을 트레이닝하기 위해 획득된 복수의 RPC 트레이닝 인스턴스 각각에 대해 음성 봇이 트레이닝될 때까지 복수의 ML 레이어 또는 복수의 추가 ML 레이어 중 하나 이상을 계속 업데이트할 수 있다. 블록(564)의 반복에서 시스템이 음성 봇에 대한 추가 트레이닝 인스턴스가 없다고 결정하거나 하나 이상의 조건이 충족될 때까지 시스템은 블록(556)으로 진행할 수 있다.
블록(566)에서 시스템은 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 한다. 예를 들어 트레이닝된 음성 봇을 배치하여 제3자와 관련된 전화 통화에 대해 제3자를 대신하여 대화를 수행할 수 있다. 일부 구현에서 트레이닝된 음성 봇은 제3자를 대신하여 수신 전화에 응답하고 인간(또는 인간과 연결된 추가 음성 봇)과 대응하는 대화에 참여할 수 있다. 추가 또는 대안적인 구현에서 트레이닝된 음성 봇은 제3자를 대신하여 발신 전화 통화 수행을 시작하고 인간 또는 엔티티(또는 인간과 관련된 추가 음성 봇 또는 인간과 관련된 대화형 음성 응답(IVR) 시스템)와 대응하는 대화에 참여할 수 있다. 또 다른 예로, 드라이브 스루 또는 기타 서비스 시나리오에서 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇을 배치할 수 있다. 특히 트레이닝된 음성 봇의 여러 인스턴스가 제3자에 의해 동시에 배치될 수 있다. 트레이닝된 음성 봇의 여러 인스턴스를 배치하면, 여러 수신 전화 통화와 여러 발신 전화 통화의 모든 조합을 동시에 처리할 수 있다.
비록 도 5는 복수의 RPC 트레이닝 인스턴스에 대해서만 본 명세서에서 설명되지만, 이는 예시를 위한 것이며 제한하려는 의도가 아님을 이해해야 한다. 예를 들어, 복수의 RPC 트레이닝 인스턴스는 도 4에 설명된 것과 같이 제3자를 위해 음성 봇을 트레이닝하는 데 사용되는 복수의 추가 non-RPC 트레이닝 인스턴스와 혼합될 수 있다. 또한, 복수의 RPC 트레이닝 인스턴스 중 하나 이상은 또한 대응하는 특징 강조 입력(들)과 연관될 수 있다(예를 들어, 도 1, 2a, 3b 및 4와 관련하여 설명됨).
도 6은 본 명세서에 기술된 기술의 하나 이상의 양태를 수행하기 위해 선택적으로 이용될 수 있는 예시적인 컴퓨팅 디바이스(610)의 블록도이다. 일부 구현에서, 클라이언트 디바이스, 클라우드 기반 자동 어시스턴트 구성요소(들) 및/또는 다른 구성요소(들) 중 하나 이상은 예시적인 컴퓨팅 디바이스(610)의 하나 이상의 구성요소를 포함할 수 있다.
컴퓨팅 디바이스(610)는 일반적으로 버스 서브시스템(612)을 통해 다수의 주변 디바이스와 통신하는 적어도 하나의 프로세서(614)를 포함한다. 이러한 주변 디바이스는 예를 들어, 메모리 서브시스템(625) 및 파일 저장 서브시스템(626)을 포함하는 저장 서브시스템(624), 사용자 인터페이스 출력 디바이스(620), 사용자 인터페이스 입력 디바이스(622) 및 네트워크 인터페이스 서브시스템(616)을 포함할 수 있다. 입력 및 출력 디바이스는 사용자가 컴퓨팅 디바이스(610)와 상호 작용할 수 있도록 한다. 네트워크 인터페이스 서브시스템(616)은 외부 네트워크에 대한 인터페이스를 제공하고 다른 컴퓨팅 디바이스의 대응하는 인터페이스 디바이스에 결합된다.
사용자 인터페이스 입력 디바이스(622)는 키보드, 마우스, 트랙볼, 터치패드 또는 그래픽 태블릿과 같은 포인팅 디바이스, 스캐너, 디스플레이에 통합된 터치스크린, 음성 인식 시스템과 같은 오디오 입력 디바이스, 마이크 및/또는 기타 유형의 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 정보를 컴퓨팅 디바이스(610) 또는 통신 네트워크에 입력하기 위한 모든 가능한 유형의 디바이스 및 방법을 포함하도록 의도된다.
사용자 인터페이스 출력 디바이스(620)는 디스플레이 서브시스템, 프린터, 팩스 또는 오디오 출력 디바이스와 같은 비시각적 디스플레이를 포함할 수 있다. 디스플레이 서브시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평면 패널 디바이스, 프로젝션 디바이스 또는 시각적 이미지를 생성하기 위한 기타 메커니즘을 포함할 수 있다. 디스플레이 서브시스템은 오디오 출력 디바이스와 같은 비시각적 디스플레이를 제공할 수도 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(610)로부터 사용자 또는 다른 머신 또는 컴퓨팅 디바이스로 정보를 출력하기 위한 모든 가능한 유형의 디바이스 및 방법을 포함하도록 의도된다.
저장 서브시스템(624)은 본 명세서에 기술된 일부 또는 모든 모듈의 기능을 제공하는 프로그래밍 및 데이터 구성을 저장한다. 예를 들어, 저장 서브시스템(624)은 본 명세서에 개시된 방법의 선택된 양태를 수행할 뿐만 아니라 도 1에 도시된 다양한 구성요소를 구현하기 위한 로직을 포함할 수 있다.
이들 소프트웨어 모듈은 일반적으로 프로세서(614) 단독으로 또는 다른 프로세서와 결합하여 실행된다. 저장 서브시스템(624)에서 사용되는 메모리(625)는 프로그램 실행 동안 명령 및 데이터 저장을 위한 주 RAM(random-access memory)(630) 및 고정 명령이 저장되는 ROM(read only memory)(632)을 포함하는 다수의 메모리를 포함할 수 있다. 파일 저장 서브시스템(626)은 프로그램 및 데이터 파일을 위한 영구 저장 장치를 제공할 수 있고, 하드 디스크 드라이브, 관련 이동식 매체와 함께 플로피 디스크 드라이브, CD-ROM 드라이브, 광학 드라이브 또는 이동식 매체 카트리지를 포함할 수 있다. 특정 구현의 기능을 구현하는 모듈은 파일 저장 서브시스템(626)에 의해 저장 서브 시스템(624) 또는 프로세서(들)(614)에 의해 액세스 가능한 다른 기계에 저장될 수 있다.
버스 서브시스템(612)은 컴퓨팅 디바이스(610)의 다양한 컴포넌트 및 서브시스템이 의도한 대로 서로 통신하게 하는 메커니즘을 제공한다. 버스 서브시스템(612)이 개략적으로 단일 버스로 도시되어 있지만, 버스 서브시스템(612)의 대안적인 구현은 다중 버스를 사용할 수 있다.
컴퓨팅 디바이스(610)는 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜 또는 임의의 다른 데이터 처리 시스템 또는 컴퓨팅 디바이스를 포함하는 다양한 유형일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 6에 도시된 컴퓨팅 디바이스(610)에 대한 설명은 일부 구현을 설명하기 위한 목적을 위한 구체적인 예일 뿐입니다. 컴퓨팅 디바이스(610)의 많은 다른 구성은 도 6에 도시된 컴퓨팅 디바이스보다 더 많거나 더 적은 구성요소를 갖는 것이 가능하다.
본 명세서에 설명된 시스템이 사용자에 대한 개인 정보를 수집 또는 모니터링하거나 개인 및/또는 모니터링된 정보를 사용할 수 있는 상황에서, 사용자는 프로그램 또는 기능이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 활동 또는 활동, 직업, 사용자의 유사도 또는 사용자의 현재 지리적 위치에 대한 정보)를 수집하는지 여부를 제어하거나 사용자에게 더 관련이 있을 수 있는 컨텐츠 서버로부터 컨텐츠를 수신할지 여부 및/또는 방법을 제어할 수 있는 기회를 제공받을 수 있다. 또한 특정 데이터는 저장되거나 사용되기 전에 하나 이상의 방식으로 처리되어 개인 식별 정보가 제거될 수 있다. 예를 들어, 사용자에 대한 개인 식별 정보를 확인할 수 없도록 사용자의 신원을 처리하거나, 지리적 위치 정보를 얻은 경우 사용자의 지리적 위치를 일반화하여(예를 들어, 도시, 우편 번호 또는 주 수준) 사용자의 특정 지리적 위치를 확인할 수 없도록 할 수 있다. 따라서 사용자는 사용자에 대한 정보 수집 및/또는 사용 방법을 제어할 수 있다.
일부 구현에서, 하나 이상의 프로세서에 의해 구현되는 방법이 제공되고, 음성 봇 개발 플랫폼을 통해 복수의 트레이닝 인스턴스를 획득하는 것을 포함한다. 복수의 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함한다. 트레이닝 인스턴스 입력은 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 포함하고, 트레이닝 인스턴스 출력은 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답을 포함한다. 이 방법은 추가로 음성 봇 개발 플랫폼을 통해 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 획득하는 단계, 및 음성 봇 개발 플랫폼을 통해 복수의 트레이닝 인스턴스 및 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력에 기초하여 음성 봇을 트레이닝 하는 단계를 포함한다. 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력은 음성 봇이 대응하는 대화 부분의 특정 기능에 주목하도록 한다. 이 방법은 음성 봇을 트레이닝시킨 후, 트레이닝된 음성 봇이 제3자를 대신하여 대화를 수행하기 위해 배치되게 하는 단계를 더 포함한다.
본 명세서에 개시된 기술의 이들 및 다른 구현은 선택적으로 다음 특징 중 하나 이상을 포함할 수 있다.
일부 구현에서, 음성 봇을 트레이닝시키는 것은 ML 모델의 복수의 기계 학습(ML) 계층을 사용하여, 복수의 트레이닝 인스턴스의 주어진 트레이닝 인스턴스에 대해, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 것을 포함할 수 있다.
그러한 구현의 일부 버전에서, 대응하는 대화의 일부는 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 포함할 수 있다. 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 것은 복수의 ML 계층의 제1 ML 계층을 사용하여, 제1 임베딩을 생성하기 위해 복수의 음성 가설을 처리하는 단계, 복수의 ML 계층의 제2 ML 계층을 사용하여 대응하는 대화의 이전 컨텍스트를 처리하여 제2 임베딩을 생성하는 단계, 및 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 제1 임베딩 및 제2 임베딩을 연결하는 단계를 포함할 수 있다.
이러한 구현의 일부 추가 버전에서, 상기 방법은 음성 봇 개발 플랫폼을 통해 대응하는 대화의 현재 상태와 관련된 임베딩에 기초하여 복수의 유사도 특징을 생성하는 단계를 더 포함할 수 있다. 이러한 구현의 또 다른 버전에서, 음성 봇을 트레이닝하는 것은, ML 모델 또는 추가 ML 모델의 복수의 추가 ML 계층을 사용하여, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해 대응하는 대화의 현재 상태와 관련된 임베딩 및 복수의 유사도 특징을 처리하는 것을 더 포함할 수 있다. 이러한 구현의 추가 버전에서는, 음성 봇을 트레이닝하는 것은, 임베딩 공간에서, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩과 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답과 관련된 대응하는 실측 임베딩을 비교하고, 예측 임베딩과 대응하는 실측 임베딩을 비교하여 하나 이상의 손실을 생성하고, 주어진 트레이닝 인스턴스와 관련된 하나 이상의 손실 및 대응하는 특징 강조 입력에 기초하여 ML 모델을 업데이트 하는 것이 더 포함될 수 있다. 이러한 구현의 또 다른 버전에서, ML 모델은 하나 이상의 어텐션 메커니즘을 포함하는 변환기 모델일 수 있고, 주어진 트레이닝 인스턴스와 관련된 하나 이상의 손실 및 대응하는 특징 강조 입력에 기초하여 변환기 모델을 업데이트하는 것은, 하나 이상의 손실에 기초하여 복수의 ML 계층 또는 복수의 추가적인 ML 계층 중 하나 이상의 가중치가 업데이트되게 하고, 변환기 모델의 하나 이상의 어텐션 메커니즘이 주어진 트레이닝 인스턴스와 관련된 대응하는 특징 강조 입력에 기초하여 대응하는 대화의 적어도 일부의 하나 이상의 특징에 주목하도록 하는 단계를 포함할 수 있다.
이러한 구현의 일부 추가 또는 대안 추가 버전에서, 대응하는 대화의 일부는 대응하는 대화의 적어도 일부를 캡처하는 음성 발언에 대응하는 오디오 데이터를 포함할 수 있다. 복수의 음성 가설은 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 생성하기 위해 음성 발언에 대응하는 오디오 데이터를 자동 음성 인식(ASR) 모델을 사용하여 처리하는 것에 기초하여 생성될 수 있다. 그러한 구현의 또 다른 버전에서, 이 방법은 복수의 음성 가설 각각과 관련된 하나 이상의 해당 텍스트 세그먼트를 정렬하고, 복수의 주석이 달린 음성 가설을 생성하기 위해 하나 이상의 대응하는 텍스트 세그먼트 각각에 적어도 하나의 대응하는 레이블로 주석을 다는 단계를 더 포함할 수 있다. 복수의 ML 계층의 제1 ML 계층을 사용하여 제1 임베딩을 생성하기 위해 복수의 음성 가설을 처리하는 것은 제1 임베딩을 생성하기 위해 복수의 주석이 달린 음성 가설을 처리하는 것을 포함할 수 있다.
그러한 구현의 일부 추가적인 또는 대안적인 추가 버전에서, 대응하는 대화의 이전 컨텍스트는 대응하는 대화의 적어도 하나 이상의 이전 부분을 포함할 수 있다. 대응하는 대화의 하나 이상의 이전 부분은, 대응하는 대화에서 적어도 대응하는 대화의 일부 이전에 발생한다.
일부 구현에서는 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 얻는 단계는 제3자와 관련된 한 명 이상의 인간으로부터 자연어 입력을 수신하는 단계, 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 얻기 위해 자연 언어 입력을 처리하는 단계를 포함한다. 자연어 입력은 자유 형식의 음성 입력 또는 자유 형식의 타이핑 입력 중 하나 이상일 수 있다.
일부 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 트레이닝 인스턴스 모음으로부터 획득될 수 있다. 트레이닝 인스턴스 모음은 다수의 인간 사이의 다수의 이전 대화를 포함할 수 있다. 일부 추가적인 또는 대안적인 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 하나 이상의 인간 사이의 대응하는 예시적 대화로부터 획득될 수 있다. 인간 중 하나 이상은 제3자와 연관될 수 있다. 일부 추가적 또는 대안적 구현에서, 복수의 트레이닝 인스턴스 중 하나 이상은 음성 봇 개발을 통해 수신된 음성 발언로부터 획득될 수 있다. 음성 발언은 제3자와 관련된 한 명 이상의 인간으로부터 수신될 수 있다.
일부 구현에서, 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 것은 트레이닝된 음성 봇이 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 배치되는 것을 포함할 수 있고, 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 것은 음성 봇이 대응하는 수신 전화에 응답하고 각 클라이언트 디바이스를 통해 대응하는 수신 전화를 시작한 대응하는 인간과 대화를 수행하도록 하는 것을 포함할 수 있다. 이러한 구현의 일부 버전에서 이 방법은 수신 전화를 종료한 후, 대응하는 수신 전화 중에 수행된 대화의 대응하는 대화 요약을 생성하고 대화의 대응하는 대화 요약이 음성 봇 개발 플랫폼을 통해 렌더링되게 하는 것을 더 포함할 수 있다.
일부 구현에서, 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 것은, 트레이닝된 음성 봇이 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 배치되도록 하는 것을 포함할 수 있고, 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 것은, 음성 봇이 대응하는 발신 전화 통화를 시작하고 각 클라이언트 디바이스를 통해 대응하는 발신 전화에 응답한 대응하는 인간과 대화를 수행하도록 하는 것을 포함할 수 있다. 이러한 구현의 일부 버전에서, 이 방법은 발신 전화 통화를 종료한 후, 대응하는 발신 전화 통화 동안 수행된 대화의 대응하는 대화 요약을 생성하고 대화의 대응하는 대화 요약이 음성 봇 개발 플랫폼을 통해 렌더링되게 하는 것을 더 포함할 수 있다.
일부 구현에서, 음성 봇 개발 플랫폼은 음성 봇을 배치하는 제3자와 구별되는 제1자(당사자)에 의해 제공된다.
일부 구현에서, 하나 이상의 프로세서에 의해 구현되는 방법이 제공되며, 음성 봇 개발 플랫폼을 통해 복수의 원격 프로시저 호출(RPC) 트레이닝 인스턴스를 얻는 것을 포함한다. 복수의 RPC 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함한다. 트레이닝 인스턴스 입력은 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 포함하고, 트레이닝 인스턴스 출력은 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답을 포함한다. 이 방법은 음성 봇 개발 플랫폼을 통해 적어도 복수의 RPC 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝시키는 단계를 더 포함한다. 복수의 RPC 트레이닝 인스턴스에 기초하여 음성 봇을 학습하면 음성 봇이 제3자 시스템과 상호 작용하게 된다. 이 방법은 음성 봇을 트레이닝시킨 후 트레이닝된 음성 봇이 제3자를 대신하여 대화를 수행하기 위해 배치되게 하는 단계를 더 포함한다.
본 명세서에 개시된 기술의 이들 및 다른 구현은 선택적으로 다음 특징 중 하나 이상을 포함할 수 있다.
일부 구현에서, 복수의 RPC 트레이닝 인스턴스 중 주어진 RPC 트레이닝 인스턴스에 대한 대응하는 실측 응답은 적어도 대응하는 RPC 아웃바운드 요청을 포함할 수 있다. 음성 봇을 트레이닝시키는 것은 ML 모델의 복수의 기계 학습(ML) 계층을 사용하여 처리하는 것을 포함할 수 있으며, 주어진 트레이닝 인스턴스에 대해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트는 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하도록 한다.
이러한 구현의 일부 버전에서, 대응하는 대화의 일부는 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 포함할 수 있다. 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 것은, 복수의 ML 계층의 제1 ML 계층을 사용하여 제1 임베딩을 생성하기 위해 복수의 음성 가설을 처리하는 단계, 복수의 ML 계층의 제2 ML 계층을 사용하여 대응하는 대화의 이전 컨텍스트를 처리하여 제2 임베딩을 생성하는 단계, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 제1 임베딩 및 제2 임베딩을 연결하는 단계를 포함할 수 있다.
이러한 구현의 일부 추가 버전에서, 이 방법은 음성 봇 개발 플랫폼을 통해 대응하는 대화의 현재 상태와 관련된 임베딩에 기초하여 복수의 유사도 특징을 생성하는 단계를 더 포함할 수 있다.
이러한 구현의 추가 버전에서, 음성 봇을 트레이닝하는 것은 ML 모델 또는 추가 ML 모델의 복수의 추가 ML 계층을 사용하여, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위하여 대응하는 대화의 현재 상태와 관련된 복수의 유사도 특징 및 임베딩을 처리하는 것을 더 포함할 수 있다.
이러한 구현의 추가 버전에서, 음성 봇을 트레이닝하는 것은 임베딩 공간에서 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩 및 대응하는 RPC 아웃바운드 요청과 관련된 대응하는 실측 임베딩을 비교하고, 예측 임베딩과 대응하는 실측 임베딩을 비교하여 하나 이상의 손실을 생성하고, 하나 이상의 손실에 기초하여 ML 모델을 업데이트하는 것이 더 포함될 수 있다.
일부 구현에서, 복수의 RPC 트레이닝 인스턴스 중 주어진 RPC 트레이닝 인스턴스에 대한 대응하는 대화의 적어도 일부는, 적어도 대응하는 RPC 인바운드 요청을 포함할 수 있다. 음성 봇을 트레이닝시키는 것은, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위하여 ML 모델의 복수의 기계 학습(ML) 계층을 사용하여, 주어진 트레이닝 인스턴스에 대해 적어도 대응하는 RPC 인바운드 요청 및 대응하는 대화의 이전 컨텍스트를 처리하는 것을 포함할 수 있다.
이러한 구현의 일부 버전에서, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 것은, 복수의 ML 계층의 제1 ML 계층을 사용하여 적어도 RPC 인바운드 요청을 처리하여 제1 임베딩을 생성하고, 복수의 ML 계층의 제2 ML 계층을 사용하여 대응하는 대화의 이전 컨텍스트를 처리하여 제2 임베딩을 생성하고, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해 제1 임베딩 및 제2 임베딩을 연결하는 단계를 포함할 수 있다.
이러한 구현의 일부 추가 버전에서, 음성 봇을 트레이닝하는 것은, 임베딩 공간에서 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩과 대응하는 실측 응답과 관련된 대응하는 실측 임베딩을 비교하고, 예측 임베딩과 대응하는 실측 임베딩을 비교하여 하나 이상의 손실을 생성하고, 하나 이상의 손실에 기초하여 ML 모델을 업데이트하는 것이 포함될 수 있다.
일부 구현에서 음성 봇을 배치하는 제3자는 제3자 시스템과 관련된 추가적인 제3자와 구별된다.
일부 구현에서, 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 것은 트레이닝된 음성 봇이 제3자와 관련된 전화 통화를 위해 대화를 수행하기 위해 배치되도록 하는 것을 포함할 수 있고, 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 것은 음성 봇이 대응하는 수신 전화에 응답하고 각 클라이언트 디바이스를 통해 대응하는 수신 전화를 시작한 대응하는 사람과 대화를 수행하도록 하는 것을 포함할 수 있다. 음성 봇은 대응하는 인간과 대화하는 동안 대응하는 RPC를 통해 제3자 시스템과 상호 작용할 수 있다. 이러한 구현의 일부 버전에서, 이 방법은 수신 전화 통화를 종료한 후, 대응하는 수신 전화 통화 동안 수행된 대화의 대응하는 대화 요약을 생성하는 단계, 대화의 대응하는 대화 요약이 음성 봇 개발 플랫폼을 통해 렌더링되게 하는 단계를 더 포함할 수 있다. 대응하는 대화 요약 중 하나 이상은 대응하는 수신 전화 통화 동안 수신된 대응하는 사람의 대응하는 음성 발언에 기초하여 대응하는 RPC가 발생했다는 표시를 포함할 수 있다.
일부 구현에서, 음성 봇 개발 플랫폼이 제공되며, 적어도 하나의 프로세서, 적어도 하나의 메모리, 복수의 트레이닝 인스턴스를 포함하는 적어도 하나의 데이터베이스 및 제3자와 관련된 제3자 개발자가 음성 봇 개발 플랫폼과 상호 작용하여 다음을 수행할 수 있도록 하는 적어도 하나의 사용자 인터페이스를 포함한다: 복수의 트레이닝 인스턴스를 획득하고, 음성 봇에 대한 복수의 대응하는 행동을 생성하기 위해 복수의 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝하고, 그리고 음성 봇을 트레이닝한 후, 제3자 개발자가 음성 봇에 대한 새로운 행동, 복수의 대응하는 행동을 추가하기 위해 적어도 하나의 데이터베이스에 저장된 추가 트레이닝 인스턴스를 추가할 수 있게 하고, 제3자 개발자가 적어도 하나의 데이터베이스에 저장된 기존 트레이닝 인스턴스를 수정하여 음성 봇의 복수의 대응하는 행동 중 기존 행동을 수정할 수 있게 한다. 복수의 트레이닝 인스턴스 각각은 트레이닝 인스턴스 입력 및 트레이닝 인스턴스 출력을 포함한다. 트레이닝 인스턴스 입력은 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 포함하고, 트레이닝 인스턴스 출력은 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답을 포함한다.
또한, 일부 구현은 하나 이상의 컴퓨팅 디바이스의 하나 이상의 프로세서(예를 들어, 중앙 처리 장치(CPU(s)), 그래픽 처리 장치(GPU(들)) 및/또는 텐서 처리 장치(TPU(들))를 포함하고, 여기서 하나 이상의 프로세서는 관련 메모리에 저장된 명령을 실행하도록 작동 가능하고, 여기서 명령은 전술한 방법 중 임의의 방법을 수행하도록 구성된다. 일부 구현은 또한 전술한 방법 중 임의의 것을 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 컴퓨터 명령어를 저장하는 하나 이상의 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 구현은 또한 전술한 방법 중 임의의 것을 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램 제품을 포함한다.
전술한 개념 및 본 명세서에 더 상세히 설명된 추가 개념의 모든 조합은 본 명세서에 개시된 주제의 일부인 것으로 고려된다는 것을 이해해야 한다. 예를 들어, 본 개시의 말미에 나타나는 청구된 주제의 모든 조합은 본 명세서에 개시된 주제의 일부인 것으로 간주된다.

Claims (32)

  1. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    음성 봇 개발 플랫폼을 통해, 복수의 트레이닝 인스턴스를 획득하는 단계와, 상기 복수의 트레이닝 인스턴스 각각은,
    대응하는 대화의 적어도 일부 및 그 대응하는 대화의 이전 컨텍스트를 포함하는 트레이닝 인스턴스 입력과,
    대응하는 대화의 적어도 일부에 대한 대응하는 실측(ground truth) 응답을 포함하는 트레이닝 인스턴스 출력을 포함하고,
    음성 봇 개발 플랫폼을 통해, 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 획득하는 단계와;
    음성 봇 개발 플랫폼을 통해, 복수의 트레이닝 인스턴스 및 그 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력에 기초하여 음성 봇을 트레이닝하는 단계와, 상기 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력은 음성 봇이 대응하는 대화 부분의 특정 특징에 주목하도록 하며; 그리고
    음성 봇을 트레이닝하는 것에 후속하여, 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 음성 봇을 트레이닝하는 단계는,
    대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위하여, ML 모델의 복수의 기계 학습(ML) 계층을 사용하여, 복수의 트레이닝 인스턴스의 주어진 트레이닝 인스턴스에 대해, 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  3. 제2항에 있어서,
    상기 대응하는 대화의 일부는 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 포함하고,
    상기 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해, 대응하는 대화의 적어도 일부 및 그 대응하는 대화의 이전 컨텍스트를 처리하는 단계는,
    복수의 ML 계층의 제1 ML 계층을 사용하여, 제1 임베딩을 생성하기 위해 복수의 음성 가설을 처리하는 단계와;
    복수의 ML 계층의 제2 ML 계층을 사용하여, 제2 임베딩을 생성하기 위해 대응하는 대화의 이전 컨텍스트를 처리하는 단계와; 그리고
    제1 임베딩과 제2 임베딩을 연결(concatenate)하여, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  4. 제3항에 있어서,
    음성 봇 개발 플랫폼을 통해, 대응하는 대화의 현재 상태와 관련된 임베딩에 기초하여 복수의 유사도(affinity) 특징을 생성하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 음성 봇을 트레이닝하는 단계는,
    ML 모델 또는 추가 ML 모델의 복수의 추가 ML 계층을 사용하여, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해, 대응하는 대화의 현재 상태와 관련된 임베딩 및 복수의 유사도 특징을 처리하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  6. 제5항에 있어서,
    상기 음성 봇을 트레이닝하는 단계는,
    임베딩 공간에서, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩 및 대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답과 관련된 실측 임베딩을 비교하는 단계와;
    예측 임베딩 및 대응하는 실측 임베딩의 비교에 기초하여, 하나 이상의 손실을 생성하는 단계와; 그리고
    하나 이상의 손실 및 주어진 트레이닝 인스턴스와 관련된 대응하는 특징 강조 입력에 기초하여 ML 모델을 업데이트하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  7. 제6항에 있어서,
    상기 ML 모델은 하나 이상의 어텐션 메커니즘을 포함하는 변환기 모델이고,
    상기 하나 이상의 손실 및 주어진 트레이닝 인스턴스와 관련된 대응하는 특징 강조 입력에 기초하여 변환기 모델을 업데이트하는 단계는,
    하나 이상의 손실에 기초하여 복수의 ML 계층 또는 복수의 추가 ML 계층 중 하나 이상의 가중치가 업데이트되게 하는 단계와; 그리고
    변환기 모델의 하나 이상의 어텐션 메커니즘이 주어진 트레이닝 인스턴스와 관련된 대응하는 특징 강조 입력에 기초하여 상기 대응하는 대화의 적어도 일부의 하나 이상의 특징에 주목하게 하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  8. 제3항에 있어서,
    상기 대응하는 대화의 일부는 그 대응하는 대화의 적어도 일부를 캡처한 음성 발언에 대응하는 오디오 데이터를 더 포함하고,
    상기 복수의 음성 가설은 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 생성하기 위해 자동 음성 인식(ASR) 모델을 사용하여 음성 발언에 대응하는 오디오 데이터를 처리하는 것에 기초하여 생성되는, 하나 이상의 프로세서에 의해 구현되는 방법.
  9. 제8항에 있어서,
    복수의 음성 가설 각각과 관련된 하나 이상의 대응하는 텍스트 세그먼트를 정렬하는 단계와; 그리고
    복수의 주석이 달린 음성 가설을 생성하기 위해 하나 이상의 대응하는 텍스트 세그먼트 각각에 적어도 하나의 대응하는 레이블로 주석을 다는 단계를 더 포함하고,
    상기 복수의 ML 계층의 제1 ML 계층을 사용하여, 제1 임베딩을 생성하기 위해 복수의 음성 가설을 처리하는 단계는,
    복수의 주석이 달린 음성 가설을 처리하여 제1 임베딩을 생성하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  10. 제3항에 있어서,
    상기 대응하는 대화의 이전 컨텍스트는 대응하는 대화의 적어도 하나 이상의 이전 부분을 포함하고,
    상기 대응하는 대화의 하나 이상의 이전 부분은 대응하는 대화에서, 대응하는 대화의 적어도 일부 이전에 발생하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  11. 임의의 선행하는 항에 있어서,
    상기 복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 획득하는 단계는,
    제3자와 관련된 하나 이상의 인간으로부터 자연어 입력을 수신하는 단계와, 상기 자연어 입력은 자유 형식의 음성 입력 또는 자유 형식의 타이핑 입력 중 하나 이상이고; 그리고
    복수의 트레이닝 인스턴스 중 하나 이상과 관련된 대응하는 특징 강조 입력을 획득하기 위해 자연어 입력을 처리하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  12. 임의의 선행하는 항에 있어서,
    상기 복수의 트레이닝 인스턴스 중 하나 이상은 트레이닝 인스턴스 모음(corpus)으로부터 획득되고,
    상기 트레이닝 인스턴스 모음은 다수의 인간 사이의 복수의 이전 대화를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  13. 임의의 선행하는 항에 있어서,
    상기 복수의 트레이닝 인스턴스 중 하나 이상은 하나 이상의 인간 사이의 대응하는 예시적 대화로부터 획득되고, 상기 하나 이상의 인간은 제3자와 연관되는, 하나 이상의 프로세서에 의해 구현되는 방법.
  14. 임의의 선행하는 항에 있어서,
    상기 복수의 트레이닝 인스턴스 중 하나 이상은 음성 봇 개발을 통해 수신된 음성 발언로부터 획득되고,
    상기 음성 발언은 제3자와 관련된 하나 이상의 인간으로부터 수신되는, 하나 이상의 프로세서에 의해 구현되는 방법.
  15. 임의의 선행하는 항에 있어서,
    상기 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계는,
    제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계를 포함하고, 그리고
    상기 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계는,
    음성 봇이 대응하는 수신 전화 통화에 응답하고 각 클라이언트 디바이스를 통해 대응하는 수신 전화 통화를 시작한 대응하는 인간과 대화를 수행하도록 하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  16. 제15항에 있어서,
    상기 수신 전화 통화를 종료하는 것에 후속하여:
    대응하는 수신 전화 통화 중에 수행된 대화의 대응하는 대화 요약을 생성하는 단계와; 그리고
    대화의 대응하는 대화 요약이 음성 봇 개발 플랫폼을 통해 렌더링되도록 하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  17. 임의의 선행하는 항에 있어서,
    상기 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계는,
    제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계를 포함하고,
    상기 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계는,
    음성 봇이 대응하는 발신 전화 통화를 시작하고, 각 클라이언트 디바이스를 통해 대응하는 발신 전화 통화에 응답한 대응하는 인간과 대화를 수행하도록 하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  18. 제17항에 있어서,
    상기 발신 전화 통화를 종료하는 것에 수혹하여:
    대응하는 발신 전화 통화 중에 수행된 대화의 대응하는 대화 요약을 생성하는 단계와; 그리고
    대화의 대응하는 대화 요약이 음성 봇 개발 플랫폼을 통해 렌더링되도록 하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  19. 임의의 선행하는 항에 있어서,
    상기 음성 봇 개발 플랫폼은 음성 봇을 배치하는 제3자와 구별되는 제1자(first party)에 의해 제공되는, 하나 이상의 프로세서에 의해 구현되는 방법.
  20. 하나 이상의 프로세서에 의해 구현되는 방법으로서, 상기 방법은,
    음성 봇 개발 플랫폼을 통해, 복수의 원격 프로시저 호출(RPC) 트레이닝 인스턴스를 획득하는 단계와, 상기 복수의 RPC 트레이닝 인스턴스 각각은,
    대응하는 대화의 적어도 일부 및 그 대응하는 대화의 이전 컨텍스트를 포함하는 트레이닝 인스턴스 입력과,
    대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답을 포함하는 트레이닝 인스턴스 출력을 포함하고,
    음성 봇 개발 플랫폼을 통해, 적어도 복수의 RPC 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝하는 단계와, 상기 복수의 RPC 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝하는 것은 음성 봇이 제3자 시스템과 상호작용하도록 하고; 그리고
    음성 봇을 트레이닝하는 것에 후속하여, 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  21. 제20항에 있어서,
    상기 복수의 RPC 트레이닝 인스턴스 중 주어진 RPC 트레이닝 인스턴스에 대한 대응하는 실측 응답은 적어도 대응하는 RPC 아웃바운드 요청을 포함하고,
    상기 음성 봇을 트레이닝하는 단계는,
    기계 학습(ML) 모델의 복수의 ML 계층을 사용하여 주어진 트레이닝 인스턴스에 대해, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  22. 제21항에 있어서,
    상기 대응하는 대화의 일부는 대응하는 대화의 적어도 일부에 대한 복수의 음성 가설을 포함하고,
    상기 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위하여 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 단계는,
    복수의 ML 계층의 제1 ML 계층을 사용하여, 제1 임베딩을 생성하기 위해 복수의 음성 가설을 처리하는 단계와;
    복수의 ML 계층의 제2 ML 계층을 사용하여, 제2 임베딩을 생성하기 위해 대응하는 대화의 이전 컨텍스트를 처리하는 단계와; 그리고
    대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 제1 임베딩과 제2 임베딩을 연결하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  23. 제22항에 있어서,
    음성 봇 개발 플랫폼을 통해, 대응하는 대화의 현재 상태와 관련된 임베딩에 기초하여 복수의 유사도 특징을 생성하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  24. 제23항에 있어서,
    상기 음성 봇을 트레이닝하는 단계는,
    ML 모델 또는 추가 ML 모델의 복수의 추가 ML 계층을 사용하여, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해 대응하는 대화의 현재 상태와 관련된 임베딩 및 복수의 유사도 특징을 처리하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  25. 제24항에 있어서,
    상기 음성 봇을 트레이닝하는 단계는,
    임베딩 공간에서, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩 및 대응하는 RPC 아웃바운드 요청과 관련된 대응하는 실측 임베딩을 비교하는 단계와;
    예측 임베딩 및 대응하는 실측 임베딩의 비교에 기초하여, 하나 이상의 손실을 생성하는 단계와; 그리고
    하나 이상의 손실에 기초하여 ML 모델을 업데이트 하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  26. 제20항 내지 25항의 어느 한 항에 있어서,
    복수의 RPC 트레이닝 인스턴스 중 주어진 RPC 트레이닝 인스턴스에 대한 대응하는 대화의 적어도 일부는 적어도 대응하는 RPC 인바운드 요청을 포함하고,
    상기 음성 봇을 트레이닝하는 단계는,
    기계 학습(ML) 모델의 복수의 ML 계층을 사용하여 주어진 트레이닝 인스턴스에 대해, 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 적어도 대응하는 RPC 인바운드 요청 및 대응하는 대화의 이전 컨텍스트를 처리하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  27. 제20항 내지 26항의 어느 한 항에 있어서,
    상기 대응하는 대화의 현재 상태와 관련된 임베딩을 생성하기 위해 대응하는 대화의 적어도 일부 및 대응하는 대화의 이전 컨텍스트를 처리하는 단계는,
    복수의 ML 계층의 제1 ML 계층을 사용하여, 제1 임베딩을 생성하기 위해 적어도 RPC 인바운드 요청을 처리하는 단계와;
    복수의 ML 계층의 제2 ML 계층을 사용하여, 제2 임베딩을 생성하기 위해 대응하는 대화의 이전 컨텍스트를 처리하는 단계와; 그리고
    대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩을 생성하기 위해 제1 임베딩과 제2 임베딩을 연결하는 단계를 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  28. 제20항 내지 27항 중 어느 한 항에 있어서,
    상기 음성 봇을 트레이닝하는 단계는,
    임베딩 공간에서, 대응하는 대화의 적어도 일부에 대한 예측 응답과 관련된 예측 임베딩 및 대응하는 실측 응답과 관련된 대응하는 실측 임베딩을 비교하는 단계와;
    예측 임베딩 및 대응하는 실측 임베딩의 비교에 기초하여, 하나 이상의 손실을 생성하는 단계와; 그리고
    하나 이상의 손실에 기초하여 ML 모델을 업데이트 하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  29. 제20항 내지 28항 중 어느 한 항에 있어서,
    상기 음성 봇을 배치하는 제3자는 제3자 시스템과 관련된 추가적인 제3자와 구별되는, 하나 이상의 프로세서에 의해 구현되는 방법.
  30. 제20항 내지 29항 중 어느 한 항에 있어서,
    상기 제3자를 대신하여 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계는 ,
    제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계를 포함하고, 그리고
    상기 제3자와 관련된 전화 통화에 대한 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계는,
    대응하는 수신 전화 통화에 응답하고 각 클라이언트 디바이스를 통해 대응하는 수신 전화 통화를 시작한 대응하는 인간과 대화를 수행하기 위해 트레이닝된 음성 봇이 배치되도록 하는 단계를 포함하고, 상기 음성 봇은 대응하는 인간과의 대화 중에, 대응하는 RPC를 통해 제3자 시스템과 상호 작용하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  31. 제30항에 있어서,
    상기 수신 전화 통화를 종료하는 것에 후속하여:
    대응하는 수신 전화 통화 중에 수행된 대화의 대응하는 대화 요약을 생성하는 단계와, 상기 대응하는 대화 요약 중 하나 이상은 대응하는 RPC가 대응하는 수신 전화 통화 중에 수신된 대응하는 인간의 대응 음성 발언에 기초하여 발생했다는 표시를 포함하고, 그리고
    대화의 대응하는 대화 요약이 음성 봇 개발 플랫폼을 통해 렌더링되도록 하는 단계를 더 포함하는, 하나 이상의 프로세서에 의해 구현되는 방법.
  32. 음성 봇 개발 플랫폼으로서,
    상기 음성 봇 개발 플랫폼은,
    적어도 하나의 프로세서;
    적어도 하나의 메모리;
    복수의 트레이닝 인스턴스를 포함하는 적어도 하나의 데이터 베이스;
    제3자와 관련된 제3자 개발자가 음성 봇 개발 플랫폼과 상호 작용하여 동작들을 수행할 수 있도록 하는 적어도 하나의 사용자 인터페이스를 포함하고, 상기 동작들은,
    복수의 트레이닝 인스턴스를 획득하는 동작과, 상기 복수의 트레이닝 인스턴스 각각은,
    대응하는 대화의 적어도 일부 및 그 대응하는 대화의 이전 컨텍스트를 포함하는 트레이닝 인스턴스 입력과,
    대응하는 대화의 적어도 일부에 대한 대응하는 실측 응답을 포함하는 트레이닝 인스턴스 출력을 포함하고,
    음성 봇에 대한 복수의 대응하는 행동을 생성하기 위해 복수의 트레이닝 인스턴스에 기초하여 음성 봇을 트레이닝하는 동작과; 그리고,
    음성 봇을 트레이닝하는 것에 후속하여:
    제3자 개발자가 음성 봇에 대한 복수의 대응하는 행동인 새로운 행동을 추가하기 위해 적어도 하나의 데이터베이스에 저장된 추가 트레이닝 인스턴스를 추가할 수 있도록 하는 동작; 및
    제3자 개발자가 음성 봇의 복수의 대응하는 행동 중 기존 행동을 수정하기 위해 적어도 하나의 데이터베이스에 저장된 기존 트레이닝 인스턴스를 수정할 수 있도록 하는 단계를 포함하는. 음성 봇 개발 플랫폼.
KR1020227042499A 2020-12-04 2021-12-03 예제 기반 음성 봇 개발 기법 KR20230006900A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US17/112,418 2020-12-04
US17/112,418 US11804211B2 (en) 2020-12-04 2020-12-04 Example-based voice bot development techniques
USPCT/US2020/064722 2020-12-12
PCT/US2020/064722 WO2022119580A1 (en) 2020-12-04 2020-12-12 Example-based voice bot development techniques
US17/541,098 2021-12-02
US17/541,098 US20220180858A1 (en) 2020-12-04 2021-12-02 Example-based voice bot development techniques
PCT/US2021/061855 WO2022120200A2 (en) 2020-12-04 2021-12-03 Example-based voice bot development techniques

Publications (1)

Publication Number Publication Date
KR20230006900A true KR20230006900A (ko) 2023-01-11

Family

ID=79170938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227042499A KR20230006900A (ko) 2020-12-04 2021-12-03 예제 기반 음성 봇 개발 기법

Country Status (5)

Country Link
EP (1) EP4128074A2 (ko)
JP (1) JP2023534101A (ko)
KR (1) KR20230006900A (ko)
CN (1) CN115699023A (ko)
WO (1) WO2022120200A2 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925452B1 (en) * 2000-05-22 2005-08-02 International Business Machines Corporation Method and system for recognizing end-user transactions
US20150278706A1 (en) * 2014-03-26 2015-10-01 Telefonaktiebolaget L M Ericsson (Publ) Method, Predictive Analytics System, and Computer Program Product for Performing Online and Offline Learning
CN108229686B (zh) * 2016-12-14 2022-07-05 阿里巴巴集团控股有限公司 模型训练、预测方法、装置、电子设备及机器学习平台
US11386326B2 (en) * 2018-06-11 2022-07-12 The Regents Of The University Of California Training a machine learning model with limited training data
US10861456B2 (en) * 2018-09-17 2020-12-08 Adobe Inc. Generating dialogue responses in end-to-end dialogue systems utilizing a context-dependent additive recurrent neural network
US10853577B2 (en) * 2018-09-21 2020-12-01 Salesforce.Com, Inc. Response recommendation system
US11206229B2 (en) * 2019-04-26 2021-12-21 Oracle International Corporation Directed acyclic graph based framework for training models

Also Published As

Publication number Publication date
EP4128074A2 (en) 2023-02-08
WO2022120200A3 (en) 2022-07-21
WO2022120200A2 (en) 2022-06-09
JP2023534101A (ja) 2023-08-08
CN115699023A (zh) 2023-02-03

Similar Documents

Publication Publication Date Title
US11887595B2 (en) User-programmable automated assistant
US11804211B2 (en) Example-based voice bot development techniques
CN116724305B (zh) 上下文标签与命名实体识别模型的集成
CN115917553A (zh) 在聊天机器人中实现稳健命名实体识别的实体级数据扩充
US20240146668A1 (en) Updating trained voice bot(s) utilizing example-based voice bot development techniques
US20180308481A1 (en) Automated assistant data flow
CN115398436A (zh) 用于自然语言处理的噪声数据扩充
CN116547676A (zh) 用于自然语言处理的增强型logit
CN116802629A (zh) 用于自然语言处理的多因素建模
CN116615727A (zh) 用于自然语言处理的关键词数据扩充工具
US20230419964A1 (en) Resolving unique personal identifiers during corresponding conversations between a voice bot and a human
CN116635862A (zh) 用于自然语言处理的域外数据扩充
CN116490879A (zh) 用于神经网络中过度预测的方法和***
US20220180858A1 (en) Example-based voice bot development techniques
CN118202344A (zh) 用于从文档中提取嵌入式数据的深度学习技术
KR20230006900A (ko) 예제 기반 음성 봇 개발 기법
CN116724306A (zh) 用于自然语言处理器的多特征平衡
US11924150B2 (en) System(s) and method(s) for enabling a representative associated with an entity to modify a trained voice bot associated with the entity
US20240203404A1 (en) Enabling large language model-based spoken language understanding (slu) systems to leverage both audio data and textual data in processing spoken utterances
CN118251668A (zh) 用于从数据中提取问题答案对的基于规则的技术