MỞ ĐẦU I. TỔNG QUAN - TÍNH CẤP THIẾT CỦA ĐỀ TÀI Ngày nay với sự phát triển không ngừng của khoa học và công nghệ với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết cho hoạt động của con người đạt hiệu quả cao. Một trong những ứng dụng quan trọng trong công nghệ điện tử là kỹ thuật điều khiển từ xa.
Nó đã góp phần rất lớn trong việc điều khiển các thiết bị từ xa hay những thiết bị mà con người không thể trực tiếp chạm vào để vận hành điều khiển. Nhà thông minh là một ứng dụng trong số các ứng dụng của IoT. Nhà thông minh (tiếng Anh: home automation, smart home hoặc Intellihome) là kiểu nhà được lắp đặt các thiết bị điện, điện tử có tác dụng tự động hoá hoàn toàn hoặc bán tự động, thay thế con người trong thực hiện một hoặc một số thao tác quản lý, điều khiển. Hệ thống điện tử này giao tiếp với chủ nhân nhà thông qua bảng điện tử đặt trong nhà, phần mềm điện thoại di động, máy tính bảng hoặc một giao diện web.
Trong căn nhà thông minh, đồ dùng trong nhà từ phòng ngủ, phòng khách đến toilet đều gắn các bộ điều khiển điện tử có thể kết nối với Internet và điện thoại di động, cho phép chủ nhân điều khiển vật dụng từ xa hoặc lập trình cho thiết bị ở nhà hoạt động theo lịch. Nhà thông minh ngoài ra còn có một số ứng dụng sáng tạo hơn, gồm hệ thống điều khiển giải trí tại gia – loa công suất khác nhau, hệ thống điện thoại, liên lạc nội bộ, hệ thống tưới nước. Các thành phần của hệ thống nhà thông minh bao gồm các cảm biến (như cảm biến nhiệt độ, cảm biến ánh sáng hoặc do cử chỉ), các bộ điều khiển hoặc máy chủ và các thiết bị chấp hành khác. Nhờ hệ thống cảm biến, các bộ điều khiển và máy chủ có thể theo dõi các trạng thái bên trong ngồi nhà để đưa ra các quyết định điều khiển các thiết bị chấp hành một cách phù hợp nhằm đảm bảo môi trường sống tốt nhất cho con người.
do an Ngoài ra, cùng với sự phát triển của các thiết bị điện tử cá nhân như máy tính bảng và điện thoại thông minh, các hệ thống nhà thông minh còn cung cấp khả năng tương tác với người sử dụng thông qua các thiết bị điện tử cá nhân cho phép con người có thể giám sát và điều khiển ngôi nhà từ bất cứ đâu. Hiện nay, trong lĩnh vực nhà thông minh, các kỹ sư vẫn đang tiếp tục sáng tạo để tạo ra nhiều tiện ích hơn nữa cho ngôi nhà cũng như tối ưu hoá về việc triển khai lắp đặt một ngôi nhà thông minh. Trong tương lai, ngôi nhà thông minh có thể có khả năng "tư duy" để tự điều chỉnh các thiết bị một cách phù hợp và còn có khả năng giao tiếp với con người như trong các bộ phim viễn tưởng. Với sự phát triển vũ bảo của công nghệ thông tin, Internet, cùng với việc chi phí cho hệ thống nhà thông minh đã giảm xuống cùng với nhu cầu ngày càng cao của con người, hiện nay nhà thông minh được xem là một lĩnh vực có dư địa phát triển rất lớn.
Theo hãng ABI Research,năm 2012 đã có hơn 1,5 triệu hệ thống nhà thông minh đã được lắp đặt ở Mỹ và dự kiến, con số này sẽ tăng đến 8 triệu vào năm 2017. Trong tương lai không xa, có thể hi vọng nhà thông minh sẽ là một xu hướng mới cho cuộc sống của con người hiện đại. MỤC ĐÍCH CỦA ĐỀ TÀI Đây là một đề tài khá rộng và có rất nhiều ứng dụng vào trong thực tế cuộc sống nhưng ở đây, nhóm chúng em sẽ tập trung vào nghiên cứu và phát triển một ứng dụng trên hệ điều hành Android (sẽ mở rộng sang IOS) với nhiệm vụ là điều khiển các thiết bị trong nhà thông qua giọng nói. YÊU CẦU Chuyên môn: nắm vững kiến thức lập trình về Android, xây dựng được một hệ cơ sở dữ liệu cơ bản để lưu trữ thông tin của thiết bị.
Nắm vững và sử dụng được khi gọi API trên Google và cách để gọi API vào trong ứng dụng. Nắm được cơ bản về Embedded System (C++), có thể nạp code vào trong các thiết bị phần cứng. Kĩ năng mềm: Có kĩ năng làm việc nhóm tốt, kĩ năng lên kế hoạch và quản lý dự án. Có khả năng đọc hiểu tài liệu tiếng Anh.
do an IV. PHẠM VI NGHIÊN CỨU Sau khi tìm hiểu thông tin về đề tài, cùng với những hiểu biết sẵn có và tìm kiếm thông tin liên quan, chúng tôi xác định các đối tượng cần nghiên cứu là: - Api.ai (Dialogflow): khái niệm về api.ai, các đặc điểm, liên kết, cách thức hoạt động - Hệ điều hành Android: kiến trúc hệ điều hành Android, chu kỳ sống các ứng dụng chạy trên hệ điều hành Android, phần mềm hỗ trợ lập trình Android Studio, ngôn ngữ lập trình Java; Viết phần mềm ứng dụng. - Ngôn ngữ C#: phần mềm hỗ trợ lập trình Visual Studio, kiến thức về web api, web server. do an Phần 2: NỘI DUNG CHƯƠNG 1.
TÌM HIỂU VỀ DIALOGFLOW 1. Dialogflow là gì? Dialogflow được đổi tên từ Api.ai sau khi được Google mua lại vào tháng 9 năm 2016. Tiền thân là một công ty nổi tiếng với trợ lý ảo Speaktoit. Dialogflow (tiền thân là API.AI) là một dịch vụ do Google cung cấp nhằm giúp các lập trình viên dễ dàng hơn khi lập trình các sản phẩm có giao tiếp giữa người dùng với sản phẩm thông qua các đoạn hội thoại bằng văn bản (text) hoặc giọng nói (voice).
Dialogflow hiện tại là miễn phí cho tất cả mọi người. Dialogflow cho phép bạn tạo ra các kịch bản một cách dễ dàng kèm theo đó là Dialogflow cũng được phát triển trên mền Machine Learning nên bạn hoàn toàn có thể dạy cho con Bot của bạn biết cách xử lý các trường hợp, ngữ cảnh khác nhau. Hình 1- 1: Minh họa Dialogflow Dialogflow hiện có sẵn các kịch bản và Dialogflow cũng được dạy khá tốt với lượng dữ liệu khá đồ sộ. Chỉ tiết là đa phần Dialogflow làm việc tốt hơn với Tiếng Anh và một số tiếng của các nước đông dân khác.
1 do an Ngoài ra Dialogflow còn cho phép bạn liên kết Chatbot của bạn với Messanger hay Skype hay Slack… một cách rất đơn giản. Hình 1- 2: Các ứng dụng có thể sử dụng Dialogflow INTENT là một tập những gì người dùng nói mà chúng có cùng một ý nghĩa. ENTITIES là những công cụ được sử dụng để trích xuất các giá trị của tham số từ ngôn ngữ tự nhiên. Bất kỳ những gì mà bạn muốn biết từ nội dung của người dùng đều sẽ có một ENTITY tương ứng.
AGENT là khái niệm được dùng để đại diện cho một mô-đun (module) NLU (Natural Language Understanding – Phân tích để hiểu ngôn ngữ tự nhiên). AGENT giúp bạn phân tích những những gì người dùng đưa vào (text hoặc voice) để chuyển thành những dữ liệu mà bạn có thể xử lý được bằng lập trình. Bạn sẽ sử dụng một AGENT để quản lý các đoạn hội thoại thông qua INTENTS, ENTITIES 1. Bot là gì? Bot là một ứng dụng thô sơ và trực quan nhất của trí tuệ nhân tạo (AI).
Bot là kết quả của một hay nhiều kịch bản đã được viết sẳn kèm với một ít Máy Học (Machine Learning). Mục đích của Bot là trả lời các câu hỏi và đưa ra các gợi ý sao cho tự nhiên nhất có thể và chính sác nhất nếu được. 2 do an Hình 1- 3: Minh họa Chatbot Bạn có thể hình dung Bot như là Siri của Apple hay Cortana của Microsoft. Bot có ngày càng thông minh hay không phụ thuộc vào ít nhất 2 yếu tố cấu thành nên bộ não của nó đó là: Kịch bản dựng sẵn Khả năng học hỏi 3 do an 1.
Tạo Chatbot với Dialogflow Việc đầu tiên cần làm đó chính là tạo tài khoản. Bạn hãy truy cập vào trang Dialogflow và đăng ký một tải khoản (có thể sử dụng Google account). Sau khi đăng ký xong và đăng nhập vào Dialogflow, giao diện sẽ như sau. Hình 1- 4: Giao diện khi đăng nhập vào Dialogflow Tiếp theo đây sẽ là cách để tạo một Intent Trước tiên ta sẽ tìm hiểu rõ hơn về Intent và các thành phần của nó.
Một Intent sẽ phân loại ý định của end-user cho 1 lượt trò chuyện. Đối với mỗi Agent, ta có thể xác định nhiều Intent trong đó các Intent kết hợp có thể giúp xử lý một đoạn hội thoại hoàn chỉnh. Khi end-user viết hoặc nói một điều gì đó, được gọi là biểu thức người dùng cuối, Dialogflow sẽ nối những biểu thức người dùng khớp với intent có nội dung tốt nhất trong Agent của mình. 4 do an Hình 1- 5: Ví dụ về một Intent Training phrases: là những cụm từ ví dụ mà end-user có thể nói.
Khi người dùng thể hiện giống với một trong số những cụm từ này, Dialogflow sẽ so sánh nó với intent. Ta không cần phải định nghĩa chi tiết từng ví dụ vì Dialogflow được xây dựng dựa trên Machine Learning giúp mở rộng danh sách các cụm từ mà ta sử dụng. Action: Ta có thể định nghĩa một hành động cho mỗi intent. Khi một intent trùng khớp, Dialogflow sẽ cung cấp một hành động cho hệ thống của bạn và bạn có thể sử dụng hành động để kích hoạt những hành động cụ thể trên hệ thống của bạn.
Parameters: khi một intent trùng khớp ở runtime, Dialogflow cung cấp một giá trị từ biểu thức người dùng như là một parameter. Mỗi parameter có một kiểu gọi là entity, định rõ kiểu dữ liệu mà nó lưu trữ. Parameter giúp cấu trúc lại data để có thể dễ dàng sử dụng để thực hiện logic và tạo phản hồi. Responses: Ta xác định văn bản, giọng nói, phản hồi trực quan để trả về end-user.
Điều này có thể cung cấp cho end-user những câu trả lời, hỏi người dùng thông tin hoặc ngắt một cuộc hội thoại. 5 do an Hình 1- 6: Agent có thể quản lý nhiều Intent Contexts: Dialogflow contexts tương tự như bối cảnh ngôn ngữ tự nhiên. Nếu một người nói “they are orange”, ta cần ngữ cảnh để có thể hiểu được người đó đang đề cập đến điều gì. Tương tự, Để Dialogflow xử lý biểu thức người dùng như vậy, nó cần được cung cấp ngữ cảnh để có thể kết nối với intent.