Hình 2.6: Mô hình hệ thống nhận dạng
Một hệ thống nhận dạng lứa tuổi của tiếng Việt nói gồm 2 phần (Hình 2.4). Phần đầu tiên là phần huấn luyện. Phần thứ hai là nhận dạng.
Hình 2.7: Mô hình huấn luyện (Training) Hình 2.8: Mô hình nhận dạng (Test)
Hệ thống nhận dạng 1.Huấn luyện (training) 2.Nhận dạng (test) Test
Âm thanh đầu vào
Trích chọn đặc trưng
Dò tìm năng lượng
Chuẩn hóa năng lượng
Kiểm tra
Kết quả nhận dạng thuộc nhóm tuổi Âm thanh đầu
vào
Trích chọn đặc trưng
Dò tìm năng lượng
Chuẩn hóa năng lượng
Huấn luyện mô hình đích (gmm)
Huấn luyện mô hình nền
Đặc trưng của từng lứa tuổi
19
Quá trình huấn luyện (Hình 2.7): tín hiệu âm thanh của từng lứa tuổi được đưa vào qua một số quá trình xử lý tạo thành kho dữ liệu của hệ thống bao gồm các mô hình thống kê đặc trưng cho từng lứa tuổi.
Quá trình nhận dạng (Hình 2.8): tín hiệu âm thanh được đưa vào qua quá trình xử lý tạo thành dãy các vector đặc trưng được đem so sánh với mô hình thống kê đặc trưng của từng lứa tuổi. Sau đó hệ thống sẽ tính toán sự tương đồng, mô hình thống kê có độ tương đồng cao nhất được cho là kết quả của quá trình nhận dạng.
2.4. Quy trình nhận dạng lứa tuổi ngƣời nói sử dụng ALIZE 2.4.1. Tính tham số MFCC
- Chức năng: Tạo ra các vector đặc trưng từ các tín hiệu tiếng nói, bằng cách sử dụng công cụ sfbcep để tính các tham số MFCC. Điều kiện cần thiết để tạo được tham số MFCC là phải chuẩn hóa các file .wav thành các file .prm.
- Đầu vào là file âm thanh .wav trong thư mục mục con tương ứng với từng lứa tuổi chứa trong Input.
VD: ThieuNien/43ds0050.wav ThanhNien/29kh0757.wav TrungNien/11ox0391.wav
NguoiGia/94kd0871.wav
- Đầu ra là các file .prm trong các thư mục con tương ứng của thư mục prm - Câu lệnh thực hiện
sfbcep -F PCM16 -f 16000 -p 19 -e -D -A input/ThieuNien/60ds0157.wav prm/ThieuNien/60ds0157.prm
- Ý nghĩa của câu lệnh:
+F PCM16 (F: format): sử dụng định dạng hiển thị sóng đầu vào của file wave là: PCM16
+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 (energy): sử dụng thêm năng lượng cho vector đặc trưng
Tính kết quả
nhận dạng
20
+D (delta): Thêm các dẫn xuất đầu tiên đến các vector đặc trưng
+A (acceleration): Thêm các dẫn xuất thứ hai với vector đặc trưng +Inputfile: Đầu vào là đường dẫn đến file tín hiệu âm thanh
- Kết quả : sinh ra file có tên tương ứng và có đuôi là .prm trong từng thư mục con (ThieuNien, ThanhNien, TrungNien, NguoiGia) tương ứng chứa trong thư mục prm.
- Định dạng file kết quả: một chuỗi các vector đặc trưng đại diện cho các đoạn trong tín hiệu lời nói. Đây là các file nhị phân:
Trong thư mục prm/ThieuNien/ 60ds0157.prm
- Để thao tác tính toán được nhanh có thể viết một chương trình tính tham số bằng các câu lệnh của ngôn ngữ python. Chi tiết các câu lệnh được chú thích ở phụ lục B1 trang******
2.4.2. Chuẩn hóa năng lƣợng
- Đầu vào: file lst_all.lst chứa trong thư mục lst, nội dung của file là toàn bộ các file âm thanh (đã được bỏ đuôi .wav) của các lứa tuổi.
ThieuNien/43ds0050 --- ThanhNien/32kd0225 --- TrungNien/11ds0552 --- NguoiGia/94ds0350
- Đầu ra: là file .enr.prm được lưu trong các thư mục con tương ứng chứa trong thư mục prm
- Câu lệnh thực hiện:
NormFeat --config ./cfg/NormFeat_energy.cfg --inputFeatureFilename ./lst/lst_all.lst
21
+ Config: Thực hiện điều khiển các câu lệnh ở tệp NormFeat_energy.cfg trong thư mục cfg
Các giá trị tùy chọn trong tệp NormFeat_energy.cfg
Tùy chọn Giá trị Mô tả
Mode .norm Xác định các loại tiêu chuẩn hóa (Định mức đặc trưng thường là phân bố gaussion trên 1,0)
loadFeatureFileExtension .prm Định dạng phần mở rộng để gọi đặc trưng của file (tương ứng với đầu ra của quá trình trích chọn đặc trưng)
saveFeatureFileExtension .enr.prm Định dạng phần mở rộng để lưu đặc trưng của file
featureFilesPath ./prm/ Định dạng đường dẫn để lưu và gọi đặc trưng của file
vectSize 60 Xác định kích thước của các đặc trưng writeAllFeatures True Khi thiết lập đúng, tất cả các tính năng
về tập tin ban đầu được ghi
+ inputFeatureFilename: Tên của các file cần làm việc, có thể là một danh sách, có phần mở rộng .lst (./lst/lst_all.lst:)
- Kết quả: Sinh ra các file chứa đuôi .enr.prm prm được lưu lần lượt trong các thư mục con ThieuNien, ThanhNien, TrungNien, NguoiGia của thư mục prm.
- Định dạng file kết quả: là các file nhị phân Trong thư mục prm/ThieuNien/
01ds0224.enr.prm 01ds0314.enr.prm
3.4.3. Phát hiện năng lƣợng trên các tín hiệu
- Chức năng: Thực tế một tập tin không thể chứa toàn dữ liệu lời nói, có những khúc ngập ngừng, do dự và nhiễu môi trường xen lẫn vào. Để tránh việc huấn luyện
22
(training) và nhận dạng (testing) trên những véc tơ đặc trưng không có lời nói, nên phải tiến hành dò tìm năng lượng (Energy Detecting). Việc dò tìm này phân đoạn tập tin thành một hoặc nhiều đoạn con, mỗi đoạn con được đánh nhãn là lời nói (speech) hay không phải lời nói (not speech)
- Đầu vào: file lst_all.lst (giống đầu vào ở mục 3.5.2)
- Đầu ra: file .lbl được lưu trong các thư mục con tương ứng nằm trong thư mục lbl
- Sử dụng câu lệnh:
EnergyDetector --config ./cfg/EnergyDetector.cfg --inputFeatureFilename ./lst/lst_all.lst --verbose true --debug false
- Ý nghĩa của câu lệnh như sau:
+ Config: Thực hiện điều khiển các câu lệnh ở tệp EnergyDetector.cfg trong thư mục cfg
Các giá trị tùy chọn trong tệp EnergyDetector.cfg.
Tùy chọn Giá trị Mô tả
loadFeatureFileExtension .enr.prm Định dạng phần mở rộng để gọi đặc trưng của file (tương ứng với đầu ra của quá trình chuẩn hóa năng lượng)
labelOutputFrames. Speech Nhãn ảnh hưởng đến khung được chọn saveLabelFileExtension .lbl Lưu trữ các file mở rộng
labelFilesPath ./lbl/ Xác định đường dẫn lưu trữ file
Alpha 0.0 Tỷ lệ khung hình được chọn trong Gaussion trung tâm
nbTrainIt 8 Số bước lặp của EM để ước lượng năng lượng phân phối
baggedFrameProbabilityInit 0.001 Xác định tỷ lệ giữa các khung hình được lựa chọn và tổng số các khung được sử dụng để khởi tạo
- Kết quả: Sinh ra các file chứa đuôi .lbl được lưu lần lượt trong các thư mục con ThieuNien, ThanhNien, TrungNien, NguoiGia của thư mục lbl
23 VD: Trong thư mục lbl/ThieuNien
0.29 0.52 speech 1.25 1.59 speech 2.63 3.12 speech 4.38 4.52 speech 4.86 4.98 speech ---
Từ giây 0.0 đến giây thứ 0.28 là khoảng lặng Từ giây thứ 0.29 đến giây thứ 0.52 là tiếng nói Từ giây 0.53 đến giây thứ 1.24 là khoảng lặng Từ giây thứ 1.25 đến giây thứ 1.59 là tiếng nói ---
Hình 2.9 mô tả về phát hiện tiếng nói trong tín hiệu đầu vào.
Hình 2.9: Phát hiện tiếng nói
2.4.4. Chuẩn hóa các thông số của tín hiệu - Đầu vào: file lst_all.lst (giống đầu vào ở mục 3.5.2) - Đầu vào: file lst_all.lst (giống đầu vào ở mục 3.5.2)
- Đầu ra: là file .norm.prm được lưu trong các thư mục con tương ứng nằm trong thư mục prm
- Sử dụng câu lệnh:
NormFeat --config ./cfg/NormFeat.cfg --inputFeatureFilename ./lst/lst_all.lst - Ý nghĩa của câu lệnh:
+ Config: Thực hiện điều khiển các câu lệnh ở tệp NormFeat.cfg trong thư mục cfg
24
Tùy chọn Giá trị Mô tả
saveFeatureFileExtension .norm.prm Xác định định dạng để lưu file featureFilesPath ./prm/ Định dạng đường dẫn để lưu file
loadFeatureFileExtension .prm Định dạng phần mở rộng để gọi đặc trưng của file (tương ứng với đầu ra của quá trình chuẩn hóa năng lượng)
labelSelectedFrames Speech Lựa chọn nhãn làm việc (tương ứng với đầu ra của quá trình phát hiện năng lượng tiếng nói trên các tín hiệu)
- Kết quả: Sinh ra các file chứa đuôi .norm.prm được lưu lần lượt trong các thư mục con ThieuNien, ThanhNien, TrungNien, NguoiGia của thư mục prm
- Định dạng file kêt quả là các file nhị phân
Trong thư mục prm/ThieuNien/ 01ds0224.norm.prm 01ds0314.norm.prm
2.4.5. Huấn luyện mô hình tổng quát (TrainWorldInit)
- Chức năng để tạo ra một mô hình chung nhất của tất cả các lứa tuổi người nói. Mô hình này được lựa chọn từ một số lứa tuổi người nói sau đó huấn luyện một mô hình duy nhất được gọi là mô hình nền.
- Đầu vào: file World.lst và file world.weight
+ world.weight: file trọng số, mỗi file lưu một dòng có chỉ số: 0.5. Có 4 lứa tuổi
tương ứng lưu 4 dòng. Ví dụ: 0.5 0.5 0.5 0.5
25
- World.lst: nội dung của các file này là chỉ đường dẫn đến tất cả tên file của các lứa
tuổi người nói đã được huấn luyện. Mỗi một thử nghiệm chia làm 2 tập đảo nhau (1 train và 1 test), như vậy sẽ có tất cả 6 file world.lst tương ứng.
VD: file ANam_world.lst chứa nội dung: ./lst/test1/trainAThieuNien_Nam.lst ./lst/test1/trainAThanhNien_Nam.lst ./lst/test1/trainATrungNien_Nam.lst ./lst/test1/trainANguoiGia_Nam.lst
- Đầu ra: file world_init.gmm, world_initinit.gmm trong các thư mục test chứa trong thư mục gmm
- Sử dụng câu lệnh:
TrainWorld --config ./cfg/TrainWorldInit1.cfg --inputStreamList ./lst/test1/ANam_world.lst --weightStreamList ./lst/world.weight -- outputWorldFilename test1/ANam_world_init --debug false --verbose true
- Ý nghĩa của câu lệnh như sau:
+ TrainWorld: học mô hình GMM thông qua thuật toán EM
+ Config: Thực hiện điều khiển các câu lệnh ở tệp TrainWorldInit1.cfg trong thư mục cfg
Các giá trị tùy chọn trong tệp TrainWorldInit1.cfg
Tùy chọn Giá trị Mô tả
distribType GD Xác định kiểu của thuộc tính
mixtureDistribCount 8 Xác định số thuộc tính gausion trong hỗn hợp
saveMixtureFileExtension .gmm Định dạng để lưu thuộc tính loadFeatureFileExtension .norm.prm Định dạng đầu vào của file
baggedFrameProbability 0.2 Xác định tỷ lệ giữa các khung được lựa chọn và tổng số các khung được sử dụng để huấn luyện
26
chọn và tổng số các khung được sử dụng để khởi tạo.
nbTrainIt 10 Số lần lặp của EM liên quan đến baggedFrameProbabilityInit
featureServerMask 0-18,20- 50
Được sử dụng để chọn một tập hợp các đặc trưng trong vecttor
- Kết quả sinh ra 2 file: ANam_world_init.gmm, ANam_world_initinit.gmm trong thư mục gmm
2.4.6. Huấn luyện mô hình đích (TrainWorldFinal)
- Đầu vào: file world.lst và file world.weight (giống đầu vào của mục 3.5.5) - Đầu ra: file world.gmm
- Sử dụng câu lệnh:
TrainWorld --config ./cfg/TrainWorldFinal.cfg --inputStreamList ./lst/test1/ANam_world.lst --weightStreamList ./lst/world.weight -- outputWorldFilename test1/ANam_world --inputWorldFilename test1/ANam_world_init --debug false --verbose true.
- Ý nghĩa của câu lệnh:
+ TrainWorld: học mô hình GMM thông qua thuật tán EM
+ Config: Thực hiện điều khiển các câu lệnh ở tệp TrainWorldFinalB.cfg trong thư mục cfg
Các giá trị tùy chọn trong tệp TrainWorldFinal.cfg
Tùy chọn Giá trị Mô tả
baggedFrameProbab
ility 0.1
Xác định tỷ lệ giữa các khung được lựa chọn và tổng số các khung được sử dụng để thích ứng nbTrainIt 5 Số lần lặp EM liên quan tới
baggedFrameProbability
27
baggedFrameProbability
targetIdList ndx
Danh sách đầu vào: mô hình trên cột đầu tiên, nhập vào tên tập tin đặc trưng về những người khác nhau
- Kết quả: Sinh ra file BNam_world.gmm trong thư mục gmm/test1
2.4.7.Huấn luyện mô hình GMM cho từng lứa tuổi ngƣời nói
- Chức năng: Một khi mô hình nền đã được tạo, chương trình được dùng để thích nghi mô hình nền tới từng mô hình lứa tuổi người nói.
- Đầu vào: file NguoiNoi.ndx
Các file .ndx này chứa chính nội dung của file trainluatuoinoi.lst nhưng nội dung được ghi trên một dòng (bỏ lứa tuổi ở đầu mỗi dòng chỉ có tên các file âm thanh), có khoảng cách giữa các file và có định dạng tên file ndx tương ứng_gmm đầu của mỗi dòng.
VD: file CSDLAThieuNien_Nam.ndx sẽ có dạng như sau
CSDLBTrungNien_Nu_gmm 35ds0005 35ds0063 35ds0084 35ds0112 35ds0252 35ds0341 35ds0412 35ds0432 35ds0447 35ds0542 35ds0552 35ds0650 ….
- Đầu ra: file NguoiNoi_gmm.gmm - Câu lệnh thực hiện
TrainTarget --config ./cfg/target_ThieuNien.cfg --targetIdList ./ndx/CSDLAThieuNien_Nam.ndx --inputWorldFilename world --debug false -- verbose true
Mỗi một lứa tuổi được chia dữ liệu làm 2 tập, nên để chạy mỗi lần thử nghiệm khác nhau ta sẽ có 8 câu lệnh tương ứng.
- Ket qua: Sinh ra file
CSDL_AThieuNien_Nam_gmm.gmm, CSDL_AThanhNien_Nam_gmm.gmm, CSDL_ATrungNien_Nam_gmm.gmm, CSDL_ANguoiGia_Nam_gmm.gmm
2.4.8. Nhận dạng
28
+ Đầu vào là tổng hợp các file âm thanh có đuôi là .lst Ví dụ: allAnam, allBnam…
+ Đầu ra là các file test lứa tuổi người nói có định dạng là: tetstSpeaker_lứa tuổi người nói.ndx
Ví dụ: testSpeakerAnam.ndx… + Thực hiện
Để chạy cho nhiều một người nói với nhiều file khác nhau. Nên có thể viết chương trình testSpeaker bằng ngôn ngữ Python. Với 3 lần thử nghiệm thì có 6 chương trình testspeaker khác nhau. Chi tiết chương trình testSpeaker được trích dẫn trong phụ lục B trang………..
+ Kết quả: tạo ra file testSpearker.ndx với định dạng là giống file âm thanh đầu vào .lst của mỗi lứa tuổi và có thêm 4 cơ sở dữ liệu_gmm ở đằng sau các file đó.
ThieuNhi/92ds0084 CSDLBThieuNhi_Nam_gmm CSDLBThanhNien_Nam_gmm CSDLBTrungNien_Nam_gmm CSDLBNguoiGia_Nam_gmm
Mục đích của chương trình tạo ra các file testSpeaker để làm đầu vào cho quá trình nhận dạng.
- Bước 2:
+ Chức năng: Từ mô hình nền, mô hình lứa tuổi người nói và đoạn âm thanh của lứa tuổi người nói cần nhận dạng, chương trình ComputerTest của Lia-ral cho ra các tập tin chứa điểm của đoạn âm thanh cần nhận dạng (test) so với mô hình lứa tuổi người nói. Các tập tin điểm đầu ra có thể chứa nhiều dòng, mỗi dòng tương ứng một tập tin âm thanh đầu vào.
+ Đầu vào là file testSpeaker vừa tạo ra ở bước 1 + Đầu ra là các file
ComputeTest --config cfg/target_all_male.cfg --ndxFilename ndx/testSpeakerANam.ndx --outputFilename ketqua/A_Nam.res -- inputWorldFilename world --topDistribsCount 2
Ý nghĩa của câu lệnh:
29
Tùy chọn Giá trị Mô tả
topDistribsCount 10 Số Gaussians sử dụng để tính toán điểm số
computeLLKWithTopDistribs COMPLETE Tính toán với phân phối đầu vào
Gender M Giới tính của tập tin ndx
loadMixtureFileExtension .gmm Xác định phần mở rộng để gọi mô hình
loadFeatureFileExtension .norm.prm Xác định phần mở rộng để gọi đặc trưng
mixtureFilesPath ./gmm Xác định đường dẫn để gọi hỗn hợp outputFile test1.res Kết quả điểm số tập tin
- Kết quả: sinh ra các file có đuôi .res, các file này sẽ ghi ra điểm số tương ứng của các lứa tuổi người nói. Điểm số của lứa tuổi nào lớn nhất trong N lứa tuổi người nói chính là lứa tuổi mà hệ thống cho ra kết quả cần tìm.
Ví dụ kết quả nhận dạng với giới tính là Nam tập A: A_Nam.res như sau: M CSDLAThieuNien_Nam_gmm 1 ThieuNien/43ds0050 0.0165886 M CSDLAThanhNien_Nam_gmm 0 ThieuNien/43ds0050 -0.0812328 M CSDLATrungNien_Nam_gmm 0 ThieuNien/43ds0050 -0.0738776 M CSDLANguoiGia_Nam_gmm 0 ThieuNien/43ds0050 -0.0422341 M CSDLAThieuNien_Nam_gmm 1 ThieuNien/43ds0068 0.174086 M CSDLAThanhNien_Nam_gmm 0 ThieuNien/43ds0068 -0.0702004 M CSDLATrungNien_Nam_gmm 0 ThieuNien/43ds0068 -0.19408 M CSDLANguoiGia_Nam_gmm 0 ThieuNien/43ds0068 -0.0675049 ……….
Nhìn vào kết quả trên ta thấy điểm số của từng file âm thanh được ghi ở cuối cùng trong từng lứa tuổi một. Ở file âm thanh 43ds0050 cho điểm số của từng lứa tuổi như sau: lứa tuổi thiếu niên là 0.0165886, thanh niên là -0.0812328, trung niên là - 0.0738776, người già là -0.0422341. Vậy file âm thanh 43ds0050 thuộc file âm
30
thanh của lứa tuổi thiếu niên vì điểm số của lứa tuổi này là cao nhất so với các điểm số của các lứa tuổi khác max(0.0165886, -0.0812328, -0.0738776, -0.0422341) = 0.0165886. Tương tự như vậy với file âm thanh 43ds0068 cho kết quả điểm số lớn nhất max(0.174086, -0.0702004, -0.19408, -0.0675049)= 0.174086 đây là điểm số của lứa tuổi thiếu niên nên file âm thanh này cho kết quả nhận dạng đúng là lứa tuổi thiếu niên.
2.5. Phân tích đánh giá kết quả
2.5.1. Kết quả của thử nghiệm với cơ sở dữ liệu không đồng đều: