Khuôn mặt biểu lộ cảm xúc

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Xây dựng hệ thống Agent hội thoại hiện thân cho tương tác người - máy. (Trang 57)

4.4. Tích hợp

Trong hệ thống agent hội thoại hiện thân, chúng tôi tích hợp hai hệ thống trên thành một hệ thống hoàn chỉnh bao gồm các tính năng mà hai hệ thống đó cung cấp nhƣ là khả năng hội thoại, khả năng thể hiện cảm xúc, khả năng tổng hợp âm thanh từ văn bản.

Hai hệ thống sẽ trao đổi dữ liệu với nhau thông qua đƣờng kết nối mạng, cụ thể là thông qua TCP. Tính thuật lợi của giải pháp này đó là 2 thành phần của hệ thống mang tính độc lập cao, có thể tự do phát triển mà vẫn có thể tích hợp đƣợc vì đã chuẩn hóa dữ liệu trao đổi.

Hình 14: Mô hình tương tác với hệ thống

Giao diện nhập dữ liệu ngƣời dùng sẽ đƣợc thông qua chế độ console. Khi ngƣời dùng nhập dữ liệu vào chƣơng trình sẽ xử lý đƣa ra phản hồi tƣơng ứng cùng với đó là gửi thông tin phản hồi qua hệ thống khuôn mặt 3D để hệ thống này phát ra tiếng nói và biểu hiện cảm xúc trên khuôn mặt.

