Tìm hiểu về hệ thống nhận dạng tiếng nói. Tìm hiểu phương pháp trích chọn các tham số đặc trưng cần thiết cho bài toán nhận dạng tiếng nói. Tìm hiểu về mô hình GMM và hoạt động của bộ công cụ Kaldi, các gói thư viện, ngôn ngữ lập trình Python. Xây dựng thử nghiệm hệ thống nhận dạng tiếng Việt nói trên nền bộ công cụKaldi có tích hợp mạng nơ ron sâu.. Thử nghiệm hệ thống với cơ sở dữ liệu tiếng Việt. Trên cơ sở kết quả thử nghiệm phân tích đánh giá hệ thống.
LỜI CAM ĐOAN Tôi – Nguyễn Thị Thanh, học viên lớp cao học 13BCNTT2 Trường Đại học Bách khoa Hà Nội cam kết: Luận văn tốt nghiệp cơng trình nghiên cứu thân hướng dẫn TS Nguyễn Hồng Quang – Viện Công nghệ Thông tin Truyền thông- Đại học Bách khoa Hà Nội Các kết luận văn tốt nghiệp trung thực, khơng chép tồn văn cơng trình khác Hà Nội, ngày 25 tháng 10 năm 2016 Học viên: Nguyễn Thị Thanh Lớp: 13BCNTT2 i LỜI CẢM ƠN Tơi xin bày tỏ lịng biết ơn sâu sắc tới Thầy giáo, TS Nguyễn Hồng Quang – Bộ mơn Kỹ thuật Máy tính – Viện Cơng nghệ Thơng tin Truyền thông – Đại học Bách Khoa Hà Nội, người thầy hết lòng giúp đỡ, dạy bảo, động viên tạo điều kiện thuận lợi cho tơi suốt q trình học tập hồn thành luận văn tốt nghiệp Tôi xin chân thành cảm ơn tập thể Thầy, Cô giáo trường Đại học Bách khoa Hà Nội nói chung Viện Cơng nghệ Thơng tin Truyền thơng nói riêng tận tình giảng dạy truyền đạt cho kiến thức, kinh nghiệm quý báu suốt thời gian học tập trường ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN .ii MỤC LỤC iii DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ vii DANH MỤC CÁC BẢNG ix DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ x MỞ ĐẦU Chương I CƠ SỞ LÝ THUYẾT 1 Tổng quan mạng Nơ ron sâu 1.1.1 Mô tả Nơ–ron sinh học [16] 1.1.2 Mạng Nơ–ron nhân tạo (ANN) 1.1.2.1 Cấu trúc mạng Nơ ron nhân tạo 1.1.2.2 Mạng phân lớp 1.1.2.3 Ứng dụng mạng Nơ ron nhân tạo 1.1.3 Lĩnh vực học sâu 1.1.3.1 Perceptrons: Thuật toán học sâu sơ khai 1.1.3.2 Mạng Nơ ron truyền thẳng cho việc học sâu 12 1.1.3.3 Một số khái niệm học sâu [17] 21 1.1.3.4 Lịch sử lĩnh vực học sâu 23 1.1.3.5 Học sâu mạng Nơ ron nhân tạo [16] 26 1.1.3.6 Các kiến trúc học sâu 29 1.1.4 Mạng Nơ ron sâu 29 1.1.4.1 Tổng quan mạng Nơ ron sâu 29 iii 1.1.4.2 Mạng nơ ron sâu cho mơ hình âm học nhận dạng tiếng nói[12]29 1.1.4.3 Huấn luyện mạng Nơ ron sâu [13] 31 1.2 Hệ thống nhận dạng tiếng nói [20] 36 1.2.1 Cấu trúc hệ thống nhận dạng tiếng nói 37 1.2.2 Phân loại hệ thống nhận dạng tiếng nói 38 1.2.3 Các phương pháp nhận dạng tiếng nói 39 1.2.4 Các ứng dụng nhận dạng tiếng nói 41 Chương II PHƯƠNG PHÁP THỰC HIỆN VÀ CÔNG CỤ SỬ DỤNG 42 2.1 Phương pháp thực đề tài 42 2.2 Kỹ thuật trích chọn đặc trưng MFCC [3] 42 2.3 Mơ hình GMM 46 2.4 Bộ công cụ nhận dạng tiếng nói Kaldi [2] 47 2.4.1 Giới thiệu 47 2.4.2 Cấu trúc công cụ Kaldi [4] 49 2.5 Ngơn ngữ lập trình Shell 51 2.6 Ngơn ngữ lập trình Perl 52 2.7 Ngơn ngữ lập trình Python 52 Chương III NHẬN DẠNG TIẾNG VIỆT NĨI TRÊN NỀN BỘ CƠNG CỤ KALDI TÍCH HỢP MẠNG NƠ RON SÂU 54 3.1 Các bước thực xây dựng hệ thống nhận dạng tiếng nói công cụ Kaldi 54 3.2 Chuẩn bị liệu 55 3.2.1 Thu âm tiếng nói 55 3.2.2 Chuẩn bị liệu văn 56 iv 3.2.3 Một số quy tắc 57 3.2.4 Xây dựng âm vị tạo từ điển phát âm cho hệ thống nhận dạng 58 3.3 Bộ cơng cụ nhận dạng tiếng nói Kaldi [2] 63 3.3.1 Thự download cài đặt 63 3.3.2 Mơ hình thư mục làm việc Kaldi 64 3.3.3 Mơ hình hệ thống nhận dạng tiếng Việt nói với cơng cụ Kaldi 65 3.3.4 Mạng Nơ ron sâu Kaldi [14] 66 3.3.4.1 Mơ hình âm học với DNN 66 3.3.4.2 Công thức DNN 67 3.3.5 Mơ hình GMM 68 3.4 Huấn luyện mơ hình âm học 68 3.4.1 Kịch mơ hình âm học 68 3.4.2 Chuẩn bị thư mục 70 3.4.3 Tạo mơ hình ngơn ngữ 72 3.4.4.Tạo tập tin cho lang_prep/local/dict lang_prep/local/lang 72 3.4.5 Tạo tập tin cho lang_prep/lang 75 3.4.6 Thiết lập huấn luyện song song 75 3.4.7 Tạo tập tin mfcc.conf thư mục common 76 3.4.8 Trích chọn tham số MFCC 77 3.4.9 Sắp xếp huấn luyện Monophone 77 3.4.10 Sắp xếp huấn luyện Triphone (Tri1) 79 3.4.11 Huấn luyện với mạng nơ ron sâu (tri4_DNN) 81 3.5 Xây dựng đồ thị giải mã 3.6 Giải mã [10] 81 [11] 83 v 3.7 Tính WER SER 86 CHƯƠNG IV KẾT QUẢ THỬ NGHIỆM 88 4.1 Kết thực với mơ hình huấn luyện 88 4.2 Kết thực với trọng số mơ hình ngơn ngữ khác 89 KẾT LUẬN 90 TÀI LIỆU THAM KHẢO 92 vi DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ Từ viết tắt Tên đầy đủ Nghĩa tiếng Việt AI Artificial Intelligence Trí tuệ nhận tạo AM Acoustic Models Mơ hình âm học ANN Artificial Neural Network Mạng nơ ron nhân tạo ASR Automatic Speech Recognition Nhận dạng tiếng nói tự động BLAS Basic Linear Algebra Thư viện chương trình đại số Subroutines tuyến tính Boosted Maximum Mutual Thông tin tương hỗ tối đa tăng Information cường Cepstral Mean Variance Giá trị trung bình phương sai bình Normalization phương CNN Convolutional Neural Network Mạng nơ ron sâu chập DBN Deep belief network Mạng Belief sâu DNN Deep Neural Network Mạng nơ ron sâu DTW Dynamic Time Warping So sánh thời gian động EM Expectation Maximization Tối ưu hóa kỳ vọng FST Finite State Transducers Bộ dò trạng thái hữu hạn GMM Gaussian Mixture Models Mơ hình Gauss hỗn hợp HCLG HoCoLoG Đồ thị giải mã HCLG HMM Hidden Markov Model Mơ hình Markov Ẩn ICDAR International Conference on Hội nghị quốc tế phân tích tài Document Analysis and liệu nhận dạng BMMI CMVN Recognition LAPACK Linear Algebra PACKage Thư viện gói đại số tuyến tính LDA Linear Discriminant Analysis Phân tích biệt thức tuyến tính LM Language Models Mơ hình ngơn ngữ LMW Language Model Weight Trọng số mơ hình ngơn ngữ LSTM Long Short Term Memory Mạng nhớ tạm vii Từ viết tắt Tên đầy đủ Nghĩa tiếng Việt Mel Frequency Ceptral Các hệ số Cepstral theo thang đo Coeficients tần số Mel MMI Maximum Mutual Information Thông tin tương hỗ tối đa MPE Minimum Phone Error Lỗi âm vị tối thiểu OOV Out Of Vocabulary Word Các từ từ vựng PLP Peceptual Linear Prediction Dự báo tiên đốn tuyến tính RBM Restricted Boltzman Machines Máy Boltzman giới hạn SAT Speaker Adaptive Training Huấn luyện thích nghi người nói SER Sentence Error Rate Tỷ lệ lỗi nhận dạng câu SGD Stochastic Gradient Descent Gradient descent ngẫu nhiên VIQR VIetnamese Quoted-Readable Quy ước để viết chữ tiếng Việt MFCC dùng bảng mã ASCII bit WER Word Error Rate Tỷ lệ lỗi nhận dạng từ WST Word System Table Bảng ký tự từ viii DANH MỤC CÁC BẢNG Bảng 3.1: Cơ sở liệu tiếng Việt nói 56 Bảng 3.2: Cách biểu diễn dấu điệu tiếng Việt có sử dụng VIQR 57 Bảng 3.3: Chuyển đổi điệu dấu mũ chữ 58 Bảng 3.4: Danh sách âm vị nguyên âm 61 Bảng 3.5: Danh sách âm vị phụ âm 61 Bảng 3.6: Danh sách từ từ điển 62 Bảng 3.7: Các phương thức huấn luyện hệ thống 70 Bảng 4.1: Wer Ser cho phương pháp huấn luyện 88 Bảng 4.2: Bảng kết với trọng số mơ hình ngơn ngữ khác 89 ix DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ Hình 1.1: Mạng Nơ ron sinh học .5 Hình 1.2: Cấu trúc Nơ ron nhân tạo Hình 1.3: Mạng phân lớp Hình 1.4: Perceptron Hình 1.5: Một mạng Perceptrons Hình 1.6: Phân lớp điểm gán nhãn .10 Hình 1.7: Mạng truyền thẳng 12 Hình 1.8: Đồ thị lỗi huấn luyện 14 Hình 1.9: Autoencoder 16 Hình 1.10: Restricted Boltzmann Machines .17 Hình 1.11: Autoencoder xếp chồng 19 Hình 1.12: Mạng Belief sâu 20 Hình 1.13: Cấu trúc hệ thống nhận dạng tiếng nói 37 Hình 2.1: Các bước trích chọn đặt trưng MFCC .43 Hình 2.2: Lấy cửa sổ (windowing) 44 Hình 2.3: Hàm mật độ Gauss 46 Hình 2.4: Hàm mật độ xác suất mơ hình GMM 47 Hình 2.5: Cấu trúc cơng cụ Kaldi 49 Hình 3.1: Các bước thực xây dựng hệ thống nhận dạng tiếng nói cơng cụ Kaldi 54 Hình 3.2: Phần mềm hỗ trợ ghi âm 55 Hình 3.3: Chuyển đổi UTF-8 VIQR dùng Unikey 57 Hình 3.4: Âm vị phụ âm 59 Hình 3.5: Âm vị nguyên âm 60 Hình 3.6: Thư mục làm việc Kaldi 65 Hình 3.7: Mơ hình nhận dạng tiếng nói với cơng cụ Kaldi 66 Hình 3.8: Hệ thống phân cấp mơ hình âm học huấn luyện .70 Hình 4.1 Biểu đồ WER thể qua mơ hình huấn luyện 89 Hình 4.2 Biểu đồ WER với tham số LMW khác 90 x 3.4.10 Sắp xếp huấn luyện Triphone (Tri1) Huấn luyện triphone dựa dealta Huấn luyện mô hình triphone bao gồm đối số bổ sung số lượng số trạng thái HMM cho định số Gauss Trong lệnh này, đối số $pdf $gauss tương ứng 1200 19200 thiết lập tập tin env_voip_cs.sh, nghĩa có 1200 trạng thái HMM 19200 Gaussians Con số xác Gausian định định dựa Heuristics Các số phần lớn phụ thuộc vào số lượng liệu, số lượng câu hỏi ngữ âm mục tiêu mơ hình Dịng lệnh thực huấn luyện triphone sau: $ steps/train_deltas.sh cmd "$train_cmd" \ $pdf $gauss $WORK/train $WORK/lang $EXP/mono_ali $EXP/tri1 || exit 1; Trong đó, Đối số cmd “$train_cmd” nj thiết lập từ trước phần đưa Tham số pdf gauss thiết lập tập tin env_voip_cs.sh, đó: - pdf=1200 số trạng thái âm vị huấn luyện Lệnh thiết lập: export pdf=1200 - gauss số Gauss lớn sử dụng cho huấn luyện Lệnh thiết lập: export gauss=19200 Sắp xếp triphone dựa Delta Câu lệnh thực hiện: $ steps/align_si.sh nj $njobs cmd "$train_cmd" \ use-graphs true $WORK/train $WORK/lang $EXP/tri1 $EXP/tri1_ali || exit 1; Huấn luyện triphone delta + delta-delta (tri2a) Câu lệnh thực hiện: steps/train_deltas.sh cmd "$train_cmd" $pdf $gauss \ $WORK/train $WORK/lang $EXP/tri1_ali $EXP/tri2a || exit 1; Các đối số lập với huấn luyện tri1 Huấn luyện triphone LDA+MLLT (tri2b) Câu lệnh thực hiện: 79 steps/train_lda_mllt.sh cmd "$train_cmd" $pdf $gauss \ $WORK/train $WORK/lang $EXP/tri1_ali $EXP/tri2b || exit 1; Sắp xếp triphone LDA-MLLT với FMLLR Câu lệnh thực hiện: steps/align_si.sh nj $njobs cmd "$train_cmd" \ use-graphs true $WORK/train $WORK/lang $EXP/tri2b $EXP/tri2b_ali || exit 1; Huấn luyện triphone MMI dựa LDA+MLLT (tri2b_mmi) Câu lệnh thực hiện: $ steps/make_denlats.sh nj $njobs cmd "$train_cmd" \ beam $mmi_beam lattice-beam $mmi_lat_beam \ $WORK/train $WORK/lang $EXP/tri2b $EXP/tri2b_denlats || exit 1; steps/train_mmi.sh $WORK/train $WORK/lang $EXP/tri2b_ali $EXP/tri2b_denlats $EXP/tri2b_mmi || exit 1; Sắp xếp triphone MMI dựa LDA+MLLT steps/align_fmllr.sh cmd "$train_cmd" \ data/train data/lang exp/tri4a exp/tri4a_ali || exit 1; Huấn luyện triphone MMI dựa LDA+MLLT với boosting (tri2b_mmi_b0.05) steps/train_mmi.sh boost ${train_mmi_boost} $WORK/train $WORK/lang \ $EXP/tri2b_ali $EXP/tri2b_denlats $EXP/tri2b_mmi_b${train_mmi_boost} || exit 1; Huấn luyện triphone MPE (tri2b_mpe) steps/train_mpe.sh $WORK/train $WORK/lang $EXP/tri2b_ali $EXP/tri2b_denlats $EXP/tri2b_mpe || exit 1; Huấn luyện triphone LDA+MLLT+SAT (tri3) steps/train_sat.sh 2500 15000 $WORK/train $WORK/lang $EXP/tri2b_ali $EXP/tri3 || exit 1; 80 Sắp xếp triphone tri3 steps/align_fmllr.sh nj $njobs cmd "$train_cmd" \ $WORK/train $WORK/lang $EXP/tri3 $EXP/tri3_ali Huấn luyện triphone SGMM steps/train_ubm.sh cmd "$train_cmd" \ 400 $WORK/train $WORK/lang $EXP/tri3_ali $EXP/ubm4 steps/train_sgmm2.sh cmd "$train_cmd" 7000 9000 \ $WORK/train $WORK/lang $EXP/tri3_ali $EXP/ubm4/final.ubm $EXP/sgmm2 3.4.11 Huấn luyện với mạng nơ ron sâu (tri4_DNN) Thực huấn luyện mơ hình DNN với hàm phi tuyến, tốc độ học khởi tạo 0.015, tốc độ học cuối 0.002, số lớp ẩn Lệnh thực hiện: $ dnn_mem_reqs="mem_free=1.0G,ram_free=0.2G" # Lệnh thiết lập khởi tạp vùng nhớ $ dnn_extra_opts=" num_epochs 20 num-epochs-extra 10 add-layers-period -shrink-interval 3" $ steps/nnet2/train_tanh.sh mix-up 5000 initial-learning-rate 0.015 \ final-learning-rate 0.002 num-hidden-layers \ num-jobs-nnet $njobs cmd "$train_cmd" "${dnn_train_extra_opts[@]}" \ $WORK/train $WORK/lang $EXP/tri3_ali $EXP/tri4_DNN 3.5 Xây dựng đồ thị giải mã [10] Một đồ thị giải mã biểu diễn đối tượng OpenFst Nó lưu giữ tất thơng tin mơ hình ngơn ngữ phần thơng tin mơ hình âm học Đồ thị giải mã cần thiết cho công việc giải mã với giải mã Kaldi Trong luận văn xây dựng đồ thị HCLG sử dụng chuẩn OpenFst thực thi tiện ích Kaldi Ta thiết kế kịch để chúng để chúng tự động cập nhật mơ hình ngơn ngữ, mơ hình âm học tạo tất tập tin cần thiết cho việc giải mã Các kịch yêu cầu để xây dựng HCLG: 81 - Mơ hình ngơn ngữ (LM) - Mơ hình âm học (AM) - Các định âm vị âm học - Từ điển phiên âm Ngoài việc xây dựng HCLG, kịch chép tập tin cần thiết cho việc giải mã từ mơ hình âm học đồ thị HCLG đến thư mục Các tập tin sau cần thiết cho việc giải mã: - Đồ thị giải mã HCLG; - Mơ hình âm học; - Một ma trận định nghĩa tham số biến đổi; - Một tập tin cấu hình cho tham số tiếng nói tham số biến đổi với thiết lập tương tự sử dụng cho huấn luyện AM (mơ hình âm học); - Một bảng ký tự từ (WST-Word Symbol Table) Bảng tập tin chứa ánh xạ nhãn (label) với số nguyên Thực xây dựng đồ thị giải mã qua khối lệnh: for lm in $LMs ; lm=`basename "$lm"` utils/mkgraph.sh mono $WORK/lang_${lm} $EXP/mono $EXP/mono/graph_${lm} || exit utils/mkgraph.sh $WORK/lang_${lm} $EXP/tri1 $EXP/tri1/graph_${lm} || exit utils/mkgraph.sh $WORK/lang_${lm} $EXP/tri2a $EXP/tri2a/graph_${lm} || exit utils/mkgraph.sh $WORK/lang_${lm} $EXP/tri2b $EXP/tri2b/graph_${lm} || exit utils/mkgraph.sh $WORK/lang_${lm} $EXP/tri3 $EXP/tri3/graph_${lm} || exit utils/mkgraph.sh $WORK/lang_${lm} $EXP/sgmm2_mmi_b0.1/graph_${lm} || exit 82 $EXP/sgmm2_mmi_b0.1 done Thực xây dựng đồ thị hàm có sẵn Kaldi, để tập tin mkgrap.sh thư mục utils ( 3.6 Giải mã [11] Trong cơng cụ Kaldi khơng có giải mã “chuẩn” đơn lẻ, giao diện cố định Hiện có giải mã có sẵn: SimpleDecoder, FastDecder có phiên lattice-generating “Decoder” có nghĩa mã bên giải mã, có dịng lệnh chương trình, gói giải mã giải mã loại mơ hình cụ thể (ví dụ GMM) với điều kiện cụ thể đặc biệt (ví dụ đa lớp fMLLR) Ví dụ chương trình dịng giải mã: gmm-decode-simple, gmm-decode-faster, gmm-decode-kaldi gmm-decode-faster-fmllr * Thiết lập tham số giải mã Đầu tiên, ∆ + ∆∆ gấp lần 13 tham số MFCC cách tính đạo hàm lần lần từ hệ số MFCC Việc tính tốn hệ số MFCC với việc xử lý đạo hàm 39 tham số khung Thứ hai, kết hợp LDA MLLT tính tốn từ khung ghép gồm 13 tham số MFCC Phạm vi cửa sổ mặc định khung lấy khung tại, khung bên trái khung bên phải Các phép biến đổi tham số LDA MLLT đạt cải thiện đáng kể so với biến đổi ∆ + ∆∆ Tiếp theo sử dụng giải mã DNN Hybrid (Dan’s recipe) Công thức áp dụng huấn luyện lai cổ điển framework giải mã sử dụng mạng sâu đơn giản với hàm phi tuyến Sử dụng mô hình âm học huấn luyện mơ tả cho giải mã phiên âm từ tập liệu kiểm thử Đối với mơ hình âm học, sử dụng phương thức tham số hóa tiếng nói phép biến đổi tham số cho việc huấn luyện mơ hình âm học, viết thử nghiệm với tất tất mơ hình âm học huấn luyện với mơ hình ngơn ngữ zerogram bigram Mơ hình ngơn ngữ zerogram bigram mặc định xây dựng từ phép biến đối đổi trực giao Mơ hình ngơn ngữ bigram ước lượng từ phép biến 83 đổi liệu huấn luyện Do đó, tập kiểm thử xuất từ chưa biết, gọi “Out of Vocabulary Word - OOV” Các zerogram trích chọn từ phép biến đổi tập kiểm thử Zerogram danh sách từ với xác suất phân bố đều, giúp giải mã việc giới hạn kích thước từ vựng Các mơ hình ngơn ngữ bigram chứa 1075 unigram 3517 bigram cho tiếng Việt Mô hình ngơn ngữ zerogram bị giới hạn 1076 từ tiếng Việt Các tham số nhận dạng tiếng nói thiết lập giá trị mặc định; trường hợp ngoại lệ tham số giải mã: beam=12.0, lattice-beam=6.0, max-activestates=14000 LMW (các trọng số mơ hình ngơn ngữ - Language Model Weight) Tham số LMW thiết lập trọng số LM, tức quy định có LM (mơ hình ngơn ngữ) sử dụng cho mơ hình âm học việc giải mã Giá trị LMW ước tính tập phát triển giá trị tốt sử dụng cho giải mã tập liệu kiểm thử Các giải mã GMM-latgen-faster sử dụng cho việc đánh giá liệu thử nghiệm Nó tạo mạng liên kết cấp độ từ cho phiên âm giả thuyết tốt trích chọn từ mạng giải mã đánh giá WER (Word Error Rate) SER (Sentence Error Rate) Thực giải mã mơ hình âm học với dịng lệnh sau: for s in $TEST_SETS ; for lm in $LMs ; lm=`basename "$lm"` tgt_dir=${s}_`basename "$lm"` echo "Gải mã Monophone decoding" steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf nj $njobs cmd "$decode_cmd" \ $EXP/mono/graph_${lm} $WORK/${tgt_dir} $EXP/mono/decode_${tgt_dir} echo "Giải mã tri1" steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf nj $njobs cmd "$decode_cmd" \ 84 $EXP/tri1/graph_${lm} $WORK/$tgt_dir $EXP/tri1/decode_${tgt_dir} echo "Giải mã tri2a" steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf nj $njobs cmd "$decode_cmd" \ $EXP/tri2a/graph_${lm} $WORK/$tgt_dir $EXP/tri2a/decode_${tgt_dir} echo "Decode tri2b [LDA+MLLT]" steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf nj $njobs cmd "$decode_cmd" \ $EXP/tri2b/graph_${lm} $WORK/$tgt_dir $EXP/tri2b/decode_${tgt_dir} echo "Giải mã tri2b_mmi" steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf iter nj $njobs cmd "$decode_cmd" \ $EXP/tri2b/graph_${lm} $WORK/$tgt_dir $EXP/tri2b_mmi/decode_it4_${tgt_dir} echo "Giải mã tri2b_mmi_b0.05" steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf iter nj $njobs cmd "$decode_cmd" \ $EXP/tri2b/graph_${lm} $WORK/$tgt_dir $EXP/tri2b_mmi_b${train_mmi_boost}/decode_it4_${tgt_dir} echo "Giải mã tri2b_mpe." steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf iter nj $njobs cmd "$decode_cmd" \ $EXP/tri2b/graph_${lm} $WORK/$tgt_dir $EXP/tri2b_mpe/decode_it4_${tgt_dir} echo "Giải mã tri3 [LDA+MLLT+SAT]" steps/decode_fmllr.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf nj $njobs cmd "$decode_cmd" \ $EXP/tri3/graph_${lm} $WORK/$tgt_dir $EXP/tri3/decode_it4_${tgt_dir} 85 steps/decode.sh scoring-opts " min-lmw $min_lmw max-lmw $max_lmw" \ config common/decode.conf nj $njobs cmd "$decode_cmd" \ $EXP/mono/graph_${lm} $WORK/${tgt_dir} $EXP/mono/decode_${tgt_dir} echo "Giải mã SGMM” steps/decode_sgmm2.sh transform-dir $EXP/tri3/decode_it4_${tgt_dir} \ $EXP/sgmm/graph_${lm} $WORK/$tgt_dir $EXP/sgmm/decode_it4_${tgt_dir} echo "Giải mã DNN” [ ! -d $EXP/tri4_DNN/decode_it4_${tgt_dir} ] && mkdir -p $EXP/tri4_DNN/decode_it4_${tgt_dir} decode_extra_opts=( num-threads 6) steps/nnet2/decode.sh "${decode_extra_opts[@]}" cmd "$decode_cmd" transform-dir nj "$njobs" $EXP/tri3/decode_it4_${tgt_dir} $EXP/tri3/graph_${lm} $WORK/$tgt_dir $EXP/tri4_DNN/decode_it4_${tgt_dir} | tee $EXP/tri4_DNN/decode_it4_${tgt_dir}/decode.log done done Thực giải mã mô hình dựa module decode có sẵn Kaldi, đặt tập tin decode*.sh thư mục /steps, gọi đến lệnh: steps/decode.sh Các đối số $min_lmw $max_lmw trọng số lớn nhỏ cho mơ hình ngơn ngữ thiết lập dành cho việc giải mã, đối số thiết lập tập tin local/score.sh # Câu lệnh tính đưa kết nhận dạng, mơ hình mơ hình vào tập tin result.log local/results.py $EXP | tee $EXP/results.log local/export_models.sh $TGT_MODELS $EXP $WORK/lang 3.7 Tính WER SER Ước lượng hiệu suất hệ thống nhận dạng tiếng nói công việc quan trọng Tỷ lệ lỗi nhận dạng từ, câu sử dụng rộng rãi Khi so sánh thuật tốn mơ hình âm học, điều quan trọng so sánh giảm lỗi tương đối chúng 86 Phải kiểm tra tập liệu gồm 500 câu (với đến 10 từ câu) từ đến 10 người nói để ước lượng tỷ lệ lỗi nhận dạng cách tin cậy Thơng thường, thuật tốn xem phù hợp giảm thiểu từ 10% lỗi trở lên Có loại lỗi nhận dạng từ điển hình nhận dạng tiếng nói: - Thay từ (Substitution): từ khơng thay cho từ - Xóa từ (Deletion): từ bị loại bỏ câu nhận dạng - Thêm từ (Insertion): từ khác thêm vào câu nhận dạng Để xác định tỷ lệ lỗi nhỏ nhất, sử dụng công thức sau: 𝑊𝐸𝑅 = 100 × 𝑆𝑢𝑏𝑠 + 𝐷𝑒𝑓𝑠 + 𝐼𝑛𝑠 𝑁𝑂𝑊 Tính tỷ lệ lỗi nhận dạng từ câu thực qua hàm compute-wer có sẵn Kaldi thư mục kaldi-trunk/src/bin 87 CHƯƠNG IV KẾT QUẢ THỬ NGHIỆM Trong đề tài, liệu huấn luyện với mô hình âm học: mono, tri1, tri2a, tri2b, tri2b_mmi_b0.05, tri2b_mpe, tri3, sgmm, sgmm_mmi_b0.1, tri4_DNN Trong đó: mơ hình âm học mono, tri1, tri2a, tri2b, huấn luyện generative Mơ hình tri2b_mmi, tri2b_mmi_b0.05, tri2b_mpe, tri3, sgmm, sgmm_mmi_b0.1, tri4_DNN huấn luyện discriminatively vịng lặp Các mơ hình discriminative mang lại kết tốt mơ hình generative thể hình 4.1 4.1 Kết thực với mơ hình huấn luyện Phần trình bày kết thử nghiệm hệ thống nhận dạng tiếng Việt nói với phương pháp huấn luyện âm học khác Bảng 4.1 biểu diễn kết mơ hình âm học Bảng 4.1: Wer Ser cho phương pháp huấn luyện Model % WER % SER mono 4.34 53.4 tri1 1.95 37.4 tri2a 1.98 37.6 tri2b 1.89 36.2 tri2b_mmi 1.76 34 tri2b_mmi_b0.05 1.75 33.8 tri2b_mpe 1.83 35.5 tri3 1.48 30.4 1.1 23.7 1.09 23.5 21.6 sgmm sgmm_mmi_b0.1 tri4_DNN Biểu đồ thể WER qua mơ hình huấn luyện hình 4.1 88 4.5 4.34 Wer 3.5 2.5 1.95 1.98 1.5 1.89 1.76 1.75 1.83 1.48 1.1 1.09 0.5 Mô hình Hình 4.1 Biểu đồ WER thể qua mơ hình huấn luyện Kết cho thấy phương pháp huấn luyện discriminative vượt trội so với mô hình âm học generative, tham số LDA + MLTT hiệu việc sử dụng tham số ∆+∆∆ Mặt khác, có khác biệt tinh tế mơ hình âm học (tri3, sgmm, sgmm_mmi_b0.1, DNN) huấn luyện discriminative hiệu suất 4.2 Kết thực với trọng số mơ hình ngơn ngữ khác Thử nghiệm với LMW 9, 10 15 Kết mô tả bảng 4.2 hình 4.2 Bảng 4.2: Bảng kết với trọng số mơ hình ngơn ngữ khác Mơ hình mono WER WER (LMW=9) (LMW=10) 68.84 8.09 WER (LMW=15) 4.34 tri1 42.49 3.42 1.95 tri2a 42.76 3.55 1.98 tri2b 31.55 3.14 1.89 tri2b_mmi 33.51 2.87 1.76 tri2b_mmi_b0.05 32.92 2.81 1.75 89 WER WER (LMW=9) (LMW=10) 30.1 2.96 Mơ hình tri2b_mpe tri3 sgmm2 sgmm2_mmi_b0.1 Tri4_DNN WER (LMW=15) 1.83 19.07 2.22 1.48 13.4 1.44 1.16 11.94 1.35 1.15 11.2 1.01 80 70 60 WER 50 40 30 20 10 10 11 Mô hình WER (LMW=9) WER (LMW=10) WER (LMW=15) Hình 4.2 Biểu đồ WER với tham số LMW khác Kết cho thấy với tham số LMW =15 LMW = 10 cho kết vượt trội so với LMW = Như việc chọn lựa trọng số phù hợp cho mơ hình ngơn ngữ tham số quan trọng hệ thống nhận dạng tiếng Việt nói KẾT LUẬN Đề tài nghiên cứu mô tả phương pháp xây dựng hệ thống nhận dạng tiếng Việt nói cơng cụ Kaldi tích hợp mạng nơ ron sâu Bài nghiên cứu thử nghiệm phương pháp huấn luyện khác hỗ trợ Kaldi Kết cho thấy vượt trội phương pháp dùng mạng nơ ron so với phương pháp 90 cũ Các trọng số mơ hình ngơn ngữ xem xét đánh giá Các thử nghiệm cho thấy công cụ Kaldi cho kết nhận dạng tốt với tiếng Việt nói Ngồi trọng số mơ hình ngơn ngữ tham số quan trọng xây dựng hệ thống 91 TÀI LIỆU THAM KHẢO [1] Christian Gaida, Patrick Lange, Rico Petrick, Patrick Proba, Ahmed Malatawy, and David Suendermann-Oeft, “Comparing Open-Source Speech Recognition Toolkits” [2] Dan Povey, “Kaldi Lectures” [3] Dan Jurafsky, “Spoken Language Processing”, Stanford University [4] Daniel Povey, Arnab Ghoshal, Gilles Boulianne, Lukas Burget,Ondrej Glembek, Nagendra Goel, Mirko Hannemann, Petr Motlcek, Yanmin Qian, Petr Schwarz, Jan Silovsky, Georg Stemmer, Karel Vesely, “The Kaldi Speech Recognition Toolkit” [5] Daniel Povey, Brian Kingsbury, Lidia Mangu, George Saon, Hagen Soltau & Geoffrey Zweig, "fMPE: Discriminatively Trained Features for Speech Recognition," ICASSP 2005 [6] Daniel Povey, Vijayaditya Peddinti, Daniel Galvez, Pegah Ghahrmani, Vimal Manohar, Xingyu Na, Yiming Wang and Sanjeev Khudanpur "Purely sequencetrained neural networks for ASR based on lattice-free MMI", Interspeech 2016 [7] Daniel Povey, Dimitri Kanevsky, Brian Kingsbury, Bhuvana Ramabhadran, George Saon & Karthik Visweswariah, "Boosted MMI for Model and Feature Space Discriminative Training", ICASSP 2008 [8] Daniel Povey & Brian Kingsbury, "Evaluation of Proposed Modifications to MPE for Large Scale Discriminative Training", ICASSP 2007 [9] Daniel Povey, Lukas Burget, Mohit Agarwal, Pinar Akyazi, Kai Feng, Arnab Ghoshal, Ondˇrej Glembek, Nagendra Kumar Goel, Martin Karafi´at, Ariya Rastrow, Richard C Rose, Petr Schwarz, Samuel Thomas, “Subspace gaussian mixture models for speech recognition” [10] Daniel Povey and Partner “http://kaldi-asr.org/doc/graph.html” Generated on Wed Aug 10 2016 for Kaldi by Doxygen 1.8.1.2 [11] Daniel Povey and Partner http://kaldi-asr.org/doc/decoders.html Generated on Wed Aug 10 2016 for Kaldi by Doxygen 1.8.1.2 92 [12] Dong Yu, Microsoft Research, “Deep Neural Network and Its Application in Speech Recognition”, 2013 [13] Hugo Larochelle,Yoshua Bengio, Jérôme Louradour, Pascal Lamblin, “Exploring Strategies for Training Deep Neural Networks”, Département d’informatique et de recherche opérationnelle, Université de Montréal [14] http://kaldi.sourceforge.net, Generated in 2014 for Kaldi by doxygen [15] http://www.maxreading.com/sach-hay/dai-cuong-ve-tieng-viet/he-thong-am-vi29205.html [16] Hugo Larochelle, Yoshua Bengio, Jerome Louradour, Pascal Lamblin, Geoffrey Hinton, Andrew Ng., Andrew L Nelson, R Salskhutdinov, “Deep Learning and Application in Neural Networks” [17] Ivan Vasilev, “A Deep Learning Tutorial” [18] KyleGorman http://www.openfst.org/twiki/bin/view/FST/WebHome, 2016 [19] Nguyen Hong Quang, Trinh Van Loan, Le The Dat, Automatic Speech Recognition for Vietnamese using HTK system, IEEE-RIVF 2010, Ha noi, November, 2010 [20] Pierre Nugues, “An Overview of Speech Synthesis and Recognition”, 2014 [21] Rozpoznávání řeči pomocí KALDI, Charles University in Prague Faculty of Mathematics and Physics, “Rozpoznávání řeči pomocí KALDI”, 2014 [22] Yajie Miao, Hao Zhang, Florian Metze Language Technologies Institute, “Towards Speaker Adaptive Training of Deep Neural Network Acoustic Models”, School of Computer Science, Carnegie Mellon University Pittsburgh, PA, USA 93 ... cụ nhận dạng tiếng nói Kaldi - Nghiên cứu, xây dựng hệ thống nhận dạng tiếng Việt nói cơng cụ Kaldi có tích hợp mạng nơ ron sâu Phương pháp nghiên cứu - Nghiên cứu lý thuyết nhận dạng tiếng nói. .. thành phần hệ thống Trong đề tài này, đầu hệ thống văn nội dung đề tài tập trung vào tìm hiểu xây dựng hệ thống nhận dạng tiếng Việt nói 1.2.2 Phân loại hệ thống nhận dạng tiếng nói Nhận dạng từ... mạng Nơ ron sâu lĩnh vực học sâu (Deep Learning) - Nghiên cứu nguyên lý thành phần hệ thống nhận dạng tiếng nói ứng dụng vào nhận dạng tiếng Việt nói - Xây dựng chương trình nhận dạng tiếng Việt