CHƯƠNG 1: TỐNG QUAN 1. Hệ thống nhận dạng giọng nói 1. Cơ sở lý thuyết Thông thường khi xử lý dữ liệu dạng âm thanh hay ngôn ngữ tự nhiên thì các hệ thống sẽ sử dụng Recurrent Neural Network (RNN) như Long ShortTerm Memory Networks (LSTM) bởi vì đây là dữ liệu dạng sequence. Tuy nhiên, nhóm thực hiện đã chuyển bài toán nhận dạng âm thanh bằng RNN về bài toán nhận dạng hình ảnh sử dụng CNN bằng cách chuyển file âm thanh (.wav) thành file hình ảnh (spectrogram) – là hình ảnh quang phổ của âm thanh.
Những file spectrogram có label là các lệnh mà nó đại diện và model nhận dạng hình ảnh dựa trên những file này. Kết quả dự đoán của model chính là label lệnh điều khiển. Ví dụ : một file .wav của lệnh “bật đèn 1” sẽ có spectrogram như sau: Hình 1.1 : Quang phổ spectrogram của file âm thanh 1. Mạng tích chập (CNN) Phép tích chập là một khái niệm trong xử lý tín hiệu số nhằm biến đổi tín hiệu đầu vào thông qua phép biến đổi với bộ lọc để trả về thông tin đầu ra là một tín hiệu mới.
Tín hiệu đầu ra sẽ giữ lại các đặc trưng về cạnh, đặc trưng biến thiên của dữ liệu. Mạng tích chập là mạng neuron có lớp sử dụng phép biến đổi tích chập giữa trọng số và dữ liệu đầu vào. Mạng tích chập được sử dụng phổ biến trong lĩnh vực thị giác máy tính. Kiến trúc chung của mạng tích chập Mỗi tầng tích chập sẽ bao gồm nhiều đơn vị mà kết quả ở mỗi đơn vị là một phép biến đổi tích chập từ layer trước đó thông qua phép nhân tích chập với bộ lọc.[1] Thiết kế thông dụng của một mạng tích chập 2 chiều sẽ có dạng như sau: 3 do an INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC Trong đó: INPUT: Tầng đầu vào CONV : Tầng tích chập RELU: Tầng biến đổi POOL: Tầng tổng hợp, thông thường là Max pooling.
Với yêu cầu bài toán của đề tài, nhóm đã lựa chọn sử dụng CNN với số layer và thông số cụ thể như sau : Hình 1.2 : Cấu trúc layer của model CNN 1. Xử lý dữ liệu và train model Nhóm đã ghi âm được 3840 file âm thanh với 24 label là 24 lệnh sử dụng để điều khiển thiết bị. Sau đó, 3840 file âm thanh này được chuyển thành 3200 file (.png) hình ảnh spectogram gồm 3072 file để train model và 768 file để test. Spectrogram từ 24 lệnh điều khiển sau khi được chuyển từ file âm thanh (.wav) sẽ có hình dạng như sau: 4 do an Tắt đèn 1 Bật đèn 1 Bật đèn 2 Tắt đèn 2 Bật đèn 3 Tắt đèn 3 5 do an Bật đèn 4 Tắt đèn 4 Bật đèn 5 Tắt đèn 5 Bật đèn 6 Tắt đèn 6 6 do an Tăng đèn 6 Giảm đèn 6 Bật đèn 7 Tắt đèn 7 Bật quạt 1 Tắt quạt 1 7 do an Tăng quạt1 Giảm quạt 1 Tắt phòng khách Tắt phòng ngủ Tắt phòng bếp Tắt ban công Sau khi train model với 3072 mẫu lệnh đã được chuyển từ âm thanh về spectrogram, nhóm đã tiến hành đánh giá lại độ chính xác của model với tập test gồm 768 mẫu lệnh và thu được kết quả như sau: 8 do an Hình 1.3 : Ma trận độ chính xác 9 do an Hình 1.4 : Biểu đồ đánh giá kết quả train model nhận diện 1.
Hệ thống ứng dụng điều khiển 1. Cơ sở lý thuyết Hệ thống xử lý dữ liệu và điều khiển gồm có phần xử lý backend NodeJs và phần giao diện frontend ReactJs cho web và React Native cho mobile. Những phần này chạy độc lập ở những tier khác nhau và truyền nhận dữ liệu với nhau qua giao thức http/https. Hiện nay, hầu hết cái ứng dụng client-server đều sử dụng phương thức web API để giao tiếp giữa các ứng dụng.
Nhóm sử dụng Json web token để bảo mật cho API dùng trong hệ thống, client lúc gửi request tới server phải kèm token của user để xác thực JwT được mã hoá bơi thuật toán RSA gồm public key / private key đi theo cặp hoặc HMAC SHA256 nên sẽ an toàn hơn cho các thiết bị của người dùng và hệ thống , khó có thể bị tấn công DDOS bằng cách thực hiện nhiều request tới server. REST API REST hay RESTful API là một tiêu chuẩn trong việc thiết kế API cho các ứng dụng web (Web services) để tiện cho việc quản lý resources thông qua các phương thức được quy định trước giúp cho backend và frontend giao tiếp với nhau dễ dàng hơn. 10 do an Hình 1.5 : Sơ đồ hoạt động của REST API [2] Client sẽ gửi http/https request đến server để thực hiện những thao tác với dữ liệu: o GET: lấy dữ liệu o POST: tạo mới dữ liệu trong database o PUT: update dữ liệu o DELETE: xoá dữ liệu Sau khi nhận được request và xử lý server sẽ trả về dữ liệu dạng json hoặc XML cho client. Cơ chế truyền nhận dữ liệu bằng API trong hệ thống Những yêu cầu từ Web hay Mobile app liên quan đến xử lý dữ liệu được lưu trữ trong cơ sở dữ liệu đều được request tới server Nodejs bằng cách gọi API thông qua các routes hay url đã được server định nghĩa.
Request nhận dạng giọng nói sẽ được gửi từ Mobile App tới server Python, sau khi xử lý và nhận dạng được lệnh thì server Python sẽ gửi request thực thi lệnh đó tới server NodeJs để điều khiển và gửi thông báo qua socket. Tổng quan về Socket. Khái niệm về socket Giữa 2 chương trình ứng dụng chạy trên mạng truyền nhận dữ liệu cần có một kết nối hay liên kết hai chiều để làm nhiệm vụ trung gian truyền tin. Hiện tại, việc truyền nhận dữ liệu đơn thuần thì chỉ cần dùng http request để gửi tin và trả response về kết quả xử lý yêu cầu đó.
Tuy nhiên, những ứng dụng đòi hỏi sự liên tục và real time thì nếu dùng giao thức http/https sẽ mang đến hạn chế và phiền phức cho cả client và server vì server 11 do an thường xuyên phải lắng nghe request từ phía client hay client phải liên tục thực hiện request liên tục để server trả về kết quả và so sánh sự thay đổi. Vì vậy, nhóm đã lựa chọn sử dụng socket để duy trì kết nối giữa các ứng dụng và thiết bị trong hệ thống.io chỉ là một công cụ giúp truyền nhận dữ liệu trong các ứng dụng cần realtime như chat, game,… Socket sẽ truyền nhận tín hiệu ngay lập tức khi có sự kiện xảy ra, tuy nhiên socket vẫn cần một ngôn ngữ lập trình để hiện thực và server trung gian để truyền dữ liệu. Cơ chế hoạt động của Socket Socket hoạt động trên cả giao thức TCP và UDP, socket của hệ thống sẽ lấy chung địa chỉ ip và port của server xử lý back-end NodeJs và hoạt động ở tầng 4 của mô hình OSI (Tranport Layer): Hình 1.6 : Cơ chế hoạt động của Socket Cơ chế Keep-alive của socket sẽ quyết định việc có duy trì kết nối hay không. Quá trình gồm có 3 thuộc tính: - tcp_keepalive_time: Khoảng thời gian không có tín hiệu.
Mặc định là 7200s. - tcp_keepalive_intvl: Khoảng thời gian chờ chiều bên kia hồi đáp. Mặc định là 75s. 12 do an - tcp_keppalive_probles: Số lần sẽ thử lại nếu việc giao tiếp gặp lỗi.
Mặc định là 9. Ứng dụng của Socket trong đề tài Hệ thống nhà thông minh mà nhómn thực hiện là một hệ thống cần độ chính xác cao và ngay lập tức nên tính chất realtime được đặt lên hàng đầu. Socket đảm nhận vai trò truyền dữ liệu giữa server, client , và thiết bị. Khi một lệnh đều khiển phát ra từ phía người dùng, ngay lập tức socket sẽ chuyển dữ liệu của action về server xử lý và đồng thời chuyển tín hiệu cho thiết bị.
Các sự kiện mà socket sẽ gửi tín hiệu xử lý cho các client đang lắng nghe gồm: “UPDATE_DEVICE”,” LOCK_DEVICE”, “UPDATE_SENSOR”, … Tuỳ thuộc vào từng loại sự kiện mà server sẽ quyết định xử lý tín hiệu gửi về như thế nào và gửi thông báo đến tất cả socket client. Tổng quan về hệ thống IOT 1. Cơ sở lý thuyết Internet of Things (Vạn vật kết nối ) là một mạng lưới các thiết bị kết nối internet. Trong đó các thiết bị, phương tiện truyền tài hay thiết bị kết nối được nhúng vào các bộ phận điện tử, phần mềm, cảm biến.[3] Vì được kết nối internet nên các thiết bị này có thể truyền nhận dữ liệu thông qua các giao thức mạng, chúng ta có thể thu thập và lưu trữ dữ liệu các thiết bị này và sử dụng cho các một đích khác nhau.
Thiết bị IoT trong hệ thống Các thiết bị IoT trong hệ thống đều được kết nối với internet bằng chip wifi ESP8266 v12 được gắn trên mạch. Như vậy mọi tín hiệu điều khiển và dữ liệu thông tin của thiết bị sẽ phải thông qua nó để truyền nhận. Vì vậy, một thiết bị mới khi được cấp nguồn sẽ phát ra tín hiệu wifi để người dùng cài đặt thông số của mạng wifi. ESP8266 có bộ nhớ flash 8Mb cho phép lưu trữ một số thông tin cấu hình cơ bản và có nhiều cách để kết nối với internet.
Nhưng trong phạm vi đề tài nhóm đã dùng socket để kết nối ESP8266 với hệ thống internet. Hoạt động của thiết bị IoT Thiết bị IoT mà nhóm đã phát triển gồm có thành phần chính gồm: ESP8266, role, nguồn , tụ điện, … Trên mỗi thiết bị sẽ có 1-5 đầu ra có thê gắn được 1-5 thiết bị điện sử dụng trong gia đình vì nguồn điện cung cấp cho mạch sẽ là điện 220V.7 : Mạch thiết bị điều khiển 14 do an 1. Tổng quan về NodeJs 1. Cơ sở lý thuyết Nodejs là một nền tảng được phát triển dựa trên ngôn ngữ javascript và chạy trên runtime engine của chrome.
Phần dưới của Nodejs là C++ nên tốc độ xử lý và thực thi khá nhanh. Điều này phù hợp cho những hệ thống xử lý tốc độ cao hay realtime NodeJs áp dụng cho các ứng dụng có lượng truy cập lớn cần phát triển nhanh như: Websocket server (Chat, Game, …), Realtime service, … Tuy nhiên, Nodejs chỉ hỗ trợ chạy đơn luồng và sử dụng kiến trúc hướng sự kiện Event-Driven, cơ chế non-blocking I/O giúp cho nó nhẹ và hiệu quả hơn. NodeJs không nên sử dụng cho các ứng dụng đòi hỏi xử lý GPU vì nó rất tốn tài nguyên.8 : Các thành phần của NodeJs 15 do an 1. Cơ chế hoạt động Trong javascript, hầu hết các lời gọi I/O đều là non-blocking.
Nghĩa là khi có HTTP request, truy xuất dữ liệu trong DB hoặc đọc ghi vào bộ nhớ thì hệ thống sẽ không tạm dừng (blocking) các đoạn code tiếp theo (như các ngôn ngữ server khác PHP, Ryby,.