Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 88 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
88
Dung lượng
2,1 MB
Nội dung
LỜI CAM ĐOAN Tôi – Đỗ Quốc Bình, học viên lớp Cao học CNTT 2012 – 2014 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 tôi, dƣới 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 toàn văn công trình khác Hà Nội, ngày 18 tháng năm 2014 Học viên Đỗ Quốc Bình 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, Thầy khuyến khích tận tình hƣớng dẫn suốt trình thực luận văn Nhờ quan tâm bảo ý kiến đóng góp quý báu Thầy, hoàn thành luận văn 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 năm học vừa qua Cuối xin chân thành cảm ơn gia đình, bạn bè ủng hộ động viên lúc khó khăn ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT .vi DANH MỤC HÌNH vii DANH MỤC BẢNG viii MỞ ĐẦU 1 Lý chọn đề tài Mục đính phạm vi nghiên cứu Đối tượng nghiên cứu Phương pháp nghiên cứu Nhiệm vụ nghiên cứu CHƢƠNG 1: CƠ SỞ LÝ THUYẾT ĐỀ TÀI VÀ HỆ THỐNG NHẬN DẠNG ĐÃ CÓ I Cơ sở lý thuyết 1.1 Giới thiệu tiếng nói 1.2 Hệ thống nhận dạng tiếng nói 1.3 Ứng dụng hệ thống nhận dạng tiếng nói 1.4 Hệ thống ngữ âm Tiếng Việt 1.5 Một số khó khăn nhận dạng tiếng Việt nói 12 1.6 Mô hình ngôn ngữ 12 II tiến Tìm hiểu kết nhận dạng tiếng nói có với tiếng Việt, đề xuất cải 14 2.1 Đề tài “NHẬN DẠNG TỰ ĐỘNG TIẾNG VIỆT NÓI SỬ DỤNG BỘ CÔNG CỤ SPHINX” Nguyễn Thị Hiền, dƣới hƣớng dẫn TS Nguyễn Hồng Quang trƣờng Đại Học Bách Khoa năm 2012 14 2.2 Đề tài “NHẬN DẠNG TÊN TIẾNG VIỆT” Nguyễn Tiến Dũng, Vũ Tất Thắng, Lƣơng Chi Mai năm 2004 14 2.3 Đề tài “NHẬN DẠNG GIỌNG HÀ NỘI” Nguyễn Quốc Cƣờng, Phạm Thị Ngọc Yến, Eric Castell 15 2.4 Đề xuất cải tiến vào nhận dạng tiếng Việt nói 16 CHƢƠNG 2: NHẬN DẠNG TIẾNG VIỆT NÓI BẰNG SPHINX 17 Thực hệ thống nhận dạng tiếng Việt nói 17 I 1.1 Tổng quan bƣớc thực 17 iii 1.2 Chuẩn bị liệu 18 1.3 Huấn luyện âm học 23 1.4 Tạo mô hình ngôn ngữ 27 1.5 Nhận dạng 30 II Cải thiện tỷ lệ nhận dạng từ có điệu 33 2.1 Giới thiệu 33 2.2 Đƣa điệu vào mã hóa nhận dạng 33 III Cải thiện tỷ lệ nhận dạng từ đa âm tiết 34 3.1 Giới thiệu 34 3.2 Giới thiệu công cụ JVNTextPro 34 CHƢƠNG 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ 38 I Cơ sở liệu 38 1.1 Giới thiệu sở liệu 38 1.2 Thông tin chi tiết liệu tiếng nói ứng với ngƣời dùng 39 1.3 Danh sách file dùng để huấn luyện 42 1.4 Danh sách file dùng để test 42 1.5 Các thử nghiệm đƣợc tiến hành cách đặt tên cho thử nghiệm 42 Tỷ lệ nhận dạng ban đầu 43 II 2.1 Giới thiệu cách thực 43 2.2 Kết luận 45 III 3.1 Giới thiệu 46 3.2 ACT-LMMN 46 3.3 ACNT-LMMT 47 3.4 ACT-LMMT 49 3.5 Đa âm tiết, có điệu - test tập liệu huấn luyện 51 3.6 Kết luận 51 IV V Kết thử nghiệm đề xuất cải tiến 46 Kết hợp liệu thu âm VOV (Comp-VOV Corpus) 51 4.1 Giới thiệu 51 4.2 Các thử nghiệm tập liệu Comp-VOV Corpus 52 4.3 Kết luận 53 Thử nghiệm liệu VOV (VOV Corpus) 53 iv 5.1 Giới thiệu 53 5.2 Các kết thử nghiệm 57 5.3 Kết luận 58 VI Chƣơng trình demo 58 CHƢƠNG 4: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 60 TÀI LIỆU THAM KHẢO 63 PHỤ LỤC 64 Phụ lục A: Mô hình Markov ẩn 64 A1 Giới thiệu: 64 A2: Mô hình Markov rời rạc mặt thời gian 65 A3:Mô hình Markov ẩn rời rạc mặt thời gian: 66 B.1 Các khái niệm liên quan đến mô hình ngôn ngữ 69 B.1.1 Mô hình N-grams 69 B.1.2 Các phƣơng pháp làm trơn (Smooth) 69 B.2 Lý thuyết liên quan đến mô hình ngôn ngữ 69 B.2.1 Lý thuyết xác suất 69 B.2.4 Đánh giá mô hình ngôn ngữ Perplexity 71 Phụ lục C Các mã nguồn chƣơng trình 73 C1 Đọc thƣ mục chứa file transcript tạo thành file 73 C2 Loại bỏ ký tự đặc biệt mà Sphinx không nhận dạng đƣợc thành số 74 C3 Tạo từ điển từ file transcript 75 C4 Tạo file transcript test file từ danh sách file transcript test 78 v DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT Chữ viết tắt Chữ viết đầy đủ Acoustic Model Mô hình âm học Corpus Hệ thống sở liệu âm Computer Corpus Cơ sở liệu âm thu từ máy tính VOV Corpus Cơ sở liệu âm thu đƣợc lấy từ Đài Tiếng Nói Việt Nam (VOV) Comp-VOV Corpus Cơ sở liệu âm kết hợp Computer VOV Corpus ASCII American Standard Code for Information Interchange – Chuẩn mã dùng để trao đổi thông tin Hoa Kì HMM Hidden Markov Model – mô hình Markov Ẩn Language Model Mô hình ngôn ngữ CMU SLM CarnegieMellonUniversity Statistical Language Modeling Toolkit: công cụ dùng để xây dựng mô hình ngôn ngữ thống kê MFCC Mel Frequency Cepstral Coefficients – hệ số Cepstral theo thang đo tần số Mel Mixture Một thành phần Gauss mô hình phân bố xác suất hỗn hợp Gauss VIQR VIetnamese Quoted-Readable - quy ƣớc để viết chữ tiếng Việt dùng bảng mã ASCII bit % WER Word Error Rate – Tỷ lệ lỗi nhận dạng từ vi DANH MỤC HÌNH Hình 1.1: Hình dạng âm đƣợc hiển thị phần mềm Cool Edit Hình 1.2 Các bƣớc thực hệ thống nhận dạng Hình 1.3 Cấu trúc hệ thống nhận dạng tiếng nói Hình 2.1 Các bƣớc tiến hành trình nhận dạng tiếng nói Sphinx 17 Hình 2.2 Phần mềm thu âm 19 Hình 2.3 Các bƣớc mã hóa văn 20 Hình 2.4 Các bƣớc huấn luyện liệu dùng SphinxTrain 23 Hình 2.5.Sơ đồ huấn luyện SphinxTrain 27 Hình 2.6.Các bƣớc tạo mô hình ngôn ngữ thống kê 28 Hình 2.7 Đồ thị tìm kiếm 31 Hình 2.8.Thủ tục nhận dạng PocketSphinx 32 Hình 2.9 Các bƣớc tiến hành mã hóa văn để xử lý từ đa âm tiết 34 Hình 2.10.Các bƣớc xử lý công cụ JVNTextPro 2.0 35 Hình 3.1 Biểu đồ tỷ lệ nhận dạng thử nghiệm Computer Corpus 51 Hình 3.2 Biểu đồ kết thử nghiệm Comp-VOV Corpus 53 Hình 3.3 Biểu đồ kết thực VOV Corpus 58 Hình 3.4: Demo chƣơng trình nhận dạng tiếng Việt nói 59 Hình A1 Mô hình Markov ẩn 64 Hình A.2 Quan hệ mô hình Markov tiếng nói 67 vii DANH MỤC BẢNG Bảng 1.1: Cấu tạo âm tiết 10 Bảng 1.2: Ví dụ âm tiết không điệu 10 Bảng 1.3: Ví dụ âm tiết có điệu 10 Bảng 2.1: Thanh điệu VIQR 21 Bảng 2.2: Bảng mã thay điệu sử dụng đề tài 21 Bảng 2.3: Ký hiệu phân loại từ VNTextPro 36 Bảng 3.1: Các chủ đề thu âm 38 Bảng 3.2: Dữ liệu thu âm 39 Bảng 3.3: Chi tiết liệu thu âm 39 Bảng 3.4: Các ký tự mã hóa điệu 44 Bảng 3.5: Dữ liệu dùng để huấn luyện test 44 Bảng 3.6: Các âm vị mô hình đơn âm, không điệu Computer-Corpus 45 Bảng 3.7: Kết thử nghiệm ACNT-LMMN-Computer Corpus 45 Bảng 3.8: Các âm vị đơn âm, có điệu Computer Corpus 46 Bảng 3.9: Kết thử nghiệm ACT-LMMN-Computer Corpus 47 Bảng 3.10: Các âm vị đa âm, không điệu Computer Corpus 48 Bảng 3.11: Kết thử nghiệm ACNT-LMMT-Computer Corpus 49 Bảng 3.12: Các âm vị đa âm tiết, có điệu Computer-Corpus 49 Bảng 3.13: Kết thử nghiệm ACT-LMMT-Computer Corpus 50 Bảng 3.14: Dữ liệu dùng để test từ VOV 52 Bảng 3.15: Kết thử nghiệm Comp-VOV Corpus 52 Bảng 3.16: Các âm vị đơn âm tiết không điệu VOV Corpus 54 Bảng 3.17: Các âm vị đơn âm tiết có điệu VOV Corpus 54 Bảng 3.18: Các âm vị từ đa âm tiết không điệu VOV Corpus 56 Bảng 3.19: Các âm vị từ đa âm tiết có điệu VOV Corpus 56 Bảng 3.20: Các kết thử nghiệm VOV Corpus 57 viii MỞ ĐẦU Lý chọn đề tài Trong khoa học máy tính, nhận dạng tiếng nói trình chuyển lời nói thành văn Nhận dạng tiếng nói đƣợc biết đến với số tên gọi khác nhƣ: “Tự động nhận dạng tiếng nói”, “Máy tính nhận dạng tiếng nói” hay “Tiếng nói thành văn bản” Nhận dạng tiếng nói đƣợc ứng dụng nhiều lĩnh vực quan trọng sống nhƣ: y tế, quân ứng dụng nhiều sống hàng ngày Nhận dạng tiếng nói đƣợc nhiều công ty lớn giới triển khai áp dụng Trong sản phẩm thông minh phục vụ ngƣời, kể đến Apple, Google Ở Việt Nam ứng dụng nhận dạng tiếng nói Việt hạn chế Ý tƣởng xây dựng hệ thống nhận dạng tiếng nói có từ năm 50 kỷ 20, đến đạt đƣợc nhiều kết đáng kể Có hƣớng tiếp cận cho nhận dạng tiếng nói: Tiếp cận Âm học: Hƣớng tiếp cận dựa vào đặc điểm âm học đƣợc rút đƣợc từ phổ âm Tuy nhiên kết hƣớng tiếp cận thấp thực tế, đặc trƣng âm học có biến động lớn Hơn phƣơng pháp đòi hỏi tri thức đầy đủ âm học (vốn tri thức âm học chƣa thể đáp ứng) Tiếp cận Nhận dạng mẫu thống kê: Sử dụng phƣơng pháp máy học dựa thống kê, để học rút mẫu tham khảo từ lƣợng liệu lớn Hƣớng đƣợc sử dụng nhiều, chủ yếu dựa vào Mô hình Markov ẩn (HMM) Tiếp cận Trí tuệ nhân tạo: Là hƣớng kết hợp hai hƣớng Phƣơng pháp kết hợp đƣợc tri thức chuyên gia phƣơng pháp mẫu thống kê Đây hƣớng tiếp cận tƣơng lai nhận dạng tiếng nói Đã có nhiều sản phẩm nghiên cứu nhận dạng tiếng nói dƣới dạng mã nguồn mở, kể đến: CMU Sphinx mã nguồn mở license BSD Julius mã nguồn mở license BSD cung cấp nhận dạng cho ngôn ngữ tiếng Nhật Kaldi: Apache license Simon: GPL license sử dụng Julius HTK iATROS: GPL license Hệ thống Sphinx hệ thống nhận dạng tiếng nói Hệ thống đƣợc phát triển hợp tác trƣờng đại học Carnegie Mellon, phòng thí nghiệm hãng Sun, hãng Mitsubishi, hãng Hewlett Packard, với tham gia trƣờng đại học California Viện Công nghệ Massachusetts (MIT) Hệ thống đƣợc sử dụng để nghiên cứu phát triển ứng dụng nhận dạng tiếng nói tƣơng tác ngƣời máy Vì vậy, nhu cầu nghiên cứu sử dụng hệ thống cho tiếng Việt trở nên ngày cấp thiết có tính ứng dụng thực tiễn cao Mục đính phạm vi nghiên cứu Tích hợp điệu vào mô hình âm học: bổ sung điệu vào âm vị, cập nhật vào file từ điển phát âm, sau huấn luyện lại mô hình âm học SphinxTrain Tích hợp từ đa âm tiết vào mô hình ngôn ngữ Thực phân tách từ đa âm tiết cho liệu (dựa công cụ đƣợc phát triển TS Nguyễn Hồng Quang), mục đích tạo CSDL văn từ đa âm tiết cho tiếng Việt Sau sử dụng CMU SLM toolkit để tạo mô hình ngôn ngữ đa âm tiết Tiến hành thực nghiệm huấn luyện nhận dạng sở liệu tiếng Việt nói xây dựng trên, để đánh giá hiệu phƣơng pháp đề xuất Đối tƣợng nghiên cứu Nghiên cứu tổng quan nhận dạng tiếng Việt nói Nghiên cứu mô hình HMM, mô hình ngôn ngữ Nghiên cứu công cụ: SphinxTrain, CMU SLM, SphinxBase, PocketSphinx Một tham số đƣợc sử dụng để mô tả hệ thống vectơ phân bố xác suất trạng thái khởi tạo đƣợc mô tả nhƣ sau: Các xác suất khởi tạo thoả mãn tính chất thống kê: Với: Quá trình ngẫu nhiên đƣợc gọi mô hình Markov quan sát đƣợc, thời điểm đầu trình tập hợp trạng thái, trạng thái tƣơng ứng với kiện quan sát đƣợc (nghĩa đầu mô hình nhƣ trạng thái không ngẫu nhiên) Mô hình Markov nhƣ đƣợc mô tả ma trận phân bố xác suất chuyển trạng thái A vector phân bố xác suất π A3:Mô hình Markov ẩn rời rạc mặt thời gian: Mô hình Markov rời rạc mặt thời gian đƣợc mô tả phần trƣớc tỏ có nhiều hạn chế việc áp dụng vào ứng dụng nhƣ giá trị chuyển trạng thái giá trị áp đặt sẵn, không thay đổi đối tƣợng, liệu quan sát biến đổi theo thời gian Do vậy, để áp dụng đƣợc vào chƣơng trình nhận dạng, ta tiếp tục mở rộng quan niệm mô hình Markov sang trƣờng hợp mà quan sát không trực tiếp, mà hàm xác suất trạng thái, mô hình Markov ẩn (HMM – Hidden Markov Model) Thực chất, mô hình Markov ẩn trình ngẫu nhiên đƣợc nhúng hai lần, trình 66 ngẫu nhiên không quan sát đƣợc cách trực tiếp (nó ẩn) mà đƣợc quan sát thông qua tập hợp trình ngẫu nhiên khác, chúng tạo thành dãy quan sát Một mô hình Markov ẩn đƣợc đặc trƣng thành phần sau: N: số trạng thái mô hình: Các trạng thái: s = {s1, s2,…, sN} Trạng thái thời điểm t, qt∈ s M: số kí hiệu quan sát (quan sát rời rạc) Tập kí hiệu quan sát v={v1,v2,…,vM} Kí hiệu quan sát thời điểm t, ot v A = {aij}: tập phân phối xác suất chuyển trạng thái: aij = P(qt+1 = sj |qt = si ), ≤ i,j ≤ N B = {bj(k)}: phân bố xác suất kí hiệu quan sát trạng thái j: bj (k)= P(vk at t|qt = sj ), ≤ j ≤ N, ≤ k ≤ M π = {πi}: phân bố xác suất trạng thái khởi đầu: πi = P(q1= si ), ≤ i ≤ N Một mô hình HMM đƣợc viết dƣới dạng đặc trƣng λ = {A, B, π} A4 Mối quan hệ mô hình Markov với tiếng nói Nguyên tắc hệ thống nhận dạng tiếng nói liên tục đƣợc mô tả hình dƣới Hình A.2 Quan hệ mô hình Markov tiếng nói Dữ liệu đầu vào file âm thu từ micro, sau đƣợc chuyển thành chuỗi vectơ âm học, có kích thƣớc cố định Y 67 1:T = y1, ,yT Sau giải mã (Decorder) có gắng tìm chuỗi từ w 1:L = w1, ,wTL, mà đƣợc sinh Y Cụ thể giải mã tìm: Vì P(w|Y) khó tìm trực tiếp, áp dụng luật Bayes: Trong P(w) đƣợc xác định mô hình ngôn ngữ Mô hình ngôn ngữ đƣợc mô tả phần sau 68 Phụ lục B Mô hình ngôn ngữ thống kê B.1 Các khái niệm liên quan đến mô hình ngôn ngữ B.1.1 Mô hình N-grams Mô hình N-gram kiểu mô hình xác suất dùng cho việc đoán đối tƣợng chuỗi đối tƣợng Mô hình ngôn ngữ N-grams mô hình ngôn ngữ với độ dài chuỗi từ N N-grams đƣợc sử dụng nhiều xử lí ngôn ngôn ngữ tự nhiên thống kê việc phân tích Gen N-gram chuỗi N đối tƣợng xuất liên tiếp, đối tƣợng âm vị, kí hiệu, kí tự từ phụ thuộc vào ứng dụng riêng N-grams với N có giá trị đƣợc gọi mô hình unigram , N hai bigrams, N trigrams… Mô hình n-grams ngôn ngữ tự nhiên sử dụng phƣơng pháp thống kê xác suất n-grams Hệ thống tìm kiếm khổng lồ Google sử dụng mô hình n-grams dự án nghiên cứu phát triển nhƣ dịch máy, nhận dạng tiếng nói, kiểm tra phát âm (checking spelling) , nhận dạng thực thể (entity recognition) khai thác thông tin (data minning) B.1.2 Các phƣơng pháp làm trơn (Smooth) Trong thống kê xử lý liệu, việc làm mƣợt tập liệu tạo cách tính xấp xỉ mẫu liệu Công việc làm mƣợt quan trọng Trong xây dựng mô hình ngôn ngữ sử dụng phƣơng pháp làm trơn nhƣ : - Nội suy tuyến tính (Linear interpolation) - Phƣơng pháp giảm Good-Turing - Phƣơng pháp giảm Witen-Bell - Phƣơng pháp giảm tuyệt đối (Absolute discounting) B.2 Lý thuyết liên quan đến mô hình ngôn ngữ B.2.1 Lý thuyết xác suất B.2.1.1 Xác suất kiện 69 Xác suất kiện E, dùng để khả xảy kiện E phép thử đƣợc viết P(E) Một kiện E có số lần xuất n tổng số N lần xảy xác suất kiện E tổ hợp kiện : P(E)=n/N (số lần xuất kiện E tổng số lần xuất kiện) B.2.1.2 Xác suất có điều kiện Xác suất mà biến cố E xảy biết việc xảy biến cố F xác suất có điều kiện E biết F, giá trị số P( E F ) / P( F ) (với điều kiện P(F) khác 0) Nếu xác suất có điều kiện E biết F với xác suất ("không có điều kiện") E, E F đƣợc xem kiện độc lập Vì quan hệ E F đối xứng nên ta nói P( E F ) P( E ) P( F ) Tổng quát : P(A,B,C,D)=P(A)*P(B|A)*P(C|A,B)*P(D|A,B,C) (1) Đối với dãy X1,X2,…Xn : P(X1,X2,…Xn)=P(X1)*P(X2|X1)*P(X3|X1,X2)*…*P(Xn|X1,X2,X3…Xn-1) (2) B.2.2 Mô hình ngôn ngữ n-gram Việc cần phải tính xác suất chuỗi n từ P(W1,W2,…Wn) =P(W) Thay ta cần tính xác suất có điều kiện P (Wn| W1,W2 Wn-1) nghĩa xác suất từ Wn biết n-1 từ trƣớc Công thức tính xác suất cho chuỗi n từ (3) 70 B.2.4 Đánh giá mô hình ngôn ngữ Perplexity Để đo thực mô hình ngôn ngữ dựa vào xác suất trung bình đƣợc phát triển định luật thông tin (shannon) Một nguồn nói coi nhƣ khối thông tin nguồn mà sinh từ w1,w2, … ,wm từ từ vựng W Khả kí hiệu i phụ thuộc vào i-1 kí hiệu trƣớc Entropy H diễn tả số lƣợng thông tin không dƣ thừa cung cấp cho từ giá trị trung bình, đƣợc tính bít : Công thức tính cho khả tất dãy từ, nhƣng với liệu nguồn ergodic công thức tƣơng đƣơng với: Hay Coi mô hình ngôn ngữ nguồn thông tin, mô hình ngôn ngữ mà hoạt động hiệu có khả đoán từ Perplexity, PP thƣớc đo mô hình ngôn ngữ, đƣợc tính nhƣ sau: Hay 71 Với Là xác suất dãy mô hình ngôn ngữ Perplexity đƣợc coi nhƣ thƣớc đo giá trị trung bình từ khác có giá trị xác suất lớn tƣơng đƣơng sau từ cho trƣớc Giá trị perplexity thấp có nghĩa mô hình ngôn ngữ tốt Để tính toán đƣợc perplexity hai mô hình ngôn ngữ cần có số liệu test Sự so sánh hai mô hình ngôn ngữ phụ thuộc vào giá trị perplexity liệu kiểm tra từ vựng tƣơng đƣơng 72 Phụ lục C Các mã nguồn chƣơng trình C1 Đọc thƣ mục chứa file transcript tạo thành file import glob import os import re #file khong su dung chi de tham khao output = open("transcriptAll.txt","w",encoding='utf-8') output2 = open("transcriptWithFileName.txt","w",encoding='utf-8') p = re.compile('\w+',re.IGNORECASE) fName = str for filename in glob.glob('transcript all\\*.txt'): with open(filename,"r",encoding='utf-8') as f: lines =f.readlines() for line in lines: if line.endswith(u'.txt\n'): fName = line[0:-5] #ten file loai bo di txt else: modified =line[3:-5].upper()#loai bo ky tu o dau va o cuoi modified =re.sub(r'[\.\'\"\,\;\:\-\”\(\)\…\“\–\?\!]','',modified) output.write(modified + "\n") output2.write(modified+ ' ' +fName +'\n') 73 C2 Loại bỏ ký tự đặc biệt mà Sphinx không nhận dạng đƣợc thành số import re inputFile = open("transcriptEncripted.txt","r",encoding='utf-8') outputFile = open("transcript.txt","w",encoding='utf-8') lines = inputFile.readlines() for line in lines: edit1 = line.replace("`","2") edit2 = edit1.replace("~","3") edit3 = edit2.replace("?","4") edit4 = edit3.replace(".","6") edit5 = edit4.replace("'","5") edit6 = edit5.replace("^","8") edit7 = edit6.replace("(","7") edit8 = edit7.replace("+","9") edit9 = re.sub('[/]\w+','',edit8) edit10 = re.sub(r'[#/]','',edit9) #edit10= edit9.replace('#/#','') #loai bo ky tu dac biet if edit10.strip() !='': words = edit10.split() print(words) #outputFile.write(' ' + ' '.join(edit10.words[0:len(words)-2] + ' (' + words[-1] + ') edit11 = ' '.join(words[:-1]) edit12 = re.sub(r'[^\w\s]','',edit11) 74 #outputFile.write(' ' +' '.join(words[:-1]) + ' (' +words[-1] +')\n') outputFile.write(' ' + edit12.strip() + ' (' +words[-1] +')\n') C3 Tạo từ điển từ file transcript # cu phap: python createDic.py y : neu dung dieu #python createDic.py y : neu khong dung dieu import re import sys #ham tach mot tu: Nghe -> ngh e hoac ban -> b a n def buildAmVi(word,thanhdieu): start =0 end = -111 #ky tu cuoi cung la so last = str amvi = list() start =0 if word[0:2].lower() in amdau: #doc ky tu dau tien tu hien tai xem co la am dau hay khong amvi.append(word[0:2]) start = elif word[0:1].lower() in amdau: #doc ky tu dau tien tu hien tai xem co la am dau hay khong amvi.append(word[0:1]) 75 start =1 if word[-2:].lower() in amcuoi: last = word[-2:] end =-2 elif word[-1:].isalpha(): last = word[-1:] end = -1 if end !=-111: #ky tu cuoi cung khong phai la so iterator = p.finditer(word[start:end]) for match in iterator: if thanhdieu=='y': amvi.append(match.group(0)) else: amvi.append(re.sub(r'[23456]','',match.group(0))) #2,3,4,5,6 la cac dieu if len(word) != 1: #khong can them vao truong hop word chu co mot ky tu vd: P->P amvi.append(last) else: iterator = p.finditer(word[start:]) for match in iterator: if thanhdieu=='y': amvi.append(match.group(0)) else: amvi.append(re.sub(r'[23456]','',match.group(0))) 76 if len(amvi) == 0: amvi.append(word) return amvi; thanhdieu=sys.argv[1]; #mo ta co dung dieu hay khong, y neu co,n neu khong print ('Dung dieu:' + sys.argv[1]) outputFile = open("tudien.dic","w",encoding='utf-8') inputFile = open("transcript.txt","r",encoding='utf-8') dic = set() lines = inputFile.readlines() for line in lines: words = line.split()[1:-2] for word in words: dic.add(word) #chuyen dic list de sort mylist = list(dic) mylist.sort() amdau =set(['b','c','ch','d','dd','g','gh','h','k','kh','l','m','n','ng','ngh','nh','p','ph','q', 'r','s','t','th','tr','v','x']) amcuoi = set(['c','ch','m','n','ng','nh','p','t']) 77 p = re.compile('\w\d*',re.IGNORECASE) line =str for word in mylist: amvi = list() outputFile.write(word + ' ') #ghi vao file dic line ='' for w in word.split('_'): amvi= buildAmVi(w,thanhdieu) line = line + ' '.join(amvi) + ' ' #outputFile.write(" ".join(amvi) + ' ') #if not word.endswith(w): #khong them ky tu space vao tu cuoi cung # outputFile.write(' ') outputFile.write(line.strip()+ '\n') C4 Tạo file transcript test file từ danh sách file transcript test import re inputTranscript = open("asrvn_train.fileids","r") inputTestTranscript = open("asrvn_test.fileids","r") inputTranscriptAll = open('transcript.txt','r') outputTranscript = open("asrvn_train.transcription","w") outputTestTranscript = open("asrvn_test.transcription","w") 78 fileName =str transcriptAllLines =inputTranscriptAll.readlines() lines = inputTranscript.readlines() for line in lines: fileName = line.split('/')[1].strip() #tach ten file tu chuoi vd :ta/ox0328 for content in transcriptAllLines: if content.strip().endswith(fileName[-6:] +')'): #chi lay ky tu cuoi cua file vd TBox0328=>ox0328 #print(re.sub(r'\(.*\)','('+ fileName+ ')',content)) outputTranscript.write(re.sub(r'\(.*\)','('+ fileName+ ')',content)) break; outputTranscript.close() lines = inputTestTranscript.readlines() for line in lines: fileName = line.split('/')[1].strip() #tach ten file tu chuoi vd :ta/ox0328 for content in transcriptAllLines: if content.strip().endswith(fileName[-6:] +')'): outputTestTranscript.write(re.sub(r'\(.*\)','('+ fileName+ ')',content)) break; outputTestTranscript.close() print('done!') 79 80 ... nhìn tổng quát tiếng nói, đặc điểm tiếng Việt nói, thành phần hệ thống nhận dạng tiếng nói tự động, đề xuất hướng tích hợp đặc điểm tiếng Việt điệu đa âm tiết vào hệ thống nhận dạng Trong chương... TÀI VÀ HỆ THỐNG NHẬN DẠNG ĐÃ CÓ Chƣơng tìm hiểu số đặc điểm tiếng nói, đặc điểm tiếng Việt nói, mô hình ngôn ngữ, thành phần hệ thống nhận dạng tiếng nói, nhƣ tìm hiểu số hệ thống nhận dạng có... hành nhận dạng tiếng Việt nói 16 CHƢƠNG 2: NHẬN DẠNG TIẾNG VIỆT NÓI BẰNG SPHINX Chƣơng trình bầy bƣớc thực nhận dạng tiếng nói công cụ Sphinx, nhƣ tích hợp đặc điểm tiếng Việt điệu đa ngôn ngữ vào