5. Nhiệm vụ nghiên cứu
1.3. Huấn luyện âm học
1.3.1. Giới thiệu
Sphinx nhƣ các hệ thống nhận dạng tiếng nói khác, hoạt động dựa trên học những đặc điểm (tham số) của tập hợp các đơn vị âm thanh. Sử dụng những điều đã học để tìm kiếm khả năng xuất hiện của một chuỗi các đơn vị âm thanh trên dữ liệu đầu vào là file âm thanh. Quá trình học hỏi những đơn vị âm thanh đó gọi là huấn luyện. Quá trình huấn luyện này đƣợc thực hiện bằng SphinxTrain.
Còn quá trình sử dụng những dữ liệu (kiến thức) đã có để suy luận một chuỗi các đơn vị tín hiệu gọi là quá trình giải mã hay đơn giản gọi là nhận dạng. Quá trình nhận dạng có thể dùng PocketSphinx hoặc Sphinx4 để thực hiện.
SphinxTrain đọc các tham số từ đƣợc chích chọn từ cơ sở dữ liệu âm thanh, hay còn gọi là “dữ liệu huấn luyện”. SphinxTrain cũng cần phải đƣợc biết những đơn vị âm thanh nào cần đƣợc huấn luyện, vì vậy những đơn vị âm thanh đó phải xuất hiện ít nhất một lần trong tập cơ sở dữ liệu huấn luyện. Những thông tin này đƣợc cung cấp thông qua file phiên âm (transcript file) - nơi mà mô tả chính xác các từ đƣợc xuất hiện trong file âm thanh.
1.3.2. Các bƣớc huấn luyện dùng SphinxTrain
Các bƣớc huấn luyện SphinxTrain đƣợc mô tả bằng sơ đồ sau:
24 Giải thích:
Cài đặt SphinxTrain: có thể cài đặt SphinxTrain trên cả windows lẫn Linux tƣơng đối dễ dàng, đồ án dùng trên môi trƣờng Linux.
Sửa các file cấu hình: chỉ ra các file transcript, định dạng file âm thanh, tham số Gauss..
Cập nhật các thƣ mục wav, ect: copy các file cần thiết nhƣ file âm thanh, transcription vào thƣ mục của SphinxTrain để chạỵ
Tính MFCC: dùng lệnh của sphinx để tính MFCC đây là đầu vào cho các bƣớc tiếp theọ
Huấn luyện HMM: dùng lệnh của Sphinx để tính HMM cho từng âm vị. 1.3.2.1. Cài đặt SphinxTrain
Để cài đặt SphinxTrain trong Linux cần các bƣớc sau:
Phải cài SphinxBase trƣớc, bộ cài đặt có thể download trên website của sourceforgẹnet
o Vào thƣ mục src sau khi giải nén và gõ lênh ./configure để cấu hình.
o Gõ make để biên dịch.
o Gõ make install để cài đặt. Cài Perl
Download SphinxTrain ở
http://sourceforgẹnet/projects/cmusphinx/files/sphinxtrain/1.0.8/
Giải nén file sphinxtrain-1.0.8.tar.gz ./configure
Make
1.3.2.2. Sửa các file cấu hình của SphinxTrain $CFG_WAVFILE_EXTENSION = 'sph'; ==> $CFG_WAVFILE_EXTENSION = 'wav'
25
$CFG_WAVFILE_TYPE = 'nist'; # one of nist, mswav, raw
==> $CFG_WAVFILE_TYPE = 'mswav'; # one of nist, mswav, raw
Trong đề tài này các file mô hình HMM đƣợc kiểm tra với 4 thành phần Gauss là 4, 8, 16, 32. Và phƣơng pháp chọn các thành phần Gauss đƣợc mô tả nhƣ sau:
Sửa file cấu hình \etc\sphinx_train.cfg - Với Gauss= 4: $CFG_FINAL_NUM_DENSITIES = 8; (có sẵn) Sửa thành ==> $CFG_FINAL_NUM_DENSITIES = 4; - Với Gauss= 8: $CFG_FINAL_NUM_DENSITIES = 8; (có sẵn) - Với Gauss= 16: $CFG_FINAL_NUM_DENSITIES = 8; (có sẵn) Sửa thành ==> $CFG_FINAL_NUM_DENSITIES = 16; - Với Gauss= 32: $CFG_FINAL_NUM_DENSITIES = 8; (có sẵn) Sửa thành ==> $CFG_FINAL_NUM_DENSITIES = 32;
1.3.2.3. Cập nhật thƣ mục, file của SphinxTrain
Trong thƣ mục của SphinxTrain sau khi cài đặt có thƣ mục ect, wav. Cần copy các file đã chuẩn bị ở bƣớc trên vào đúng thứ tự sau:
• Thƣ mục ect gồm những file nhƣ sau
o your_db.dic – file từ điển.
o your_db.phone – file chứa các âm vị.
o your_db.lm.DMP – file mô hình ngôn ngữ.
o your_db.filler – các từ nhƣ khoảng lặng(silence, uh, ah).
o your_db_train.fileids – liệt kê những file âm thanh sẽ huấn luyện.
o your_db_train.transcription – chứa nội dung text của những file âm thanh huấn luyện.
26
o your_db_test.fileids – Danh sách những file dùng để test.
o your_db_test.transcription – file text chứa nội dung của những file test. Thƣ mục wav
o speaker_1
file_1.wav o speaker_2
file_2.wav Cấu trúc của các file:
your_db_train.fileids và your_db_test.fileids là các file text, chứa tên các file âm thanh dùng để huấn luyện, mỗi một dòng liệt kê tên thƣ mục và tên filẹ
speaker1/file1 speaker2/file2
File your_db_train.transcription và your_db_test.transcription chứa nội dung các file âm thanh tƣơng ứng trong các file .fileids.
1.3.2.4. Tính MFCC của file âm thanh
MFCC là viết tắt của Mel-Frequency Cepstral Coefficients. Với mỗi âm vị một chuỗi gồm các vectơ 13 chiều sẽ đƣợc sinh rạ
Vào thƣ mục làm việc chạy lệnh:
$ perl ../sphinxtrain/scripts_pl/make_feats.pl -ctl etc/asrvn_train.fileids $ perl ../sphinxtrain/scripts_pl/make_feats.pl -ctl etc/asrvn_test.fileids Các file MFCC sẽ đƣợc tạo ra trong thƣ mục feat
1.3.2.5. Huấn luyện HMM cho các âm vị Sơ đồ huấn luyện nhƣ sau:
27
Hình 2.5.Sơ đồ huấn luyện SphinxTrain
Để huấn luyện dùng lệnh $ perl scripts_pl/RunAll.pl
Sau khi chạy xong tức là quá trình huấn luyện âm học đã xong, và kết quả sẽ lƣu ở thƣ mục model_parameters. Các file trong thƣ mục này có thể sử dụng để nhận dạng các file âm thanh. Các file trong thƣ mục này có ý nghĩa nhƣ sau:
+ File mdef: trình bày về định nghĩa HMM.
+ File means: giá trị trung bình của từng thành phần trong HMM. + File mixture_weights: hệ số của từng thành phần Gauss.
+ File noisedict: dùng để tách biệt giữa các từ.
+ File transition_matrices: ma trận chuyển trạng tháị + File variances: phƣơng saị
Nhìn sơ đồ huấn luyện SphinxTrain ta có thể thấy: chỉ cần tạo MFCC file một lần cho các file âm thanh để sử dụng lại trong các trƣờng hợp thử nghiệm đơn âm, có thanh điệu, đa âm tiết. Làm nhƣ vậy sẽ tiết kiệm đƣợc nhiều thời gian huấn luyện, vì đề tài thực hiện huấn luyện trên một dữ liệu tƣơng đối lớn (29 giờ).