Trên cơ sở nghiên cứu lý thuyết về hệ thống nhận dạng cảm xúc của người nói mục tiêu mà học viên đề ra trong khi thực hiện luận văn này là:
- Tìm hiểu và đề ra phương pháp để xây dựng được module huấn luyện phục vụ cho nhận dạng giới tính, nhận dạng cảm xúc của người nói.
- Nghiên cứu, thử nghiệm các phương án lựa chọn số thành phần Gaussian trong mô hình GMM để hệ thống nhận dạng đạt kết quả tốt.
- Xây dựng mô hình nhận dạng giới tính, nhận dạng cảm xúc của người nói dựa trên 2 tiêu chí: người nói đã được huấn luyện trong hệ thống và người nói chưa được huấn luyện trong hệ thống.
Các chương tiếp theo của luận văn sẽ đề cập đến các bước cần phải thực hiện và công cụ sử dụng để đạt được mục tiêu trên.
CHƢƠNG 2: PHƢƠNG PHÁP THỰC HIỆN VÀ CÔNG CỤ SỬ DỤNG
2.1. Phƣơng pháp thực hiện đề tài
Trên cơ sở nghiên cứu lý thuyết, tìm hiểu về nhận dạng giới tính, cảm xúc người nói, phương pháp thực hiện đề tài được lựa chọn cụ thể như sau:
- Đặc trưng được sử dụng để nhận dạng giới tính, cảm xúc là đặc trưng MFCC. - Mô hình sử dụng huấn luyện giới tính, cảm xúc là mô hình GMM.
- Công cụ sử dụng: máy ảo Vmware, môi trường Linux, hệ điều hành CentOS, ALIZE, gói thư viện LIA-RAL, công cụ Spro, ngôn ngữ lập trình Python.
- Dữ liệu thử nghiệm: Cơ sở dữ liệu cảm xúc tiếng Đức (EMO-DB), cơ sở dữ liệu cảm xúc tiếng Việt (VEMO-DB).
- Các cảm xúc được nhận dạng
+ Cơ sở dữ liệu cảm xúc tiếng Đức gồm 7 cảm xúc: Tức giận (Anger -W), vui (Happiness/joy - F), buồn (sadness -T), Trung lập (Neutral- N), chán nản (Boredom- L), ghê tởm (Disgust-E) và sợ hãi (Anxiety/fear -A).
+ Cơ sở dữ liệu cảm xúc tiếng Việt gồm 4 cảm xúc: Tức giận (Anger -W), vui (Happiness/joy - F), buồn (Sadness -T), Trung lập (Neutral- N).
- Các thử nghiệm được thực hiện: thử nghiệm nhận dạng giới tính, thử nghiệm nhận dạng cảm xúc trên tập dữ liệu cảm xúc của nam, thử nghiệm nhận dạng cảm xúc trên tập dữ liệu cảm xúc của nữ, thử nghiệm nhận dạng cảm xúc trên tập dữ liệu của nam và nữ. So sánh kết quả và đưa ra kết luận.
Trên cơ sở lựa chọn phương pháp thực hiện đề tài, các phần tiếp theo của luận văn sẽ trình bày tóm tắt về phương pháp trích chọn đặc trưng MFCC, mô hình GMM, cách cài đặt cũng như chức năng của công cụ sử dụng trong luận văn.
Nội dung của chương này sẽ trình bày các vấn đề sau: - Phương pháp thực hiện đề tài
2.2. Trích chọn đặc trƣng MFCC
Trích chọn đặc trưng MFCC là phần quan trọng nhất trong bước xử lý tín hiệu, đồng thời cũng là một trong những khâu có vai trò quyết định tới độ chính xác đạt được của hệ thống. Đầu vào của quá trình trích chọn đặc trưng là một đoạn tín hiệu tiếng nói và đầu ra là một tập gồm 39 giá trị đặc trưng cho mỗi một frame tiếng nói. Trích chọn đặc trưng MFCC gồm các bước được mô tả trong hình 2.1
Hình 2.1: Các bước trích chọn đặc trưng MFCC Để trích chọn đặc trưng MFCC các bước thực hiện cụ thể như sau:
- Bộ lọc hiệu chỉnh (Pre-emphasis): là bộ lọc số bậc thấp để cho phổ đồng đều hơn, như vậy sẽ làm giảm ảnh hưởng gây ra bởi độ chính xác hữu hạn của các phép xử lý tín hiệu sau này.
+ Đầu vào của bộ lọc hiệu chỉnh: tín hiệu tiếng nói, ký hiệu s(n)
+ Đầu ra của bộ lọc hiệu chỉnh: tín hiệu tiếng nói với phổ đồng đều hơn, ký hiệu s2(n)
Tín hiệu ra có quan hệ với tín hiệu vào theo phương trình sai phân sau: s2 (n) = s(n) – a. s(n-1) Trong đó: a là hằng số và 0.9 <a<1.0 Bộ lọc hiệu chỉnh Phân khung Lấy cửa sổ FFT Gắn trọng số DCT Các băng lọc tam giác Tín hiệu tiếng nói Đạo hàm theo thời gian 12 MFCC 1 erergy 12MFCC 12MFCC 1 energy 1 energy
Tín hiệu tiếng nói đầu vào s(n)
Tín hiệu tiếng nói sau khi lọc hiệu chỉnh với a = 0.95
Hình 2.2: Minh họa một đoạn tín hiệu tiếng nói trước và sau khi lọc hiệu chỉnh - Phân khung (Frame Blocking): chia tín hiệu tiếng nói thành các đoạn nhỏ cỡ 10-30ms. Tín hiệu tiếng nói đã được hiệu chỉnh được phân thành các khung mỗi khung có N mẫu, hai khung kề nhau lệch nhau M mẫu. Khung đầu tiên chứa N mẫu, khung thứ hai bắt đầu chậm hơn khung thứ nhất M mẫu và chờm lên khung thứ nhất N-M mẫu
- Lấy cửa sổ: là lấy cửa sổ (windowing) cho mỗi khung hình riêng rẽ, để giảm thiểu tính gián đoạn tại điểm đầu và điểm cuối của mỗi khung.
- Biến đổi Fourier rời rạc: là chuyển đổi tín hiệu tiếng nói trong từng frame sang miền tần số thông qua phép biến đổi Fourier rời rạc, phép biến đổi Fourier nhanh (FFT) thường được sử dụng để đảm bảo tốc độ. Sau khi tính FFT ta sẽ thu được phổ năng lượng.
- Các băng lọc tam giác: sử dụng để biến đổi phổ tín hiệu thu được sau khi tính FFT sang thang Mel trên miền tần số. Cho phổ năng lượng đi qua một dãy băng lọc
ta sẽ thu được một dãy phổ năng lượng, tính tổng của các phổ năng lượng trong từng băng lọc ta thu được dãy các hệ số mk.
- Biến đổi Cosine rời rạc (DCT): sẽ chuyển log các giá trị mk về miền thời gian và kết quả của phép biến đổi này ta thu được các hệ số MFCC. Trong các ứng dụng nhận dạng tiếng nói người ta thường lấy 12 hệ số MFCC và thêm 1 hệ số năng lượng của khung sau khi đã được chuẩn hóa.
- Gắn trọng số: Đối với các tham số đặc trưng tiếng nói được tính từ miền tần số như các hệ số MFCC, do độ nhạy của các hệ số Cepstral bậc thấp làm cho phổ toàn bộ đị đổ dốc và độ nhạy của các hệ số Cepstral bậc cao gây ra nhiễu, nên người ta thường sử dụng cửa sổ Cepstral để cực tiểu hóa các độ nhạy này.
- Đạo hàm theo thời gian: đạo hàm theo thời gian của các hệ số MFCC vào trong vector tham số tiếng nói để nâng cao chất lượng nhận dạng.
Kết thúc bước trích chọn đặc trưng MFCC với mỗi frame ta thu được một vector có 39 giá trị biểu diễn tham số đặc trưng của tiếng nói.
2.3. Mô hình GMM sử dụng trong nhận dạng giới tính, cảm xúc của ngƣời nói
Mô hình hợp Gauss (Gaussian Mixture Model - GMM) là một dạng mô hình thống kê được xây dựng từ việc huấn luyện các tham số thông qua dữ liệu học. Về cơ bản, mô hình GMM xấp xỉ một hàm mật độ xác suất bằng hợp các hàm mật độ Gauss.
Hình 2.3 minh họa hai hàm mật độ Gauss với các tham số khác nhau.
Hàm mật độ xác suất của phân phối Gauss fN(x, μ, σ2) được cho bởi công thức: 2 2 1 ( ) ( ) exp 2 2 x p x (1.1)
Trong đó: μ là giá trị trung bình, σ là độ lệch chuẩn.
Trong trường hợp x là vector gồm D thành phần, hàm mật độ xác suất của phân phối Gauss fN(x, μ, Σ) được cho bởi công thức:
' 1 / 2 1/ 2 1 1 ( ) exp ( ) ( ) (2 )D | | 2 p x x x (1.2)
Trong đó: μ là vector trung bình, Σ là ma trận hiệp phương sai.
Nếu chọn μ=0 và σ=1, công thức (1.1) sẽ trở thành hàm mật độ chuẩn Gauss: 2 1 ( ) exp 2 (2 ) x p x (1.3)
Cho trước M phân phối Gauss p1, p2, …, pM, hàm mật độ xác suất của mô hình GMM được minh họa trong hình 3.4
Hình 2.4: Mô hình GMM
Hàm mật độ xác suất của mô hình GMM trong hình 2.4 chính là tổng trọng số của M phân phối Gauss theo công thức:
1 ( ) ( ) M GMM i i i P x w p x (1.4)
Trong đó:
- wi là trọng số của phân phối Gauss thứ i, thỏa ràng buộc 0≤ wi ≤1 và
∑ wi
Các trọng số này thể hiện mức độ ảnh hưởng của mỗi phân phối Gauss đối với mô hình GMM. Như vậy, phân phối Gauss có phương sai và trọng số lớn bao nhiêu thì có mức độ ảnh hưởng lớn bấy nhiêu đối với kết xuất của mô hình.
Trong hướng tiếp cận mô hình GMM để giải quyết bài toán nhận dạng giới tính của người nói mỗi giới tính sẽ được mô hình hóa bằng một mô hình GMM và bộ tham số λ = { wi, μi, Σi }, i ∈ [1, M] sẽ được xác định thông qua việc huấn luyện trên tập mẫu học.
Đối với hướng tiếp cận mô hình GMM để giải quyết bài toán nhận dạng cảm xúc của người nói mỗi cảm xúc sẽ được mô hình hóa bằng một mô hình GMM và bộ tham số λ = { wi, μi, Σi }, i ∈ [1, M] sẽ được xác định thông qua việc huấn luyện trên tập mẫu học.
2.4. Bộ công cụ ALIZE và LIA-RAL
ALIZE là một thư viện hỗ trợ trong lĩnh vực nhận dạng tự động người qua giọng nói sử dụng mô hình GMM. ALIZE được phát triển từ một hệ thống có sẵn tại KTH (Kungliga Tekniska högskolan - Royal Institute of Technology), gọi là GIVES (General Identity Verification System).
Gói LIA-RAL được xây dựng trên thư viện ALIZE nên không thể sử dụng chỉ LIA-RAL mà phải sử dụng các gói cùng nhau.
Ngôn ngữ được dùng để phát triển ALIZE là C++ theo hướng đối tượng UML. ALIZE là phần mềm mã nguồn mở miễn phí, có thể dowload tại địa chỉ:
http://mistral.univ-avignon.fr/download_en.html. Với 2 gói: gói ALIZE 2.0 có kích thước : 1.028MB và gói LIA – RAL2.0 có kích thước: 9.761MB
Yêu cầu về phần mềm khi sử dụng ALIZE và LIA-RAL:
- Môi trường Linux, nếu muốn sử dụng trên Window thì cần cài đặt môi trường chạy lệnh UNIX sử dụng công cụ công cụ CYGWIN. CYGWIN là công cụ miễn phí có thể tải trên mạng ở địa chỉ http://www.cygwin.com/ .
- Đối với các bước biên dịch thì cần sử dụng g++.
Luận văn sử dụng bộ công cụ ALIZE và LIA-RAL trên môi trường Linux, cài máy ảo phiên bản VMware Workstation v9.0.1 (710MB) và hệ điều hành sử dụng là CentOS6.4 (4.58GB).
Khi sử dụng ALIZE và LIA-RAL trong bài toán nhận dạng cần phải cài đặt thêm bộ công cụ SPro để sử dụng trong khâu trích chọn đặc trưng.
2.5. Bộ công cụ SPro
SPro là một bộ công cụ cung cấp các lệnh thực thi các thuật toán trích chọn đặc trưng tiếng nói trong các ứng dụng nhận dạng tiếng nói.
SPro có các lệnh chính sau đây: - Năng lượng filter – bank
- Hệ số cepstral (filter-bank và dự đoán tuyến tính)
Các thư viện được viết trong ANSI C, cung cấp các chức năng sau: - Tín hiệu đầu vào dạng sóng
- Xử lý tín hiệu ở mức thấp (FFT, phân tích LPC,..)
Spro được sử dụng trên nền Linux, SPARC/SunOS và HP-UX. Có thể dowload Spro phiên bản SPro4.0.1, dung lượng 1.3M tại địa chỉ:
http://www.irisa.fr/metiss/guig/spro/spro-4.0.1/.
2.6. Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một dự án mã mở của tổ chức phi lợi nhuận Python Software Foundation.
Python là một ngôn ngữ lập trình hướng đối tượng rất thông dụng dùng để viết các tiện ích hệ thống và các đoạn mã trên Internet. Nó cũng được sử dụng như ngôn ngữ kết dính đóng vai trò tích hợp C và C++.
Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu.
Python được sử dụng hệ điều hành từ DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Có thể download Python 3.0 tại địa chỉ: http://www.python.org.
Đặc điểm của Python: là một ngôn ngữ dễ học, mã nguồn dễ đọc, bố cục trực quan, dễ hiểu, thể hiện qua các điểm sau:
- Từ khóa: tăng cường sử dụng từ khóa tiếng anh, hạn chế các kí hiệu và cấu trúc cú pháp so với các ngôn ngữ khác. Python là một ngôn ngữ phân biệt kiểu chữ hoa, chữ thường, các từ khóa đều ở dạng chữ thường.
- Khối lệnh: Python có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh cha chứa nó.
2.7. Sử dụng các bộ công cụ và ngôn ngữ lập trình cho các bƣớc của bài toán nhận dạng giới tính, cảm xúc của ngƣời nói
Bài toán nhận dạng giới tính, cảm xúc của người nói sử dụng ALIZE, LIA- RAL và SPro gồm các bước cụ thể được mô tả trong hình 2.5.
Hình 2.5: Sơ đồ khối các bước thực hiện nhận dạng giới tính, cảm xúc của người nói sử dụng ALIZE
Hình 2.5 mô tả các bước thực hiện nhận dạng giới tính, cảm xúc của người nói sử dụng ALIZE và LIA-RAL, trong mỗi bước chính sẽ có các bước nhỏ và có công cụ tương ứng để thực hiện. Trích chọn đặc trưng và chuẩn hóa đặc trưng Huấn luyện mô hình Tính kết quả nhận dạng Huấn luyện Nhận dạng
2.7.1.1. Trích chọn và chuẩn hóa đặc trƣng
Các bước và công cụ liên kết tại mỗi bước thực hiện trích chọn, chuẩn hóa đặc trưng sử dụng ALIZE được trình bày trong hình 2.6.
Hình 2.2: Sơ đồ các bước và công cụ liên kết tại các bước thực hiện trích chọn, chuẩn hóa đặc trưng
Hình 2.6 mô tả các bước và công cụ liên kết tại các bước thực hiện trích chọn và chuẩn hóa đặc trưng
Để thực hiện trích chọn và chuẩn hóa đặc trưng hệ thống sẽ thực hiện các bước như sau: Trích chọn đặc trưng MFCC, Dò năng lượng, loại bỏ khoảng lặng và chuẩn hóa các đặc trưng.
a. Trích chọn đặc trưng MFCC Hình 2.7: Sơ đồ trích chọn đặc trưng MFCC *.wav *.prm sfbcep Trích chọn đặc trưng MFCC sfbcep Dò năng lượng NormFeat (Energy) Loại bỏ khoảng lặng EnergyDetector Chuẩn hóa đặc trưng NormFeat
Hình 2.7 mô tả sơ đồ thực hiện của bước trích chọn đặc trưng MFCC. Để thực hiện trích chọn đặc trưng thì yêu cầu đầu vào, câu lệnh thực hiện và đầu ra cụ thể như sau:
- Đầu vào: file âm thanh có định dạng *.wav, các file âm thanh này được lưu trong thư mục input.
- Đầu ra: file chứa các đặc trưng tín hiệu tiếng nói của từng file âm thanh, có định dạng *.prm và các file này được lưu trong thư mục prm.
- Câu lệnh thực hiện: sử dụng câu lệnh sfbcep trong Spro, cấu trúc câu lệnh:
sfbcep [option] inputfile outputfile
Ví dụ:
sfbcep -F PCM16 -f 16000 -p 19 -e -D -A /home/nhung/CSDL/input/03a01Fa.wav /home/nhung/CSDL/prm/03a01Fa.prm
Ý nghĩa của các option lựa chọn trong câu lệnh:
+ F PCM16: sử dụng định dạng hiển thị sóng đầu vào của file là: FCM16 + f 16000: sử dụng tần số cho sóng đầu vào là 16000Hz
+ p 19: có hệ số Cepstral là 19
+ e: sử dụng thêm năng lượng cho véc tơ đặc trưng
+ D: Thêm các dẫn xuất đầu tiên đến các vector đặc trưng + A: Thêm các dẫn xuất thứ hai với các vector đặc trưng. b. Dò năng lượng
Hình 2.8: Sơ đồ bước dò năng lượng
*.lst & *.prm
*.enr.prm NormFeat (Energy)
- Đầu vào:
+ file chứa danh sách các file âm thanh cần tính được loại bỏ phần mở rộng .wav. Tên của mỗi file âm thanh sẽ được lưu trên 1 dòng.
Ví dụ: file all.lst: 03a01Fa 03a01Nc ………..
+ Các file chứa đặc trưng tiếng nói có định dạng *.prm (file đầu ra của bước trích chọn MFCC)
Ví dụ:
03a01Fa.prm 03a01Nc.prm ……….
- Đầu ra: là các hệ số năng lượng tiếng nói đã được chuẩn hóa được lưu trong file có định dạng *.enr.prm và các file này được lưu trong thư mục prm.