using System; using System.IO; using AIMLbot; using System.Net.Sockets; namespace ConsoleBot { class Program {

static void Main(string[] args) {

Bot myBot = new Bot(); myBot.loadSettings();

User myUser = new User("consoleUser", myBot); myBot.isAcceptingUserInput = false;

myBot.loadAIMLFromFiles();

myBot.isAcceptingUserInput = true;

TcpListener tcpListener = new TcpListener(8111); tcpListener.Start();

Console.WriteLine("Server Started");

Socket socketForClient = tcpListener.AcceptSocket(); try

if (socketForClient.Connected) {

while (true) {

NetworkStream networkStream = new NetworkStream(socketForClient);

StreamWriter streamWriter = new StreamWriter(networkStream);

StreamReader streamReader = new StreamReader(networkStream);

Console.Write("You: ");

string input = Console.ReadLine(); if (input.ToLower() == "quit") {

break; }

Request r = new Request(input, myUser, myBot); Result res = myBot.Chat(r);

Console.WriteLine("Bot: " + res.Output); streamWriter.WriteLine("<PHONEME time=\"0\" text=\"" + res.Output + "\" />"); streamWriter.Flush(); } } socketForClient.Close(); Console.WriteLine("Exiting..."); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } }

Dữ liệu trao đổi qua hai hệ thống là một nội dung XML có dạng nhƣ sau:

<PHONEME time="0"

text="Oh, really? I like it very much." />

time="0" duration="10" HEAD_ROTATION_X_INCREASE="0.02" HEAD_ROTATION_X_DECREASE="0" HEAD_ROTATION_Y_INCREASE="0" HEAD_ROTATION_Y_DECREASE="0" HEAD_ROTATION_Z_INCREASE="0" HEAD_ROTATION_Z_DECREASE="0" /> <EMOTIONDISPLAY time="0" onset="0.8" offset="0.8" duration="2.0" Sadness="0" Happiness="1.0" Anger="0" Fear="0" Surprise="0" Hope="0" HappyFor="0" Shame="0" Pride="0" Disgust="0" /> <EMOTIONDISPLAY time="1.8" onset="0.8" offset="0.8" duration="5.0" Sadness="0" Happiness="0.5" Anger="0" Fear="0" Surprise="0" Hope="0" HappyFor="0" Shame="0" Pride="0" Disgust="0" />

Nhƣ vậy trong nội dung trao đổi thƣờng là một dạng XML gồm có 3 thẻ chính: thẻ PHONEME, thẻ HEADMOVEMENT và thẻ EMOTIONDISPLAY

PHONEME: chứa các thông tin văn bản để cho khuôn mặt 3D tổng hợp thành tiếng nói. Thông tin văn bản đó đƣợc đặt trong thuộc tính text, ngoài ra còn có thuộc tính time để xác định mốc thời gian.

HEADMOVEMENT: chứa các thông tin để điểu khiển sự hoạt động của đầu.

Trong thẻ này bao gồm các thuộc tính: time, duration,

HEAD_ROTATION_X_INCREASE, HEAD_ROTATION_X_DECREASE,

HEAD_ROTATION_Y_INCREASE, HEAD_ROTATION_Y_DECREASE,

HEAD_ROTATION_Z_INCREASE, HEAD_ROTATION_Z_DECREASE.

EMOTIONDISPLAY: chứa các thông tin điểu khiển sự bộc lộ cảm xúc trên khuôn mặt 3D. Trong thẻ này gồm các thông số chính nhƣ:

o Sadness: giá trị thể hiện cho sự buồn rầu.

o Happiness: giá trị thể hiện cho sự hạnh phúc.

o Anger: giá trị thể hiện cho sự tức giận.

o Fear: giá trị thể hiện cho sự sợ hãi.

o Surprise: giá trị thể hiện cho sự ngạc nhiên.

o Hope: giá trị thể hiện cho sự hy vọng.

o HappyFor:

o Shame: giá trị thể hiện cho sự xấu hổ

o Pride: giá trị thể hiện cho niềm kiêu hãnh.

o Disgust: giá trị thể hiện cho sự căm phẫn.

Mở rộng AIML

Tuy nhiên để để cuộc hội thoại có khả năng bộc lộ cảm xúc thì chúng ta phải có phƣơng pháp hoặc cách thức để thiết lập các mức độ cảm xúc vào các câu trả lời của chatterbot. Do vậy ở đây chúng tôi đã mở rộng thẻ trong AIML để phục vụ cho điều này. Bằng việc mở rộng thêm thẻ, chúng ta có thể tạo thêm các tính năng cho chatterbot.

Đối với các thẻ mở rộng chúng ta phải xử lý nhƣ thế nào để đƣa ra kết quả mong muốn? Chúng ta sẽ tạo một lớp (class) để thực hiện việc xử lý cho loại thẻ mở rộng này, và sau đó dịch class đó ra một thƣ viện để nhúng vào chƣơng trình của chúng ta.

Tạo một project trong Visual Studio có kiểu là .NET class library. Trong project này chúng ta sẽ sử dụng đến AIMLBot bằng cách tham chiếu đến thƣ viện AIMLBot.dll.

Bƣớc tiếp theo, trong project ta tạo một lớp tƣơng ứng cho mỗi một thẻ mở rộng của chúng ta. Tên của lớp phải giống chính xác nhƣ tên của thẻ mở rộng. Dƣới đây là một ví dụ đơn giản cho một lớp nhƣ vậy.

using System; using System.Xml; using AIMLbot.Utils; [CustomTag]

public class testtag : AIMLTagHandler {

public testtag() {

this.inputString = "testtag"; }

protected override string ProcessChange() {

if (this.templateNode.Name.ToLower() == "testtag") {

return "Test tag works! "+this.templateNode.InnerText; }

return string.Empty; }

}

Dòng trên cùng của khai báo lớp phải có thuộc tính CustomTag và các lớp phải thừa kế từ lớp AIMLTagHandler. Trong phƣơng thức khởi tạo của lớp phải có lệnh gán giá trị cho thuộc tính inputString, giá trị đó thƣờng là tên của thẻ. Quan trọng nhất trong lớp này đó chính là hàm override ProcessChange, đây chính là chỗ xử lý nội dung trong thẻ và kết quả trả về của hàm này là một chuỗi ký tự thay thế thẻ trong dữ liệu thô trả về. Trong lớp này chúng ta có thể sử dụng một số đối tƣợng có sẵn đƣợc liệt kê dƣới đây:

o this.templateNode – Một đối tƣợng XmlNode biểu diễn thẻ mà chúng ta đang xử

lý.

o this.bot – Một thể hiện của AIMLBot.Bot đại diện cho bot hiện tại đang xử lý dữ

o this.user – Một thể hiện của AIMLBot.User đại diện cho đối tƣợng ngƣời dùng

nhập dữ liệu đầu vào.

o this.query – Một thể hiện của lớp AIMLBot.Utils.SubQuery.

o this.request – Một thể hiện của lớp AIMLBot.Request, đóng gói tất cả các thông tin

hữu dụng về thông tin đầu vào của ngƣời dùng.

o this.result – Một thể hiện của lớp AIMLBot.Result, đóng gói tất cả các thông tin

hữu dụng về dữ liệu đƣợc bot sinh ra.

o this.isRecursive – Mặc định thì các thẻ XML phía trong của thẻ đƣợc xử lý đệ quy

trƣớc khi thẻ bao nó xử lý. Nếu muốn xử lý ngƣợc lại thì đặt giá trị của this.isRecursive là FALSE.

Trong hệ thống này chúng tôi đƣa các thông số cảm xúc vào cho các lời phản hồi của agent. Các câu phản hồi không có cảm xúc chúng tôi vẫn để theo định dạng mặc định của AIML, còn câu phản hồi khác chúng tôi thêm thẻ <response> với các thuộc tính nhƣ sau:

o Text: Chứa thông tin văn bản phản hồi của agent.

o Sadness: giá trị thể hiện cho sự buồn rầu.

o Happiness: giá trị thể hiện cho sự hạnh phúc.

o Anger: giá trị thể hiện cho sự tức giận.

o Fear: giá trị thể hiện cho sự sợ hãi.

o Surprise: giá trị thể hiện cho sự ngạc nhiên.

o Hope: giá trị thể hiện cho sự hy vọng.

o HappyFor:

o Shame: giá trị thể hiện cho sự xấu hổ

o Pride: giá trị thể hiện cho niềm kiêu hãnh.

o Disgust: giá trị thể hiện cho sự căm phẫn.

Thông số cảm xúc có giá trị trong khoảng từ 0 đến 1, tùy vào mức độ cảm xúc của hội thoại. Việc xác định giá trị cho các thông số cảm xúc trong luận văn này đƣợc xây dựng theo phƣơng pháp chủ quan. Trong hội thoại thực tế, chúng ta có thể dựa vào câu hỏi và câu trả lời để biết đƣợc phần nào cảm xúc của hội thoại. Ví dụ nếu một ngƣời hỏi ai đó “How are you today?” mà ngƣời kia trả lời “I’m fine” thì chúng ta có thể ƣớc lƣợng giá trị Happiness là cao, giá trị Sadness thấp, giá trị Anger thấp. Tuy phƣơng pháp ƣớc lƣợng giá trị này là chủ quan và thủ công, song phần nào cũng đƣa

ra đƣợc giá trị các thông số gần đúng với cảm xúc trong các cuộc hội thoại đơn giản và phổ biến.

Ví dụ một phải hồi có kèm theo thông tin cảm xúc nhƣ dƣới đây:

<category>

<pattern>How are you today</pattern> <template> <response Sadness="0" Happiness="0.5" Anger="0" Fear="0" Surprise="0" Hope="0" HappyFor="0" Shame="0" Pride="0" Disgust="0" Text="I'm fine'" /> </template> </category>

Thƣ viện mở rộng AIML sẽ thực hiện phân tích the <response> để lấy thông tin phản hồi và biểu lộ cảm xúc. Thông tin phản hồi sẽ đƣợc hệ thống agent gửi trả qua ngƣời sử dụng theo con đƣờng văn bản. Thông tin biểu lộ cảm đƣợc gửi cho hệ thống mặt 3D để điều khiển nét mặt khi nói bằng cách trao đổi nội dung XML tƣơng ứng nhƣ đề cập ở trên.

Hình 15: Giao diện tương tác của hệ thống

Hệ thống này đƣợc dựa trên AIML chuẩn nên có thể sử dụng đƣợc nhiều cơ sở dữ liệu AIML đƣợc xây dựng từ các cộng đồng trên mạng, đồng thời rất linh động và dễ dàng để thêm các thẻ mở rộng phục vụ cho các phản hồi kèm cảm xúc.

CHƢƠNG 5. KẾT LUẬN

Tƣơng tác giữa con ngƣời và máy tính đang trở thành lĩnh vực nghiên cứu quan trọng trong công nghệ thông tin. Bằng sự nghiên cứu nghiêm túc quá trình giao tiếp hội thoại của con ngƣời và con ngƣời, chúng ta mong muốn sẽ áp dụng đƣợc những những cách thức giao tiếp không chỉ là ngôn ngữ mà còn là cử chỉ, nét mặt, dáng điệu hội thoại vào trong tƣơng tác giữa ngƣời-máy. Hệ thống agent hội thoại hiện thân là một hệ thống đáp ứng một phần của nguyện vọng đó. Hệ thống agent này là sự tích hợp giữa hệ thống agent hội thoại và mô hình khuôn mặt 3D biểu cảm, có thể thực thi nhanh trên các máy PC có cấu hình tƣơng đối bình thƣờng.

Trong chƣơng 2, chúng ta đã cùng thảo luận về agent hội thoại, các phƣơng pháp tiếp cận và kỹ thuật đƣợc sử dụng để xây dựng lên hệ thống agent đó. Bên cạnh đó chúng ta cũng đã bàn luận về các mô hình cảm xúc đƣợc nghiên cứu và xây dựng hiện này. Nhờ các mô hình cảm xúc này mà chúng ta dần dần số hóa cảm xúc vào trong máy tính. Trong chƣơng này chúng ta cũng đã điểm qua một số agent hội thoại hiện thân đã và đang đƣợc phát triển trên thế giới. Từ phƣơng pháp phân tích ngữ nghĩa đến phƣơng pháp sử dụng mẫu, các phƣơng pháp này đều có điểm mạnh và điểm yếu khác nhau, nhƣng mục tiêu chính cuối cùng là đƣa con ngƣời tƣơng tác với máy tính dễ dạng và nhân cách hóa các cuộc hội thoại giữa con ngƣời và máy tính.

Trong chƣơng 3, chúng tôi đã tìm hiểu về mô hình mặt 3D biểu cảm, chúng tôi sử dụng mô hình này theo sự nghiên cứu mô hình The Duy Bui [15], một mô hình có thể mô tả cảm xúc trong thời gian thực. Cùng với đó là khả năng tổng hợp âm thanh từ văn bản và sự chuyển động đồng bộ của đôi môi để mô hình này có khả năng tạo ra các nét mặt, miệng nói nhƣ thật.

Trong chƣơng 4, đây là phần giới thiệu quá trình tích hợp hai hệ thống: agent hội thoại và khuôn mặt 3D biểu cảm để có đƣợc một hệ thống hoàn chỉnh. Có nhiều phƣơng pháp tiếp cận để xây dựng lên một mô hình hệ thống này, nhƣng đối với ngƣời làm khoa học máy tính thì ta nên chọn và thử nghiệm các phƣơng pháp dễ cài đặt, dễ triển khai và đƣợc hỗ trợ nhiều trên cộng đồng thế giới. Bằng việc sử dụng phƣơng pháp mẫu mà đặc biệt ở đây là AIML chúng ta có thể sử dụng nhiều các cơ sở dữ liệu AIML có sẵn trên cộng đồng Internet, ngoài ra còn một số thuận lợi khác nhƣ việc sử dụng AIML có thể xây dựng các agent cho các lĩnh vực riêng biệt nhƣ chăm sóc khách

hàng, tƣ vấn, hỏi đáp, cùng với đó là khả năng mở rộng không giới hạn, có thể xây dựng trên nền tảng desktop hay web.

Tuy nhiên, không phải một hệ thống nào cũng trở nên hoàn hảo ngay từ đầu. Đối với hệ thống này, việc đƣa tham số cảm xúc vào mẫu phản hồi trong AIML cũng đặt ra một số thách thức nhƣ không trực quan khi soạn thảo AIML, phải có cơ chế nào đó để đƣa tham số này vào một cách trực quan hơn.

Trong nghiên cứu tƣơng lai, chúng tôi sẽ áp dụng các phƣơng pháp phân tích cảm xúc qua hội thoại và ngữ cảnh hội thoại để có đƣợc cảm xúc và cử chỉ giống thật hơn. Theo cách tiếp cận này chúng ta vẫn có thể sử dụng đƣợc toàn bộ các dữ liệu AIML, việc phân tích cảm xúc sẽ đƣợc một bộ phận quan sát hội thoại đánh giá để đƣa ra thông số thích hợp. Phƣơng pháp này sẽ đòi hỏi sự phân tích ngữ nghĩa và ngữ cảnh trong hội thoại.

Trong tƣơng lại chúng tôi sẽ đƣa các thƣ viện để hỗ trợ tiếng Việt vào hệ thống đặc biệt là tổng hợp tiếng nói Việt từ văn bản.

TÀI LIỆU THAM KHẢO

[1]. Christiane Fellbaum, editor. Wordnet, “An Electronic Lexical Database”. The MIT Press, 1999.

[2]. Charles Fillmore. The case for case. “In Universals in Linguistic Theory”, pages 1-90. Holt, Rinehart & Winston, New York, 1968.

[3]. John Searle, “Expression and Meaning: Studies in the Theory of Speech Acts”. Cambridge University Press, 1979.

[4]. Sanda Harabagiu, Marius Pasca, and Steven Maiorano. “Experiments with open- domain textual question answering”. In Proceedings of COLING-2000, Saarbr ¨ uken Germany, August 2000.

[5]. Michael Gerhard, “Evaluating Embodied Conversational Agents in Collaborative Virtual Environments” Fraunhofer ISST, Position Paper for Dagstuhl Seminar 04121 [6]. Justine Cassell MIT, “More Than Just Another Pretty Face: Embodied Conversational

Interface Agents”, Communications of the ACM 2000

[7]. André, E., T. Rist, & J. Mueller, “Employing AI Methods to Control the Behavior of Animated Interface Agents”, Applied Artificial Intelligence

[8]. Churchill, E., Cook, L., Hodgson, P., Prevost, S., Sullivan, J. (2000) “May I Help You?”: “Designing Embodied Conversational Agent Allies, in Embodied

Conversational Agents”, MIT Press, Cambridge, MA, USA.

[9]. G. Salton, editor. “The SMART Retrieval System - Experiments in Automatic Document Processing”. Prentice-Hall, Englewood Cliffs (NJ), 1971.

[10]. G. Salton, E. Fox, and U. Wu. “Extended Boolean information retrieval”, Communications of the ACM, 26(12):1022-1036, 1983

[11]. D. Vrajitoru. Chatterbots web page. http://www.cs.iusb.edu/˜danav/chatterbots/ [12]. Nagao, K. and Takeuchi, A. “Social interaction: multimodal conversation with social

agents”. Proceedings of the 12th National Conference on Artificial Intelligence

(AAAI-94), (Seattle, WA, August 1994), AAAI Press/MIT Press, 1994, vol. 1, 22-28. [13]. Justine Cassell, Tim Bickmore, Lee Campbell, Hannes Vilhjálmsson, and Hao Yan,

Conversation as a System Framework: Designing Embodied Conversational Agents” [14]. Cohen, M. M. and Massaro, D. W. (1993). “Modeling coarticulation in synthetic

visual speech”. In Magnenat Thalmann, N. and Thalmann, D., editors, Models and Techniques in Computer Animation, pages 139{156. Springer, Tokyo.

[15]. The Duy Bui, “CREATING EMOTIONS AND FACIAL EXPRESSIONS FOR EMBODIED AGENTS”, Ph.D. Thesis

[16]. http://aimlbot.sourceforge.net/

[17]. PARKE, F. I. “A parametric model for human faces”, PhD Thesis, University of Utah, 1974

[18]. P. Ekman and W. Friesen. “Facial Action Coding System: A Technique for the Measurement of Facial Movement”. Consulting Psychologists Press, Palo Alto, 1978 [19]. Cassell, J., C. Pelachaud, N. Badler, M. Steedman, B. Achorn, T. Becket, B. Douville,

facial expression, gesture and spoken intonation for multiple conversational agents”. In Computer Graphics, 413-420. New York: ACM SIGGRAPH

[20]. Thórisson, K. R. “Communicative Humanoids: A Computational Model of Psychosocial Dialogue Skills”. Unpublished doctoral dissertation, Department of Media Arts and Sciences, Massachusetts Institute of Technology, Cambridge, Massachusetts, 1996

[21]. Hager, J. and Ekman, P. “Essential behavioral science of the face and gesture that computer scientists need to know”. In International Workshop on Automatic Face and Gesture Recognition, 1996

[22]. Magnenat-Thalmann, N., Primeau, E., and Thalmann, D. (1988). “Abstract muscle action procedures for human face animation”. The Visual Computer, 3(5):290-297. [23]. Pasquariello, S. and Pelachaud, C. (2001). “Greta: A simple facial animation engine”.

In 6th Online World Conference on Soft Computing in Industrial Appications, Session on Soft Computing for Intelligent 3D Agents.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Xây dựng hệ thống Agent hội thoại hiện thân cho tương tác người - máy. (Trang 57)

Tải bản đầy đủ (PDF)

(69 trang)