CÔNG NGHỆ Tạp chí KHOA HỌC VÀ CÔNG NGHỆ ● Tập 57 Số 3 (6/2021) Website https //tapchikhcn haui edu vn 60 KHOA HỌC P ISSN 1859 3585 E ISSN 2615 9619 NGHIÊN CỨU XÂY DỰNG MÔ HÌNH NHẬN DIỆN CẢM XÚC QUA GI[.]
KHOA HỌC CÔNG NGHỆ P-ISSN 1859-3585 E-ISSN 2615-9619 NGHIÊN CỨU XÂY DỰNG MƠ HÌNH NHẬN DIỆN CẢM XÚC QUA GIỌNG NÓI RESEARCH AND BUILD A MODEL SPEECH EMOTION RECOGNITION Hà Huy Giáp1,*, Nguyễn Quang Đại2 TÓM TẮT Trong bối cảnh cơng nghệ số, liệu lớn, địi hỏi người phải xử lý nhiều thông tin lúc Bài tốn đặt cơng ty cần phân loại, đánh giá phản hồi khách hàng qua đoạn tin nhắn thoại, nhận diện cảm xúc qua giọng nói cho chatbot để có hướng xử lý tiếp theo, nhận diện cảm xúc qua giọng nói cho robot người, nhằm xử lý hướng phản hồi tiếp Bài báo đưa phương án tạo model để xác định, phân loại liệu Nội dung báo tập trung vào việc ứng dụng machine learning việc phân loại liệu sử dụng toán logistic regressiong để thiết lập Model, thiết lập Loss Function, tối ưu loss Function dự đốn mơ hình Từ khóa: Logistic regression, hàm chi phí, học máy ABSTRACT In the context of digital technology, big data, it requires people to process a lot of information at the same time The problem is that companies need to classify and evaluate customer feedback through voice messages, voice recognition for chatbots to have the next processing direction, and identify emotions through voice speaking for the human robots, in order to handle the feedback directions The article proposes a plan to create a model to identify and classify this data The content of the paper focuses on the application of machine learning in data classification and using the logistic regressiong problem to set up the Model, set the Loss Function, optimize the loss function and predict the model Keywords: Logistic regression, loss function, mechine learning Khoa Điện, Trường Đại học Kinh tế Kỹ thuật Công nghiệp Trường Đại học Công nghiệp Hà Nội * Email: hhgiap@uneti.edu.vn Ngày nhận bài: 06/4/2021 Ngày nhận sau phản biện: 06/5/2021 Ngày chấp nhận đăng: 25/6/2021 GIỚI THIỆU Ngày nay, có thay đổi lớn cách thức người trao đổi thông tin với hệ thống Sự thay đổi biểu chỗ, cách thức trao đổi thơng tin định dạng có cấu trúc chặt chẽ chuyển sang cách thức linh hoạt tự nhiên Trong đó, tiếng nói cách thức trao đổi thông tin tự nhiên nhất, cho phép tương tác người với hệ thống nhanh dễ dàng Đối thoại 60 Tạp chí KHOA HỌC VÀ CÔNG NGHỆ ● Tập 57 - Số (6/2021) dùng ngơn ngữ nói khơng đơn giản, thuận tiện tiết kiệm thời gian mà cịn góp phần đảm bảo khía cạnh an tồn mơi trường có tính rủi ro Để thiết lập hệ thống tương tác có tính linh hoạt cao, kiến trúc hệ thống đối thoại người - máy cần trang bị thêm chức Các chức bao gồm nhận dạng cảm xúc tiếng nói, phát tham biến dựa tình trạng thái người dùng quản lý tình để đưa mơ hình dựa tham biến phát làm cho trình đối thoại phù hợp Chính vậy, nhiều năm qua, nghiên cứu cảm xúc tiếng nói thu hút mối quan tâm mạnh mẽ lĩnh vực tương tác người - máy mong muốn tìm cách làm tích hợp trạng thái cảm xúc người nói vào hệ thống đối thoại người - máy dùng tiếng nói Với tính thiết thực cảm xúc tiếng nói áp dụng thực tế quan tâm, mục tiêu báo nghiên cứu nhận dạng cảm xúc cho tiếng nói dựa phương diện xử lý tín hiệu tiếng nói Bài báo trình bày nghiên cứu thử nghiệm đề xuất mơ hình nhận dạng cảm xúc cho tiếng nói dựa việc nghiên cứu đánh giá tham số so sánh số mơ hình nhận dạng Bốn cảm xúc nghiên cứu bao gồm cảm xúc: vui, buồn, tức bình thường ỨNG DỤNG BÀI TOÁN LOGISTIC REGRESSION TRONG NHẬN DIỆN CẢM XÚC QUA GIỌNG NÓI 2.1 Thiết lập Model Gọi x1(i) , x (2i) , x (3i) thông số đặc trưng cho giọng nói tương ứng là: - x1(i) : Hệ số Coff Cepstral với Mel filter MFCC (Mel Frequency Cepstral Coefficients): - x (2i) : CHROMA: Sắc ký (12 classes) - x (3i) : Mel (Melody): Giai điệu audio - yˆ i : Xác suất mà model dự đốn cảm xúc giọng nói thứ i Thiết lập model cho toán nhận diện cảm xúc qua giọng nói Sử dụng cơng thức logistic regression ta được: Website: https://tapchikhcn.haui.edu.vn SCIENCE - TECHNOLOGY P-ISSN 1859-3585 E-ISSN 2615-9619 (i) yˆ i σ(w w1.x1(i) w2 x(i) w x ) 1 e (1) (w0 w1 x1(i) w2 x(i2 ) w3 x(i3 ) ) 2.2 Thiết lập Loss Function Ta cần hàm để đánh giá mức độ xác model Nếu yˆ i gần với xác suất thực tế y tốt - Nếu giọng nói thứ i với cảm xúc dự đốn tức y = ta mong muốn yˆ i gần tốt - Nếu giọng nói thứ i khơng với cảm xúc dự đốn tức y = ta mong muốn yˆ i gần tốt Với giọng nói (x(i), yi) ta sử dụng hàm loss function binary_crossentropy để đánh giá hiệu qủa model L (y i log(yˆ i ) (1 y i ).log(1 yˆ i )) (2) Ta thấy rằng: • Hàm L tăng dần từ đến • Khi model dự đốn yˆ i gần 0, tức giá trị dự đoán gần với giá trị thật yi L nhỏ, xấp xỉ • Khi model dự đoán yˆ i gần 1, tức giá trị dự đoán ngược lại giá trị thật yi L lớn Hàm L nhỏ giá trị model dự đoán gần với giá trị thật lớn model dự đốn sai, hay nói cách khác L nhỏ model dự đốn gần với giá trị thật → Bài tốn tìm model trở thành tìm giá trị nhỏ L Hàm loss function toàn N liệu: N J (y i log(yˆ i ) (1 y i ).log(1 yˆ i )) N i1 (3) 2.3 Tối ưu Loss Function Để áp dụng thuật toán gradient descent tìm tối ưu loss function cần tính đạo hàm loss function với w Với điểm (x(i), yi), gọi hàm loss function L (y i log(yˆ i ) (1 y i ).log(1 yˆ i )) (i) (i) yˆ i σ(w0 w1.x w2 x w3 x ) σ(z) giá trị model dự đoán yi giá trị thật liệu dL dL dyˆ i dw yˆ i w d(y i log(yˆ i ) (1 y i ).log(1 yˆ i )) yˆ y i dL i yˆ i dyˆ i yˆ i (1 yˆ i ) (i) dyˆ i d(σ(w w1 x1(i) w2 x (i) w x )) yˆ i (1 yˆ i ) w0 dw dL dL dyˆ i yˆ i y i dw yˆ i w Tương tự: Website: https://tapchikhcn.haui.edu.vn dL ˆ x(i) (y i y i ) dw (4) dL ˆ x(i) (y i y i ) dw Xét toàn liệu: dL N (yˆ i yi ) dw N i1 dL N (i) x1 (yˆ i y i ) dw1 N i1 dL N ˆ x(i) (y i y i ) dw2 N i1 dL N ˆ x(i) (y i y i ) dw3 N i1 Biểu diễn dạng ma trận 1 x1(1) x1(2) X (n) 1 x1 x (1) x (2) x (n) w0 x (1) y1 w y (2) x3 ,y ,w w2 (n) x yn w3 (5) N J (y i log(yˆ i ) (1 y i ).log(1 yˆ i )) N i1 (6) dJ T X (yˆ y) dw N (7) Thuật toán Gradient descent thuật tốn tìm giá trị nhỏ hàm số f(x) dựa đạo hàm Thuật toán thực theo bước: Bước Khởi tạo giá trị w = w0 tùy ý Bước Gán w = w - learning_rate * J’(w) (learning_rate số dương ví dụ learning_rate = 0.001) Trong đó: (i) dL x1(i) (yˆ i y i ) dw1 Bước Tính lại J(w): Nếu J(w) đủ nhỏ dừng lại, ngược lại tiếp tục bước Sau thực thuật tốn gradient descent ta tìm w0, w1, w2, w3 Với giọng nói ta tính thơng số cảm xúc giọng nói (i) yˆ i σ(w0 w1 x1(i) w2 x(i) w x ) sau so sánh với 3 thơng số cảm xúc đặc trưng (Labels) từ ta biết cảm xúc going nói cần chuẩn đốn THỰC HIỆN THUẬT TỐN VỚI ỨNG DỤNG GOOGLE COLLABORATORY 3.1 Xử lý liệu (Dataset) Dữ liệu dạng Audio*.wav có gán sẵn labels hình Dữ liệu gồm có: 24 Actors, 1536 files audio, emotions (calm, happy, fearful, disgust, sad, angry, supprised) Vol 57 - No (June 2021) ● Journal of SCIENCE & TECHNOLOGY 61 KHOA HỌC CÔNG NGHỆ P-ISSN 1859-3585 E-ISSN 2615-9619 3.3 Sử dụng model Logistic Regression thư viện Sklearn để train evaluate data Kết Train data hình Hình Dữ liệu dạng Audio*.wav có gán sẵn labels 3.2 Số hóa lấy đặc trưng liệu Gọi x1(i) , x 2(i) , x 3(i) thông số đặc trưng cho giọng nói tương ứng là: x1(i) : Hệ số Coff Cepstral với Mel filter MFCC (Mel Frequency Cepstral Coefficients) (hình 2) Hình Kết với Train data Kết với Validation data hình Hình Đồ thị sóng âm x 2(i) : CHROMA: Sắc ký (12 classes) (hình 3) Hình Hình ảnh sắc ký âm x 3(i) : Mel (Melody): Giai điệu audio Hình Kết Train với Validation data Kết vector đặc trưng shape = (180,) Kết so sánh model hình Chia Dataset: Train set (80%), Validation (10%), Test set (10%) Số hóa Labels: # All emotions in the dataset emotions={ '01':'neutral', '02':'calm', '03':'happy', '04':'sad', '05':'angry', '06':'fearful', '07':'disgust', '08':'surprised' } # Observed_Emotion observed_emotions=['calm', 'happy', 'fearful', 'disgust'] 62 Tạp chí KHOA HỌC VÀ CƠNG NGHỆ ● Tập 57 - Số (6/2021) Hình Kết so sánh model Chọn Model: GradientBoostingClassifier: - Không Overfit - Không Underfit Website: https://tapchikhcn.haui.edu.vn SCIENCE - TECHNOLOGY P-ISSN 1859-3585 E-ISSN 2615-9619 3.4 Điều chỉnh HYPER-PARAMETERS Điều chỉnh hệ số “n_estimators”: Chương trình: # SearchCV from sklearn.ensemble import GradientBoostingClassifier scaler = StandardScaler().fit(x_train) rescaledX = scaler.transform(x_train) para_grid = {'n_estimators' : [50,100,300,400,500]} model = GradientBoostingClassifier(random_state= 8) grid = GridSearchCV(estimator= model, param_grid= para_grid, scoring= 'neg_mean_squared_error') grid_result = grid.fit(rescaledX, y_train) Kết quả: Best: -0.945862 using {'n_estimators': 300} -1.102439 (0.151368) with: {'n_estimators': 50} -0.994962 (0.126236) with: {'n_estimators': 100} -0.945862 (0.230431) with: {'n_estimators': 300} -0.949167 (0.220215) with: {'n_estimators': 400} -0.949167 (0.220215) with: {'n_estimators': 500} Chọn: 'n_estimators': 400 Kết quả: MSE: 0.42857142857142855 Accuracy: 0.8181818181818182 Đánh giá: - Mơ hình Logistic Regression hoạt động tốt với Acc = 81,81% - Kết chứng minh LR hoạt động tốt mạng Neutral Network đơn giản, Ví dụ paper mẫu dùng mạng “MLPClassifier” mà Acc = 72,40% KẾT LUẬN Điều chỉnh hệ số “learning_rate”: Chương trình: from sklearn.ensemble import GradientBoostingClassifier scaler = StandardScaler().fit(x_train) rescaledX = scaler.transform(x_train) para_grid = {'learning_rate' : [0.1,0.01,0.001]} model = GradientBoostingClassifier(random_state= 8) grid = GridSearchCV(estimator= model, param_grid= para_grid, scoring= 'neg_mean_squared_error') grid_result = grid.fit(rescaledX, y_train) Kết quả: Best: -0.994962 using {'learning_rate': 0.1} -0.994962 (0.126236) with: {'learning_rate': 0.1} -1.470585 (0.185699) with: {'learning_rate': 0.01} -1.913621 (0.225609) with: {'learning_rate': 0.001} Chọn: 'learning_rate': 0.1 3.5 Build Model Xây dựng Logistic Model với “Best Model” “Best Hyper-para”: - GradientBoostingClassifier - n_estimators: 400 - learning_rate: 0.1 ĐÁNH GIÁ MSE VÀ ACCURACY QUA BỘ TEST Chương trình: # prepare the model scaler = StandardScaler().fit(x_train) rescaledX = scaler.transform(x_train) model = GradientBoostingClassifier(random_state=8, n_estimators=400, learning_rate = 0.1) Website: https://tapchikhcn.haui.edu.vn model.fit(rescaledX, y_train) # Checking the accuracy with test data rescaledX_test = scaler.transform(x_test) predictions = model.predict(rescaledX_test) Bài báo trình bày tốn nhận diện cảm xúc qua giọng nói Trong báo đặt vấn đề tầm quan trọng việc nhận diện cảm xúc qua giọng nói từ đưa phương án giải quyết.Các bước để thực thể rõ từ việc xử lý liệu, thiết lập model, thiết lập loss function, tối ưu loss function dự đốn mơ hình Kết phương pháp đạt độ xác cao so với số phương pháp làm trước Hướng phát triển nghiên cứu tối ưu thuật toán nhận diện cảm xúc qua giọng nói phát triển nhiều ứng dụng thực tế chatbot, nhận diện cảm xúc qua giọng nói cho robot người nhằm xử lý hướng phản hồi tiếp theo, đánh giá phản hồi khách hàng qua đoạn tin nhắn thoại Từ mạng lại hiệu ứng dụng hiệu kinh tế cho người dùng TÀI LIỆU THAM KHẢO [1] Rao, K Sreenivasa, Koolagudi, Shashidhar G., 2013 Emotion Recognition using Speech Features Springer [2] Cowie, Roddy, et al., 2001 Emotion recognition in human-computer interaction IEEE Signal processing magazine 18.1, vol 12, pp 32–80 [3] Robert Plutchik, Henry Kellerman, 1989 Emotion: Theory, research and experience New York, USA: Academic Press [4] Ayadi M E., Kamel M S., Karray F., 2011 Survey on speech emotion recognition: Features,classication schemes, and databases Pattern Recognition, vol 44, pp 572–587 [5] Craig A D., 2009 Handbook of Emotion, ch Interoception and emotion: A neuroanatomical perspective New York: September: The Guildford Press, ISBN 978-1-59385-650-2 [6] Ekman P., 1999 Handbook of Cognition and Emotion: ch Basic Emotions, Sussex, UK: JohnWiley and Sons Ltd AUTHORS INFORMATION Ha Huy Giap1, Nguyen Quang Dai2 Faculty of Electrical Engineering, University of Economics - Technology for Industries Hanoi University of Industry Vol 57 - No (June 2021) ● Journal of SCIENCE & TECHNOLOGY 63 ... model.predict(rescaledX_test) Bài báo trình bày tốn nhận diện cảm xúc qua giọng nói Trong báo đặt vấn đề tầm quan trọng việc nhận diện cảm xúc qua giọng nói từ đưa phương án giải quyết.Các bước để thực... w2, w3 Với giọng nói ta tính thơng số cảm xúc giọng nói (i) yˆ i σ(w0 w1 x1(i) w2 x(i) w x ) sau so sánh với 3 thơng số cảm xúc đặc trưng (Labels) từ ta biết cảm xúc going nói cần chuẩn... mơ hình Kết phương pháp đạt độ xác cao so với số phương pháp làm trước Hướng phát triển nghiên cứu tối ưu thuật tốn nhận diện cảm xúc qua giọng nói phát triển nhiều ứng dụng thực tế chatbot, nhận