Nghiên cứu mạng Neurral và xây dựng ứng dụng nhận dạng tiếng Việt

Lời nói đầu Từ rất lâu, con người đã mong muốn xây dựng và phát triển các hệ thống có khả năng thông minh như con người. Trong nhiều hướng nghiên cứu nhằm triển khai các hệ thống thông minh, mạng Neural đang là sự lựa chọn khá phổ biến. Chúng là cơ sở cho các giải pháp nhận dạng, tự động hóa điều khiển, trí tuệ nhân tạo Mạng Neural nhân tạo là hệ thống xử lý thông tin mới mẻ trong việc ứng dụng vào điều khiển và tự động hóa. Với việc kết hợp chặt chẽ các hệ logic mờ, mạng Neural nhân tạo đã tạo nên một cuộc cách mạng thực sự trong việc thông minh hóa và vạn năng hóa các bộ điều khiển kỹ thuật cao trong giai đoạn hiện nay và cả trong tương lai. Cùng với sự phát triển của công nghệ thông tin không thể không kể đến công nghệ xử lý tiếng nói như: nhận dạng tiếng nói, chuyển lời nói thành chữ viết và ngược lại Mục tiêu đặt ra xây dựng một hệ thống nhận dạng tiếng nói bằng máy tính. Tuy nhiên đây là vấn đề rất phức tạp vì độ biến động của mẫu âm thanh là vô cùng lớn, cùng với yếu tố cơ bản là cơ quan phát âm còn có sự ảnh hưởng nhiễu của môi trường truyền âm, ngoài ra giọng nói của mỗi người mỗi khác, mỗi địa phương mang một sắc thái riêng Đó là một trong nhiều nguyên nhân làm bài toán nhận dạng tiếng nói mặc dù đã được nghiên cứu từ lâu nhưng kết quả vẫn còn hạn chế. Bài toán nhận dạng tiếng nói thường được chia thành các bài toán nhỏ hơn như: nhận dạng thanh điệu, nhận dạng với số từ hữu hạn, nhận dạng các từ phát âm rời rạc, nhận dạng câu, nhận dạng phụ thuộc người nói, nhận dạng độc lập người nói.v.v. Vấn đề nhận dạng tiếng nói ngày càng trở nên cấp thiết, với ứng dụng rộng, thiết thực vào mọi lĩnh vực của cuộc sống. Các nước trên thế giới đều đang cố gắng xây dựng chương trình nhận dạng tiếng nói cho mình. Đối với tiếng Việt, hiện nay đang trong quá trình nghiên cứu và kết quả vẫn còn nhiều khiêm tốn. Do đó nhu cầu giải quyết bài toán nhận dạng tiếng nói tiếng Việt càng trở nên cần thiết. Với lý do đó em đã chọn hướng nghiên cứu trong đồ án về lĩnh vực nhận dạng tiếng nói và giải quyết bài toán nhỏ trong nhận dạng tiếng nói là nhận dạng một số từ tiếng Việt với số người nói hữu hạn. Qua việc nghiên cứu về mạng Neural em đã sử dụng mạng để giải quyết bài toán nhận dạng tiếng Việt với số người nói hữu hạn. Một số mục tiêu chính trong đồ án: ■ Tìm hiểu về đặc điểm âm thanh tiếng Việt. ■ Các vấn đề của phân tích tiếng nói: 1. Các kỹ thuật tiền xử lý âm thanh. 2. Các đặc trưng của âm thanh và phương pháp trích trọn đặc trưng. ■ Nghiên cứu mạng Neural: Ứng dụng mạng trong giải quyết bài toán nhận dạng âm thanh tiếng Việt. ■ Xây dựng, thử nghiệm chương trình nhận dạng một số từ tiếng Việt. Trong thời gian làm đồ án, với sự cố gắng nỗ lực của bản thân, dưới sự hướng dẫn tận tình của thầy giáo Đại tá, PGS.TS Nguyễn Văn Xuất, cùng với sự quan tâm, giúp đỡ của các thầy cô giáo trong khoa công nghệ thông tin và tập thể lớp tin học 38, em đã hoàn thành đề tài “Nghiên cứu mạng Neurral và xây dựng ứng dụng nhận dạng tiếng Việt”. Nội dung đồ án được chia thành các chương như sau: Chương 1: Cấu trúc ngôn ngữ tiếng Việt. Chương 2: Các kỹ thuật phân tích dữ liệu tiếng nói. Chương 3: Tìm hiểu về mạng Neural. Chương 4: Ứng dụng mạng Neural nhận dạng một số từ tiếng Việt. Mặc dù đã có nhiều cố gắng nhưng đồ án không tránh khỏi thiếu sót, em rất mong được sự chỉ bảo của các thầy cô giáo và sự đóng góp ý kiến của các đồng chí và các bạn. Em xin trân trọng cảm ơn!

doc68 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2767 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu mạng Neurral và xây dựng ứng dụng nhận dạng tiếng Việt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hế giới quan tâm nghiên cứu dưới nhiều góc độ khác nhau. Dưới góc độ CNTT tiếng nói và nhận dạng tiếng nói có một vai trò to lớn giải quyết nhiều bài toán hóc búa mà từ trước nay con người đang quan tâm. Bài toán thông dịch các ngôn ngữ khác nhau, bài toán giao tiếp giữa người và máy, bài toán cho người khiếm thị sử dụng máy tính...đều liên quan nhiều đến nhận dạng tiếng nói. Trên thế giới các nhà khoa học đã nghiên cứu nhiều về vấn đề này nhưng nhận dạng tiếng Việt đã và đang là vấn đề mới được các nhà khoa học ở Việt nam nghiên cứu. Với một vị trí quan trọng trong nhiều lĩnh vực, tiếng Việt và nhận dạng tiếng Việt cần phải được quan tâm nghiên cứu nhiều hơn nữa. Dưới góc độ nghiên cứu học hỏi, bước đầu tôi đã nghiên cứu âm thanh, tiếng nói và nhận dạng với các phát âm từ đơn và nghiên cứu các vần và phụ âm trong Tiếng Việt. Quá trình phát âm của con người có thể được mô tả như sau: + Khí được đẩy từ phổi qua vòm họng ra miệng phát thành âm. + Khi dây thanh quản rung tạo ra các xung âm thanh và phát ra tiếng kêu (voiced sound). + Nếu dây thanh quản không rung nhưng mở liên tục tạo ra âm câm (Unvoice). + Khi nói hình dạng vòm họng, thanh quản thay đổi tạo ra các âm khác nhau. + Hình dạng vòm họng thay đổi chậm trong khoảng từ 10 đến 100ms. + Lượng khí từ phổi đẩy ra xác định âm lượng phát ra. Cách tạo ra tiếng nói như trên là nguyên lý cơ bản cho các tiếng nói chung trên thế giới nhưng đi sâu vào nghiên cứu thì mỗi tiếng nói của các nước khác nhau nó có điểm chung và điểm riêng biệt khác nhau chính điểm riêng biệt khác nhau này là một thuộc tính quan trọng để có thể nhận dạng tốt được các loại tiếng nói của các nước khác nhau. Bài toán nhận dạng tiếng nói là một bài toán khó, ví dụ một số đặc điểm sau cần quan tâm: -Kích thước từ điển: Với hệ thống có kích thước từ điển nhỏ thì hiệu quả nhận dạng không cao, còn hệ thống nhận dạng có bộ từ điển lớn thì không gian lưu trữ có hạn và việc tính toán nhận dạng cũng phức tạp. -Môi trường phát âm để nhận dạng là một yếu tố quan trọng trong nhận dạng âm thanh. Với môi trường yên tĩnh thì hiệu quả nhận dạng cao nhưng với môi trường nhiều tạp âm thì hiệu quả nhận dạng thấp có khi không nhận dạng được. -Ngữ pháp của tiếng nói cũng là một vấn đề phức tạp trong nhận dạng, với mỗi quốc gia có kiểu nói và ngữ pháp của ngôn ngữ khác nhau do đó để nhận dạng tốt với mỗi tiếng nói là việc rất phức tạp, đã được rất nhiều các nhà khoa học nghiên cứu và đã đi theo nghiên cứu nhận dạng theo các hướng sau: -Hệ thống nhận dạng tiếng nói độc lập hay phụ thuộc vào người nói: Hệ thống nhận dạng phụ thuộc người nói được dùng để thực hiện học và nhận dạng cho một người nói. Hệ thống này nhận dạng có hiệu quả tương đối cao so với hệ thống nhận dạng độc lập với người nói vì hệ thống này khi học sẽ dùng nhiều mẫu học của nhiều người nói khác nhau và khi nhận dạng cũng phải nhận dạng nhiều người nói. Tuy nhiên ở kiểu nhận dạng phụ thuộc người nói có yếu điểm là phải học lại mẫu khi nhận dạng với một người nói mới chưa được học qua hệ thống. Cả hai kiểu nhận dạng trên đều được dùng khi nhận dạng tiếng nói. -Nhận dạng phát âm từ đơn lẻ hay nhận dạng phát âm liên tục Hệ thống nhận dạng từ đơn được học với các đơn vị nhỏ nhất của phát âm hay còn gọi là các âm tiết. Ở kiểu nhận dạng này người nói phải nghỉ với một khoảng thời gian dài giữa hai phát âm. Công việc phát hiện ra điểm đầu và điểm cuối của một phát âm tạo ra một khung bao của phát âm để nhận dạng. Khi từ điển cho nhận dạng phát âm từ đơn quá lớn, chúng ta phải cấu trúc lại cách học với kiểu dùng chung các phát âm của một từ. Nhận dạng phát âm liên tục là một hệ thống nhận dạng phức tạp được dùng để nhận dạng các phát âm liên tục, ở hệ thống này thời gian nghỉ giữa hai âm vị là tương đối ngắn, các nói tự nhiên trong thực tế là một mô hình của cách phát âm liên tục.Ở hệ thống nhận dạng này, đầu tiên hệ thống nhận dạng phải có khả năng xác định được các khung bao của các phát âm, sau đó hệ thống nhận dạng phải biểu hiện các đặc tính của tín hiệu phát âm để nhận dạng. Với hệ thống nhận dạng các phát âm liên tục không nhất thiết yêu cầu nhiều mẫu của nhiều người nói mà điểm mạnh của nó thể hện qua thuật toán nhận dạng với các đặc trưng quan trọng nhất của một phát âm. Nhận dạng phát âm liên tục là hệ thống được dùng nhiều trong các ứng dụng trong thực tế. -Nhận dạng tiếng nói kết nối là một kiểu nhận dạng phát âm liên tục với bộ từ điển nhận dạng nhỏ. Ở kiểu nhận dạng này câu phát âm được cắt ra thành các phát âm nhỏ, hệ thống nhận dạng các phát âm cắt ra sau đó được ghép nối lại. 1.2 Hệ thống ngữ âm tiếng Việt. 1.2.1 Khái niệm. Chuỗi lời nói của con người được chia ra thành nhiều đoạn nhỏ như câu, từ, cụm từ... và cuối cùng là âm tiết. Âm tiết là đơn vị phát âm nhỏ nhất, không phân chia được nữa dù nói chậm đến đâu (mà vẫn giữ đúng ý nghĩa âm tiết đó). Mỗi âm tiết bao gồm nhiều yếu tố ngữ âm tạo thành và các yếu tố ngữ âm hầu như phát âm cùng lúc để tạo nên đúng âm tiết đó. Bên cạnh đó người ta còn xem âm tiết bao gồm nhiều yếu tố đoạn tính – là các yếu tố có giới hạn phân đoạn trong âm tiết như phụ âm, vần và âm đệm – và các yếu tố siêu đoạn tính – các yếu tố mà không giới hạn trong âm tiết như ngữ điệu, thanh điệu. Đặc điểm riêng của âm tiết tiếng Việt là đơn âm và mang thanh điệu. 1.2.2 Cấu trúc âm tiết tiếng Việt. Cấu trúc âm tiết tiếng Việt được xem xét theo nhiều cách, nhưng chúng ta cũng có thể xem xét theo quan điểm sau: Ta thấy rằng quan niệm truyền thống tiếng Việt có bảng chữ cái gồm 17 phụ âm, 10 vần và 5 dấu, trên cơ sở đó tất cả các từ đơn được sinh ra. Các từ đơn này là cơ sở tạo ra tất cả các từ trong tiếng Việt. Với cách quan niệm trên, người ta có thể phân tích, nghiên cứu tiếng Việt ở nhiều khía cạnh khác nhau như vần, điệu, ngữ pháp, ngữ nghĩa, cách phát âm, v.v. Tuy nhiên với cách quan niệm trên làm cho chúng ta gặp nhiều khó khăn về thuật toán như làm tăng dung tích bộ nhớ, tăng thời gian xử lý. Do đó để đơn giản hoá khi nghiên cứu nhận dang tiếng Việt người ta có thể quan niệm toàn bộ tiếng Việt được xây dựng từ một bảng gồm 26 phụ âm và 620 vần, đồng thời có 620 vần. Như thế chúng ta có thể xem mọi từ trong tiếng Việt có cấu trúc như sau: [] & [] (*) Trong đó có thể có hoặc không, thành phần bắt buộc phải có. Theo dạng (*) khi đó toàn bộ tiếng Việt có: 26*620+620=16.740 từ Dưới đây là là bảng các phụ âm và vần được phân chia theo độ dài: Bảng các phụ âm: Các phụ âm Số lượng Phụ âm đơn b,c,d,đ,g,h,k,l,m,n,p,q,r,s,t,v,x 17 Phụ âm ghép Ch,kh,nh,gh,th,ng,ngh,tr 9 Bảng vần đơn: Các vần đơn Số lượng a A,à,á,ả,ã,ạ,ă,ắ,ằ,ẳ,ẵ,ặ,â,ầ,ấ,ậ,ẫ,ẩ 18 o O,ò,ó,ỏ,õ,ọ,ô,ồ,ố,ổ,ỗ,ộ,ơ,ờ,ớ,ở,ỡ,ợ 18 e E,è,é,ẻ,ẽ,ẹ,ê,ề,ế,ể,ễ,ệ 12 i I,ì,í,ỉ,ĩ,ị 06 u U,ù,ú,ủ,ũ,ụ,ư,ừ,ứ,ử,ữ,ự 12 y Y,ý,ỳ,ỷ,ỹ,y 06 Vần kép loại 1: a Ai,ài,ái,ải,ãi,ại; ao,ào,áo,ảo,ão,ạo, ay,ày,áy,ảy,ãy,ạy; âi,ầi,ấi, ẩi,ẫi,ậi, ăi, ằi,ắi,ẳi,ẵi,ặi, au, àu,áu,ảu,ãu, ạu,âu,ấu,ầu,ẩu,ẫu,ậu; ây,ấy,ầy,ẩy,ẫy ậy; 48 e Ei, éi, èi,ẻi,ẽi,ẹi, eo,éo,ẻo,ẽo,ẹo; eu,éu,èu,ẻu,ẽu,ẹu,êi,ềi,ếi,ểu,ễi,ệi,êu,ếu,ều,ểu,ễu,ệu; 30 o Oa,oà,oá,oả,oã,oạ; oe,oè,oé,oẻ,oẽ,oẹ; oi,òi,ói,ỏi,õi,ọi,ôi ối,ồi,ổi,ỗi,ội 24 u Ua,úa,ùa ủa,ụa,ui,úi,ùi,ủi, ũi, ụi, uê, uế, uễ, uệ, ưi, ừi ứi, ửi, ữi, ựi, ưu, ừu, ứu, ửu, ữu, ựu, uy, uý, uỳ, uỷ, uỹ, uỵ; 48 Vần kép loại 2: c Ác, ạc, ắc, ặc, ấc,ậc, éc, ẹc, ếc, ệc, íc, ịc, óc, ọc, ốc, ộc, ớc, ợc, úc, ục, ức, ực 22 t Át,ạt, ắt, ặt, ất, ật, ét, ẹt, ết,ệt, ít, ịt, ót, ọt, ốt,ột,ớt,ợt,út, ụt, ứt, ựt 22 p Áp, ạp, ắp, ặp, ấp , . . . .. ., ...............,ứp,ựp 22 m Am, ám,àm ảm, ãm ạm ,........ ,........,ữm,ựm 60 n An, án, àn, ản, ãn, ạn, . . . . , ,. . . . ,ữn, ựn 60 Vần kép ba: nh Anh, ành, ánh, ảnh, ãnh, ạnh; inh, ính, ình,ỉnh,ĩnh, ịnh; ênh, ềnh, ểnh ễnh, ệnh; 18 ng Ang, àng,áng,ảng,ãng,ạng; ăng, ằng, ắng,ẳng, ẵng, ặng; Âng,ấng,ầng,ẩng, ẫng, ậng; ing,...... Eng, ;êng Ong, ;ông Ung ;ưng 60 ch Ách,ạch,ấch,ậch, ích,ịch, ếch, ệch, óch, ọch, úch, ụch 12 n Oen, oèn, oén, oẻn, oẽn; Ian; iàn, ián, iản, iạn, oan, oàn, oán, oản, oãn, oạn 18 i/y Oai,oài,oái, oải, oại, oay, oày, oáy, oảy, oãy, oạy 12 o Iao, iào, iáo, iảo, ião, iạo 06 Bảng vần bốn: nh Uanh,uành,uánh, uảnh,uạnh,uynh,uỳnh, ýnh, uỷnh, uỹnh, uỵnh; oanh, oành, oánh, oảnh, oãnh, oạnh 18 ng Uang, uàng, uáng, uảng, ũng, uạng; uâng, uầng, uấng, uẩng, uẫng, uậng, uông, uồng, uống, uổng, uỗng,uộng, ương, ường, ưỡng, ưởng, ượng; Iang, iàng, iáng, iảng, iạng, iêng, iềng, iếng, iểng, iễng, iệng; oang, oàng, oáng, oảng, oãng, oạng; oăng, oằng, oắng, oẳng, oẵng, oặng 48 Từ cách phân loại trên ta thấy: Có: 26 phụ âm 72 vần đơn 150 vần kép loại 1 186 vần kép loại 2 126 vần 3 66 vần 4 Để nhất quán trong các quy tắc chúng ta quy ước y và các từ có ký tự y đứng đầu đều là vần. Số từ bắt đầu bằng từ y trong tiếng Việt có tất cả 30 từ. Với quan niệm từ tiếng việt có cấu trúc [] & [] thì số lượng từ tăng lên so với quan niệm truyền thống, vì một loạt từ dạng như po, pó, py, pý, poăng, poặng... bây giờ là từ Việt, nhờ đó việc phiên âm để đọc tiếng nước ngoài đơn giản hơn. Trong phạm vi nghiên cứu của luận văn này tôi đã đi theo quan điểm thứ hai để nghiên cứu áp dụng cho nhận dạng các vần và phụ âm trong tiếng Việt. CHƯƠNG 2. KỸ THUẬT PHÂN TÍCH DỮ LIỆU TIẾNG NÓI Trong xử lý tiếng nói bao gồm: Phân tích tiếng nói, tổng hợp tiếng nói và nhận dạng tiếng nói. Việc phân tích tiếng nói là vấn đề quan trọng, quyết định đến kết quả của xử lý tiếng nói theo các hướng nhận dạng hay tổng hợp. Việc phân tích tiếng nói tốt sẽ cho ta trích chọn được các đặc trưng cơ bản, quan trọng nhất của tiếng nói để phục vụ cho công việc nhận dạng. Như vậy mục đích của việc phân tích tiếng nói nhằm tách ra được các tham số đặc trưng cho tín hiệu tiếng nói. Các tham số này sẽ được ứng dụng trong nhận dạng hay tổng hợp tiếng nói. Mục đích của đồ án là trích chọn ra các đặc trưng về: năng luợng và độ lớn trung bình thời gian ngắn, tần số cắt không trung bình thời gian ngắn, tần số Pitch. Việc xác định tốt được các đặc trưng nói trên sẽ cho phép ta xây dựng được hệ thống nhận dạng tiếng nói đạt chất lượng cao. Có nhiều kỹ thuật phân tích âm thanh khác nhau, trong đó kỹ thuật phân tích trực tiếp trên tín hiệu trong miền thời gian yêu cầu khối lượng tính toán nhỏ và cung cấp lượng thông tin lớn để xác định các đặc trưng của tiếng nói. Tín hiệu tiếng nói là một loại tín hiệu biến đổi theo thời gian. Điều này có thể thấy rõ khi biểu diễn tiếng nói dưới dạng sóng. Vấn đề ở chỗ cần phân tích chuỗi tín hiệu này để trích rút ra được các đặc trưng để phân biệt các tiếng nói với nhau. 2.1. Cấu trúc File “.Wav”. Một file wave là một phần của một lớp file lớn hơn dùng bởi các hàm Multimedia của Windows là các file RIFF (Resource Interchange File Format). Một file RIFF bao gồm một hoặc nhiều chunk. Mỗi chunk có con trỏ chỉ đến chunk kế tiếp. Mỗi chunk có một mô tả kiểu theo sau bởi một số dữ liệu. Một ứng dụng để đọc các file RIFF có thể đi qua một số chunk, đọc các chunk cần quan tâm và bỏ qua các chunk không liên quan. •Cấu trúc file.wav gồm những phần sau: - RIF chunk: kích thước 12 byte. + 0 –3 : “RIF” (mã tự ASCII), đây là xâu ký tự định danh các file âm thanh có đuôi *.wav. + 4 –7: độ dài tổng cộng của thông tin phần sau, nó được tính bằng công thức: độ dài tổng cộng = độ dài của file *.wav –8. + 8 –11: là xâu “WAVE”. - FORMAT chunk: kích thước 24 byte. + 0 – 3: là xâu ký tự bắt đầu khối định dạng dữ liệu. + 4 – 7: độ dài của FORMAT chunk. + 8 – 9: 0x01. + 10 –11: số chanel (kênh) (0x01 = mono, 0x02 = stero). + 12 –15: sample rate (tốc độ lấy mẫu), thường là các giá trị xác định như: 11.025 kHz, 22.5 kHz, 44.1 kHz. + 16 –19: bytes per second, giá trị này cho biết số byte được truy xuất trong 1 giây. + 20 –21: bytes per sample (1 =8 bit mono, 2 =8 bit stereo hoặc 16 bit mono, 4= 8 bit stereo), giá trị này cho biết số byte dùng để mã hoá một mẫu trong quá trình lượng tử hoá. + 22 –23: bits per sample, là số bit trong một mẫu được lấy. - DATA chunk: + 0 –3: là xâu “data”, xâu là báo hiệu bắt đầu phần dữ liệu. + 4 –7: độ dài dữ liệu. + 8 - hết: là dữ liệu. Tóm tắt cấu trúc của wave file như sau: Kích thước (số bytes) Giá trị 4 “RIFF” 4 Kích thước file RIFF 4 “WAVE” 4 “fmt ” 4 Kích thước subchunk “fmt ” 2 Kiểu mã hoá dữ liệu của file wave 2 Số kênh: + 1 – mono + 2 – stereo 4 Số mẫu /1giây 4 Số bytes/1giây 2 Số bytes/1mẫu 2 Số bits/1mẫu 4 “data” 4 Kích thước vùng dữ liệu Dữ liệu sóng âm 2.2. Các kỹ thuật tiền xử lý. 2.2.1. Các đơn vị cơ bản. Các đơn vị cơ bản của tín hiệu tiếng nói bao gồm: Tần số lấy mẫu, tần số cơ bản, Formant, biên độ, và nhiễu. *Tần số lấy mẫu: Bản chất của âm thanh là các sóng âm. Đây là tín hiệu tương tự. Để có thể biểu diễn âm thanh trong máy tính và áp dụng các kỹ thuật xử lý tín hiệu số thì bước đầu tiên là phải chuyển đổi các tín hiệu tương tự thành các dãy số. Quá trình này được thực hiện bằng cách lấy mẫu tín hiệu âm thanh theo một tần số lấy mẫu thích hợp ( tần số lấy mẫu là số mẫu lấy trong một đơn vị thời gian). Với tín hiệu tương tự x(t), chu kỳ lấy mẫu T (tần số lấy mẫu 1/T) thu được dãy số X(n): X(n)=x(n*T) với -¥ < n < ¥ Để đảm bảo quá trình số hoá không làm mất mát thông tin của phổ tín hiệu thì tần số lấy mẫu Fs=1/T phải đủ lớn. Giá trị đủ lớn của Fs phải tuân theo định lý lấy mẫu: Tín hiệu liên tục theo thời gian có bề rộng phổ hữu hạn với tần số cao nhất f Hz có thể được khôi phục một cách duy nhất từ các mẫu nếu quá trình lấy mẫu được thực hiện với tốc độ Fs>=2f mẫu trên một giây. Đối với chuẩn của file âm thanh thì tần số lấy mẫu thấp nhất là 8000Hz điều này có nghĩa là quá trình số hóa chỉ áp dụng với các tín hiệu tương tự có tần số cao nhất là 4000Hz-phù hợp với tiếng nói con người có tần số từ 40Hz-4000Hz. *Formant: Formant hay còn gọi là các họa âm, đóng vai trò tạo nên âm sắc của âm thanh. Formant là giải tần số được tăng cường do hiện tượng cộng hưởng, đặc trưng cho âm sắc của mỗi vần.Trong mỗi dải tần như thế có một tần số được tăng cường hơn cả và được gọi là đỉnh của Formant. Một vần do người phát ra có nhiều Formant, trong số đó có 2 Formant ứng với hộp cộng hưởng miệng và hộp cộng hưởng yết hầu, các Formant khác đặc trưng cho giọng nói từng người. *Tần số cơ bản: Sóng âm thanh do con người phát ra rất phức tạp. Nó có dạng đường cong phức tạp, có chu kỳ. Khi phát ra một âm có tần số f1 thì con người cũng đồng thời phát ra âm có tần số 2f1, 3f1, 4f1... Âm có tần số f1 được gọi là âm cơ bản, tần số f1 được gọi là tần số cơ bản. Các âm khác được gọi là các hoạ âm (Formant) thứ nhất, hoạ âm thứ 2... Âm cuối cùng (âm nghe được) là âm tổng hợp của âm cơ bản và các hoạ âm. Do đó đường biểu diễn của nó là một đường cong phức tạp có tần số là tần số cơ bản. *Biên độ: Biên độ là một đặc trưng quan trọng của sóng âm, đó là li độ lớn nhất của sóng âm so với vị trí cân bằng. Sóng âm thanh khi thu vào máy tính sẽ được số hoá thành một chuỗi các số rời rạc với miền giá trị tuỳ theo độ phân giải, số kênh, tần số lấy mẫu. Độ phân giải được hiểu theo nghĩa là số bit được dùng để biểu diễn một mẫu thu được trong quá trình lấy mẫu. Với độ phân giải 8bit, miền giá trị của các mẫu là khoảng đóng [0,255]; độ phân giải 16bit, miền giá trị này là khoảng đóng [0,65535]. Do đó xác định chính xác biên độ của sóng là một bài toán khó và trên thực tế là không cần thiết phải giải quyết tuyệt đối chính xác vì cái mà ta thực sự quan tâm là sự biến thiên của biên độ. Do đó bài toán này thường được giải quyết bằng phương pháp giải gần đúng. Trước hết ta xác định gần đúng ngưỡng không, sau đó biên độ sẽ được tính bằng trị tuyệt đối hiệu của giá trị số hoá trừ đi giá trị của ngưỡng không. Giá trị của ngưỡng không tuỳ thuộc vào từng Soundcard. *Nhiễu: Nhiễu là một trong những yếu tố làm cho bài toán nhận dạng trở nên vô cùng phức tạp. Nhiễu được xem xét như một đại lượng ngẫu nhiên, làm biến đổi tín hiệu cần nhận dạng. Do đó, lọc nhiễu là một khâu cần thiết phải tiến hành trong quá trình tiền xử lý tín hiệu. 2.2.2. Chuẩn hóa biên độ. Để tránh mất mát đặc trưng do âm thanh quá to hoặc quá nhỏ, đồng thời làm tăng ý nghĩa cho các đặc trưng để nhận dạng ta tiến hành chuẩn hóa biên độ. Đây là một bước cần thiết nhưng không đòi hỏi tính toán, xử lý phức tạp. Các mẫu âm thanh được thu trong quá trình làm đồ án với độ phân giải thì biên độ của tiếng nói có giá trị nằm trong khoảng [0, 255], do đó ta tiến hành chuẩn hóa dữ liệu sao cho giá trị trung bình của nó là 125. Chuẩn hoá biên độ có thể tiến hành đơn giản bằng cách nhân tín hiệu với một hệ số thích hợp: s(n)=k*s(n) k là hệ số nhân. Giá trị của k có thể chọn như sau: max(s(n)) là giá trị lớn nhất của dãy s(n). Sơ đồ khối thuật toán chuẩn hóa: 2.2.3. Làm rõ tín hiệu. Việc làm rõ (hay làm trơn) tín hiệu có ý nghĩa quan trọng trong bài toán nhận dạng tiếng nói, làm tăng hiệu quả làm việc của hệ thống nhận dạng. Trong đồ án em dùng hàm cửa sổ Hamming. Dữ liệu tiếng nói được đưa qua hàm cửa sổ Hamming để làm trơn phổ của tín hiệu. Hàm cửa sổ Hamming: W(n) = 0.54-0.46.Cos(2*PI/N-1);n=0,1,…,N-1 W(n) = 0 với các n khác. 2.2.4. Chia Frame dữ liệu. Công việc chia âm thanh thành các Frame là vô cùng quan trọng bởi trong một âm thanh luôn có sự biến động theo thời gian, việc chia âm thanh thành các đoạn nhỏ để ta có thể dự đoán được sự thay đổi về năng lượng, về tần số…của âm thanh trong mỗi Frame và trong cả đoạn âm thanh. Có 2 cách chia Frame dữ liệu âm thanh: Chọn kích thước Frame trước sau đó chia âm thanh theo Frame này và từ đó sẽ xác định được số Frame trong mỗi âm thanh. Chọn số Frame cố định và chia âm thanh, như vậy kích thước Frame trong các âm thanh sẽ khác nhau. 2.2.5. Năng lượng trung bình thời gian ngắn. Năng lượng của chuỗi tín hiệu rời rạc x(m) (kết quả rời rạc hoá tín hiệu tương tự x(t)) được định nghĩa như sau: Giá trị năng lượng này ít có giá trị thực tế trong việc nghiên cứu tín hiệu âm thanh nói chung và tín hiệu tiếng nói nói riêng. Giá trị này không phản ánh được tính chất biến động theo thời gian của tín hiệu do nó được tính trong khoảng thời gian vô cùng lớn. Ở đây, người ta đưa ra định nghĩa về năng lượng thời gian ngắn: Công thức này cho thấy, để tính năng lượng thời gian ngắn của dãy tín hiệu x(m) ta chia dãy x(m) thành những khoảng (có thể liên tục hoặc gối lên nhau) theo thời gian. Khi đó, năng lượng thời gian ngắn của x(m) tại khoảng thứ n, là tổng bình phương biên độ của N mẫu từ n-N+1 tới n. Căn cứ vào giá trị năng lượng thời gian ngắn có thể phân biệt được các đoạn hữu thanh-vô thanh hoặc các đoạn tín hiệu nhiễu nền. Dưới đây là lưu đồ thuật toán xác định độ lớn năng lượng thời gian ngắn: Ta thấy việc tính độ lớn năng lượng thời gian ngắn hết sức đơn giản, nó được tính cho từng khối dữ liệu. Và có công thức: EN(w)=EN(w)+ AI(i)*AI(i). 2.2.6. Tần số cắt không trung bình thời gian ngắn. Với các tín hiệu rời rạc theo thời gian, khái niệm tần số cắt được hiểu là số lần tín hiệu đổi dấu trong một giây. Đây là một đại lượng tần số đơn giản của tín hiệu. Tần số cắt không trung bình cũng là một cách để xác định tần số của tín hiệu hình sin. Điều này đúng với các tín hiệu có dải tần hẹp. Ví dụ tín hiệu hình sin có tần số F0 được lấy mẫu với tần số Fs sẽ có Fs/F0 mẫu trong một chu kỳ. Mỗi chu kỳ có 2 zero-crossing nên ta có tỷ lệ zero-crossing là 2F0/Fs crossing/mẫu. Như vậy từ tỷ lệ zero-crossing ta có thể tính ra tần số F0 của tín hiệu. Tín hiệu tiếng nói là tín hiệu có dải tần rộng nên không thể áp dụng trực tiếp nhận xét trên mà thường xác định tần số cắt không trong một thời gian ngắn nhằm dự đoán sự thay đổi phổ của tín hiệu tiếng nói. Công thức chung như sau: Trong đó: Sgn[x(n)]=1 khi x(n)>=0 Sgn[x(n)]= -1 khi x(n)<0 W(n) cửa sổ lấy tín hiệu. W(n)= với 0<=n<=N-1 W(n)=0 với các giá trị khác của n. Năng lượng, độ lớn và tần số cắt không thời gian ngắn là cách đơn giản và hiệu quả để xác định phần nhiễu nền và tín hiệu, phần vô thanh và hữu thanh. Bằng thực nghiệm ta thấy: phần khác giá trị trung bình biên độ sóng âm của 2 đoạn âm thanh có tín hiệu và nhiễu nền đều xấp xỉ không, vì vậy số lần chuyển qua trục x=0 của đoạn tín hiệu nhiễu nền nhiều hơn đoạn tín hiệu âm thanh. Khi cần phân biệt phần nhiễu nền và tín hiệu, phần tín hiệu vô thanh và hữu thanh thuờng ta chỉ cần 1 chỉ tiêu trên cũng đủ để phân biệt. Nhưng trong trường hợp phức tạp phải sử dụng đến cả năng lượng và tần số cắt không. Các chỉ tiêu trên còn sử dụng để thiết lập tần số cơ bản của tiếng nói. Dưới đây là lưu đồ thuật toán xác định tỷ lệ Zezo-crossing 2.2.7. Xác định tần số Pitch theo AMDF. Thực chất của việc xác định tần số Pitch theo phương pháp AMDF chính là trích rút ra được tần số Pitch hay tần số cơ bản của tiếng nói theo hàm sai khác độ lớn trung bình thời gian ngắn. Hàm sai khác độ lớn trung bình thời gian ngắn được định nghĩa như sau: Giả sử chuỗi tuần hoàn với chu kỳ Po thì hàm AMDF sẽ đạt giá trị cực tiểu tại Po. Như vậy việc xác định chu kỳ Pitch của tiếng nói sẽ thông qua xác định chỉ số Po mà tại đó hàm AMDF đạt giá trị cực tiểu. Trong thực tế chu kỳ Pitch của tiếng nói nằm trong một miền giới hạn vì vậy không cần thiết phải tính toán cho mọi giá trị P của hàm AMDF. Như vậy với mỗi tiếng nói ban đầu ta đều có thể đưa ra được các đặc trưng thời gian ngắn như đã trình bày ở trên. Mỗi âm thanh sẽ có các đặc trưng khác nhau, và các đặc trưng này được xác định theo những tiêu chuẩn riêng. Việc xác định tần số Pitch theo hàm sai khác độ lớn trung bình thời gian ngắn hay xác định tần số cắt không cũng chỉ là cách đưa ra được ước lượng thô về tần số của tiếng nói vì chưa có một phát biểu mang ý nghĩa vật lý về tần số cơ bản của tiếng nói. Nhưng nó cũng là cơ sở quan trọng để nhận dạng được tiếng nói cũng như trong việc nhận dạng các thanh điệu tiếng Việt. Sơ đồ thuật toán tính tần số cơ bản: 2.3. Các kỹ thuật trích rút đặc trưng. 2.3.1. Cắt bỏ đoạn vô thanh. Trong xử lý tiếng nói, một vấn đề đặt ra là phải làm thế nào để xác định được phần âm vô thanh, cắt bỏ nó để có được phần hữu thanh của tiếng nói một cách chính xác. Trên thực tế có rất nhiều cách để xác định phần vô thanh, hữu thanh của tiếng nói song hầu hết đều cho kết quả tương đối; việc xác định phần hữu thanh, vô thanh gặp phải khó khăn lớn khi muốn xác định một cách chính xác do tồn tại nhiễu và tồn tại một số âm có mức năng lượng rất thấp ở trong một số từ nhất định. Các bước xác định phần hữu thanh: Bước 1: Tính giá trị năng lượng trung bình thời gian ngắn cho từng khối dữ liệu ta được E[i]. Bước 2: Tìm giá trị năng lượng trung bình thời gian ngắn lớn nhất trong các khối dữ liệu EMAX. Bước 3: Xác định đoạn âm thanh. Dùng 2 biến vt1,vt2 để lưu 2 giá trị mà ta xác định được là đoạn có dữ liệu tiếng nói. Sau đó ta tiến hành dịch chuyển khối dữ liệu từ vị trí EMAX về bên trái và bên phải để xác định vị trí đầu tiên và vị trí cuối cùng. Khi dịch chuyển khối dữ liệu về hai bên mà E[i]<EMAX*alpha thì đó chính là vị trí cần tìm. Sơ đồ khối thuật toán xác định phần hữu thanh: 2.3.2. Xác định vị trí cắt vần và phụ âm. Ta tiến hành xác định ví trí cắt vần và phụ âm dựa trên cơ sở phương sai năng lượng trong mỗi Frame. Phương sai năng lượng trong mỗi Frame được hiểu là tổng chênh lệch của bình phương biên độ hai mẫu liên tiếp trong một Frame. Bước 1: Tính phương sai năng lượng cho mỗi Frame theo công thức: Bước 2: Dịch chuyển từ vị trí vt1 về vt2 khi gặp Frame thỏa mãn E_frame > alpha đó là vị trí cần tìm. Sơ đồ khối thuật toán tách phụ âm và vần: 2.3.4 Phương pháp trích chọn đặc trưng LPC. Phân tích dự báo tuyến tính là một trong những kỹ thuật phân tích tiếng nói được sử dụng rộng rãi. Nó có thể tính toán hiệu quả các tham số như hàm diện tích của tuyến âm và lưu trữ hoặc truyền thông tiếng nói với tỷ lệ lưu trữ nhỏ. Phân tích dự báo tuyến tính dựa trên cơ sở mẫu tín hiệu yn sẽ được dự báo bằng p mẫu tín hiệu trước nó. yn = + G . en Trong đó : ai (i=1..p) là các hệ số dự báo {yn-i}(i=1..p) là dãy p tín hiệu ngay trước của tín hiệu yn G : hệ số lọc lặp en : sai số dự báo (hay còn gọi là nhiễu) Sai số dự báo en chính là sai số phân tích tiếng nói. Yêu cầu đặt ra cho hệ thống là phải giảm tối thiểu sai số dự báo en . Ở đây ta thực hiện đạo hàm riêng phần en2 cho từng biến ai (i=1..p), tính giá trị hệ số dự báo ai mà với giá trị đó en2 đạt cực tiểu. => => Bài toán đưa về giải hệ phương trình P ẩn để tìm ai . Để giải hệ trên ta cần tính được các E [yn-i . yn-j]. Có hai phương pháp cho phép ta tính các E [yn-i . yn-j] là phương pháp tự tương quan (autocorrelation) và phương pháp hiệp biến (autocovariance). Trong phương pháp tự tương quan ta được : E [ yn-i . yn-j] = Ryy(| i – j |) Giả sử dãy tín hiệu {yn} bằng 0 ngoài đoạn tín hiệu ta cần tính hệ số dự báo. Khi đó : Bây giờ ta có thể mô tả hệ phương trình dạng ma trận như sau : (2.30) Hệ phương trình trên có thể giải bằng phương pháp nghịch đảo ma trận bởi vì ma trận Ryy là ma trận Toeflitz (ma trận đối xứng qua đường chéo chính và các đường chéo song song với đường chéo chính có các phần tử giống nhau). Ma trận Toeflitz luôn có định thức khác 0, cũng có nghĩa là luôn tìm được ma trận nghịch đảo cho ma trận Toeflitz. Nhưng giải hệ phương trình bằng phương pháp ma trận nghịch đảo không hiệu quả, hơn nữa độ sai số rất lớn. Dưới đây trình bày thuật toán Levinson – Durbin cho phép ta tính hệ số dự báo ai (i=1..P) mà không cần giải hệ phương trình trên. * Thuật toán Levinson – Durbin : 1. Đặt E0 = Ryy(0) , i = 0 2. i = 1 3. ki = () 4. Đặt ai(i) = ki 5. aj(i) = aj(i-1) + ki . aj(i-1) (với j = 1..i-1) Ei = ( 1 – ki2 ) Ei-1 Nếu i < P thì i=i+1 quay lại bước 3. Sơ đồ thuật toán trích rút đặc trưng LPC: CHƯƠNG 3. TÌM HIỂU VỀ MẠNG NEURAL 3.1. Các khái niệm chung về mạng Neural. 3.1.1. Khái niệm. Mạng Neural nhân tạo là một mô hình mô phỏng cấu trúc của bộ não con người. Một mạng Neural bao gồm các nút (đơn vị xử lý, neural) và liên kết giữa các nút. Các liên kết được đặc trưng bởi các trọng số thể hiện cho đặc tính kích hoạt ức chế của các Neural. Quá trình học của mạng chính là quá trình hiệu chỉnh các trọng số để đáp ứng yêu cầu bài toán. 3.1.2. Cấu tạo của một Neural. s= s= f () v . . . Hệ số hiệu chỉnh Mạng Neural nhân tạo được kết nối từ các đơn vị xử lý thông tin có kiến trúc giống nhau gọi là các Neural. Một Neural bao gồm các liên kết : nhận tín hiệu vào có các trọng số kết nối tương ứng với tín hiệu đầu vào , một hàm tổng và một hàm chuyển còn gọi là hàm kích hoạt để tạo tín hiệu ra v dựa trên giá (mỗi liên kết thứ i sẽ nhận giá trị vào tương ứng và có trọng số kết nối tương ứng). ●Trọng số kết nối: Các trọng số kết nối của mỗi đường liên kết là yếu tố then chốt của Neural, chúng sẽ được xác định tùy theo tập dữ liệu nhờ quá trình huấn luyện. Tức là mỗi tín hiệu tại đầu vào sẽ được nhân với trọng số kết nối . ●Hàm tổng: Hàm tổng S tích hợp các trọng số kết nối với các tín hiệu vào trên các liên kết tương ứng, trường hợp đơn giản nó có dạng: s=hoặc s=như là thông tin tổng hợp từ tín hiệu vào và trọng số kết nối. ●Hàm chuyển: Hàm chuyển f() hay hàm kích hoạt quy định giới hạn đầu ra của Neural. Hàm chuyển được xem như là một hàm nén; nó nén (giới hạn) phạm vi biên độ cho phép của tín hiệu đầu ra trong một khoảng giá trị hữu hạn. Mô hình trên bao gồm một hệ số hiệu chỉnh tác động từ bên ngoài. Hệ số hiệu chỉnh có tác dụng tăng lên hoặc giảm đi đầu vào thực của hàm chuyển. Hàm f() thường có các dạng sau: ● f = 1 khi v 0 khi v<0 Hàm ngưỡng: ●Hàm tuyến tính: f(v)=av a v ● Hàm sigmoid: f(v)= ● Hàm tanh : f(v)= ● Hàm Gauss: f(v)= 3.1.3. Cấu tạo của mạng Neural. Mạng Neural bao gồm các Neural được kết nối với nhau theo một quy tắc nào đó. Mạng thông dụng nhất là mạng tiến đa mức. Mạng tiến đa mức: Là một trong những kiến trúc mạng căn bản nhất, ở đó các Neuron được chia thành từng mức. Có 3 loại mức: + Mức đầu vào bao gồm các nút nguồn (không phải Neuron) cung cấp các tín hiệu đầu vào chung nhận được từ môi trường. + Mức ẩn: Bao gồm các Neuron không quan hệ trực tiếp với môi trường. + Mức đầu ra: Đưa ra các tín hiệu đầu ra cho môi trường. Lần lượt từ mức đầu vào tới mức đầu ra, cứ tín hiệu đầu ra của một nút mạng thuộc mức trước sẽ là tín hiệu đầu vào cho nút mạng thuộc mức tiếp theo. Từ kiến trúc này ta có thể hình dung mạng Neuron như một bộ xử lý thông tin có nhiều đầu vào và nhiều đầu ra. Tầng vào Tầng ẩn Tầng ra ● Các trọng số kết nối: Dùng cho liên kết các tầng Neural khác nhau và có vai trò quan trọng trong hoạt động của một mạng Neural và nó cũng là sự mô tả đặc tính riêng của mỗi mạng. Với mạng Neural có thể xác định các trọng số kết nối như sau: +Bắt đầu với một tập các trọng số kết nối cho trước và thực hiện quá trình hoạt động của mạng. +Bắt đầu với một tập các trọng số kết nối, chạy mạng và thay đổi một vài hay tất cả các trọng số kết nối, chạy lại mạng với tập các trọng số kết nối mới. Lặp lại quá trình này cho tới khi đạt được mục đích (Training). ● Huấn luyện mạng: Là quá trình học để xác định các trọng số kết nối giữa các Neural. Đây là công việc quan trọng nhất trọng hoạt động của mạng Neural. ●Xây dựng mạng Neural: Các bước để xây dựng mạng Neural 1. Xây dựng kiến trúc mạng. 2. Huấn luyện mạng. 3. Kiểm tra mạng. Xây dựng kiến trúc mạng: Xem xét mạng có bao nhiêu tầng, và các chức năng kết nối có liên quan. Huấn luyện mạng: Chính là việc thay đổi các trọng số kết nối giữa các Neural cho phù hợp. Các trọng số sẽ thay đổi liên tục trong quá trình huấn luyện cho tới khi quá trình huấn luyện thành công. Kiểm tra mạng: Đây là bước cuối cùng nhưng rất quan trọng trong quá trình xây dựng mạng Neural. Cách thức kiểm tra đó là đưa vào các tập dữ liệu để thử (tập testing) và đánh giá kết quả ở đầu ra. Nếu kết quả được như mục đích thiết kế thì việc huấn luyện mạng được đánh giá là thành công. 3.1.4. Các khả năng của mạng. • Khả năng học: Mạng Neural có khả năng tiếp thu sự huấn luyện về mối quan hệ giữa đầu vào và đầu ra của các mẫu học, nếu ta chỉ cho nó đầu vào x tương ứng với đầu ra y thì mạng có thể đưa ra mối liên hệ giữa x và y, lưu nó lại để xử lý khi có đầu vào mới. • Khả năng chuẩn hóa: Mạng neural học các mẫu dữ liệu và có khả năng nhận dạng những dữ liệu mới mà nó cho gần đúng với dữ liệu đã học. • Khả năng tính toán: Mạng Neural có khả năng tính toán với khối lượng công việc lớn với độ phức tạp đa thức và kích thước xác định, đáp ứng yêu cầu của các giải thuật và khối lượng tính toán lớn. Chính nhờ các khả năng nói trên mà mạng được dùng vào nhận dạng tiếng nói vì các mẫu âm học không bao giờ giống nhau một cách tuyệt đối. 3.2. Mạng Neural lan truyền ngược. 3.2.1. Giới thiệu chung. Mạng lan truyền ngược được coi như là mạng đa tầng tiến (feed-forward Neural Network) được sử dụng rộng rãi trong mạng Neural. Mạng lan truyền ngược đạt được tính tổng quát bởi kỹ thuật cơ bản trong lan truyền ngược là cập nhật các trọng số theo hướng giảm Gradient.Mạng có kiến trúc như dưới đây: Kiến trúc mạng. Một mạng lan truyền tổng quát là mạng có n (n > 2) lớp: Lớp vào:có m Neural, ký hiệu xi (i=1..m) Lớp thứ n là lớp ra, ok (k=1..n) Lớp ẩn:có (n-2) là lớp ẩn.Ví dụ n=3 thì có 1 lớp ẩn có p Neural ký hiệu pj (j=1..p) Trong mạng lan truyền ngược: ● Mỗi nút ở lớp thứ i (0 < i < n) liên kết với nút ở lớp thứ (i+1) ● Các nút trong cùng một lớp không liên kết với nhau. ● Mỗi cung trong mạng được gắn một trọng số WR. ● Trạng thái lan truyền, thông tin lan truyền từ lớp vào đến lớp ra. ● Trạng thái học, thông tin lan truyền theo hai chiều nhiều lần để học các trọng số. Trạng thái lan truyền, mạng xử lý mỗi lần chỉ thực hiện với một mẫu. ● Hệ số bias b. ● Hàm kích hoạt trong các Neuron . Mạng lan truyền chỉ có thể ở 1 trong 2 trạng thái: trạng thái lan truyền và trạng thái học. Trạng thái lan truyền, thông tin lan truyền từ lớp nhập đến lớp xuất. Trạng thái học, thông tin lan truyền theo hai chiều nhiều lần để hiệu chỉnh các trọng số.Trạng thái lan truyền, mạng xử lý mỗi lần một mẫu. Trước tiên giá trị của các biến độc lập chuyển tới các nút vào của mạng. Các nút của lớp vào không tính toán gì cả. Các nút của lớp ẩn tính tổng trọng hóa của tất cả các dữ liệu bằng cách cộng dồn tất cả các tích giữa giá trị nút ẩn với trọng số của cung liên kết giữa nút nhập và nút ẩn. Kế tiếp, một hàm truyền được áp dụng trên tổng trọng hóa này cùng với ngưỡng của nút ẩn nào đó để cho ra giá trị thực cho nút ẩn. Sau khi nén tổng trọng hóa của nó, đến lượt mình, mỗi nút ẩn sẽ gửi đến tất cả các nút của lớp ra. Mỗi nút của lớp ra thực hiện các công việc tương tự như đã thực hiện trong nút ẩn để cho ra giá trị của nút xuất. Giá trị của các nút xuất chính là giá trị thực, nghĩa là giá trị của các biến phụ thuộc cần xác định. Bản chất ánh xạ do mạng thực hiện tùy thuộc vào giá trị các trọng số trong mạng. Lan truyền ngược là một phương pháp cho phép xác định tập trọng số tốt nhất trong mạng giải quyết một bài toán được cho. Việc áp dụng phương pháp lan truyền ngược là một quá trình lặp đi lặp lại nhiều lần hai tiến trình: Lan truyền tiến và lan truyền ngược sai số. Hai tiến trình này được áp dụng trên tập mẫu xác định. Ta gọi chung tiến trình này là luyện mạng hay còn gọi là học. Quá trình luyện mạng được bắt đầu với các giá trị trọng số tùy ý, có thể là các số ngẫu nhiên và tiến trình lặp đi lặp lại. Mỗi lần lặp được gọi là một thế hệ. Trong mỗi thế hệ, mạng điều chỉnh các trọng số sao cho sai số giảm dần (sai số là độ lệch giữa các kết xuất thực và kết xuất đích). Tiến trình điều chỉnh nhiều lần giúp cho trọng số dần đạt được tập hợp các giá trị tối ưu. Thường mạng cần thực hiện nhiều thế hệ trước khi việc luyện mạng hoàn tất. Để cập nhật trọng số trong mỗi thế hệ, mạng phải xử lý tất cả các mẫu trong tập mẫu. Đối với từng mẫu, mạng thực hiện phép toán sau đây: Trước tiên, mạng thực hiện quá trình lan truyền tiến, nghĩa là mạng ánh xạ các biến nhập của mẫu hiện hành các giá trị xuất như đã trình bày ở trên, sử dụng các giá trị của trọng số hiện hành. Ở các thế hệ đầu, các kết xuất thường chưa chính xác vì các trọng số ban đầu chưa có gì là đúng. Kế tiếp sai số được tính dựa trên giá trị kết xuất và giá trị đích. Trên cơ sở sai số tính toán được, mạng sẽ cập nhật lại các trọng số theo nguyên tắc lan truyền ngược sai số gọi là giai đoạn lan truyền ngược. Như vậy, để học một mẫu, mạng thi hành hai bước: Lan truyền tiến – thực hiện ánh xạ và lan truyền ngược sai số - cập nhật lại các trọng số. 3.2.2. Giải thuật lan truyền ngược. Giải thuật lan truyền ngược. Bước 1 : Truyền giá trị đầu vào xuôi theo mạng Khởi tạo : Các nơron ở tầng thứ nhất nhận các giá trị đầu vào bên ngoài. a0 = p Đối với mạng có M lớp thì đầu ra mỗi tầng là đầu vào của tầng tiếp theo, do vậy ta có công thức biểu diễn các thao tác này là : am+1 = fm+1(Wm+1am+bm+1) với m=0,1,...,M-1. Bước 2 : Truyền độ nhạy ngược lại trong mạng : Độ nhạy được tính từ tầng cuối cùng là lan truyền ngược lại cho đến tầng đầu : Với: ( m=M-1,…,2,1) F’(n) là đạo hàm của hàm chuyển. Với hàm chuyển được sử dụng trong đồ án là hàm Log_sig ta sẽ tính được đạo hàm của hàm chuyển như sau: Bước 3 : Tiếp theo là cập nhật lại các trọng số và hệ số bias: α là hệ số học của mạng. Nội dung giải thuật lan truyền ngược. Khi mạng muốn học một mẫu học (X, Y) trong đó X là các vectơ tín hiệu đầu vào và Y là các vectơ tín hiệu đầu ra mong muốn. Các thành phần xi của X sẽ được đưa vào các Neuron tương ứng của lớp vào. Vì các Neuron của lớp vào chỉ có trách nhiệm nhận tín hiệu vào, không có bất kỳ xử lý nào, cho nên đầu ra của các Neuron lớp vào cũng chính là các giá trị xi. Các tín hiệu đầu ra của lớp vào sẽ được truyền cho các Neuron của lớp ẩn. Vì các Neuron lớp vào liên kết với các Neuron lớp ẩn bởi các trọng số wịj cho nên mỗi Neuron thứ j của lớp ẩn i sẽ nhận được tổng tín hiệu đầu vào có trọng số netj được tính theo công thức: Sau khi nhận được tổng tín hiệu vào có trọng số netj, hàm kích hoạt (hay còn gọi là hàm truyền) sẽ được sử dụng để biến đổi tạo ra tín hiệu ra của các Neuron ẩn. Giả sử hàm truyền ký hiệu là g() được dùng để xử lý các tín hiệu vào của mỗi Neuron thì tín hiệu ra zj của mỗi Neuron j được tính như sau: Các tín hiệu ra zj cùng với các trọng số liên kết wjk lại tiếp tục được truyền cho Neuron thứ k của lớp ra: Tín hiệu ra ok của mỗi Neuron thứ k của lớp ra sẽ là: Như vậy, với đầu vào là vectơ X, sau khi lan truyền tiến qua mạng, ta sẽ nhận được đầu ra là vectơ O. Tín hiệu đầu ra O này không thể trùng khớp hoàn toàn với tín hiệu đầu ra mong muốn Y. Sai số tổng thể E của mạng được tính dựa trên sai lệch giữa O và Y theo công thức bình phương: Để điều chỉnh cho các tín hiệu ra ok tiến gần đến các tín hiệu yk, các trọng số liên kết giữa các Neuron cần được cập nhật lại theo quy tắc Delta (hay còn gọi là phương pháp giảm theo hướng dốc nhất. Việc cập nhật lại trọng số được trình bày trong bước 3 của phần thuật giải lan truyền ngược. c. Các bước huấn luyện mạng. Đầu vào: Tập mẫu học được cung cấp dưới dạng {x=(x1, x2,…,xs) và y=(y1,y2,…,y} với số lượng mẫu là M, số lớp mạng là T. Các ma trận trọng số w1, w2, …, wm. Đầu ra: o=( o, o,…, o) Bước 1: Khởi tạo: Chọn giá trị hệ số học 0 < < 1 và giá trị cực đại sai số cho phép . Mạng có số lớp là T. Và số lần huấn luyện h. Tùy thuộc vào số lượng các Neuron lớp vào, số lượng lớp ẩn và số lượng Neuron trên lớp ra mà chúng ta sẽ khởi tạo các ma trận trọng số với các thành phần là các giá trị ngẫu nhiên rất nhỏ. Bước 2: Đưa mẫu huấn luyện thứ m vào mạng. Bước 3: Lan truyền xuôi tín hiệu đầu vào lần lượt qua các lớp Neuron cho đến khi lớp q > T (từ lớp ẩn thứ nhất, qua lớp ẩn thứ hai,… đến lớp đầu ra) để tính đầu ra tương ứng tại các lớp theo công thức: đối với Neuron thứ j thuộc lớp q, 1 < q < T. Bước 4: Lan truyền ngược tín hiệu. Tính độ nhạy của mạng và cập nhật lại trọng số. Bước 5: Nếu m < M (chưa hết số mẫu học) thì m = m+1 quay lại bước 2, ngược lại chuyển sang bước 6. Bước 6: Sai số trung bình của mạng được tính theo công thức: RMS= Trong đó n là số thành phần của vectơ ra. Nếu RMS < thì kết thúc. Ngược lại gán h = h+1 rồi lặp lại các bước từ bước 2 đến bước 6, bắt đầu một chu kỳ học mới. Ta thấy: Trong quá trình chuyển thẳng các tham số mạng là cố định, ngược lại trong quá trình lan truyền ngược các tham số này được hiệu chỉnh và cập nhật để mạng có thể nhận dạng các mẫu đã học một cách chính xác. Có nhiều yếu tố ảnh hưởng đến quá trình huấn luyện mạng đó là: hàm truyền, hàm sai số E, hệ số học và các tham số khởi tạo. Do đó ta cần lưu ý trong việc lựa chọn các yếu tố này sao cho phù hợp. CHƯƠNG 4. ỨNG DỤNG MẠNG NEURAL NHẬN DẠNG ÂM THANH TIẾNG VIỆT. Trong chương này đi vào thiết kế mạng Neural lan truyền ngược để xây dựng hệ thống nhận dạng âm thanh tiếng Việt. Qua quá trình nghiên cứu và tiến hành thử nghiệm, em đã tiến hành xây dựng chương trình nhận dạng tiếng nói cho số người nói hữu hạn và tập từ nhận dạng là các chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Sau khi thử nghiệm với các đặc trưng trích rút và các cấu trúc mạng khác nhau chương trình nhận dạng đã đạt được một số kết quả nhất định. 4.1. Thiết kế hệ thống nhận dạng. Các bước thiết kế hệ thống nhận dạng thanh điệu tiếng Việt như trong sơ đồ : 4.2. Thiết kế mạng Neural lan truyền ngược. Em chọn mạng Neural 3 lớp, với một lớp ẩn, hàm truyền làm hàm sigmoid. Mỗi mẫu huấn luyện được thực hiện lặp 1000 lần và sai số là 0.02. Qua thực nghiệm, em đã thử cài đặt mạng và huấn luyện được với các cấu trúc như sau: 4.2.1. Với đặc trưng năng lượng trung bình thời gian ngắn. 4.2.1.1. Thiết kế mạng cho nhận dạng phụ âm. Số Neural tầng đầu vào: từ 16 đến 32 đầu vào. Số Neural tầng ẩn: từ 12 đến 48 Neural lớp ẩn. Số Neural tầng ra: 8 đầu ra tương ứng 8 phụ âm. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 16 đầu vào, 12 Neural tầng ẩn, 8 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.1.2. Thiết kế mạng cho nhận dạng vần. Số Neural tầng đầu vào: từ 32 đến 64 đầu vào. Số Neural tầng ẩn: từ 32 đến 128 Neural lớp ẩn. Số Neural tầng ra: 11 đầu ra tương ứng với 11 vần. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 32 đầu vào, 24 Neural tầng ẩn, 11 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.1.3. Thiết kế mạng cho nhận dạng âm tiết. Số Neural tầng đầu vào: từ 32 đến 64 đầu vào. Số Neural tầng ẩn: từ 32 đến 128 Neural lớp ẩn. Số Neural tầng ra: 11 đầu ra tương ứng 11 âm tiết. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 32 đầu vào, 24 Neural tầng ẩn, 11 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.2. Với đặc trưng năng lượng trung bình thời gian ngắn và tần số cơ bản. 4.2.2.1. Thiết kế mạng cho nhận dạng phụ âm. Số Neural tầng đầu vào: từ 16 đến 32 đầu vào. Số Neural tầng ẩn: từ 12 đến 48 Neural lớp ẩn. Số Neural tầng ra: 8 đầu ra tương ứng 8 phụ âm. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 16 đầu vào, 12 Neural tầng ẩn, 8 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.2.2. Thiết kế mạng cho nhận dạng vần. Số Neural tầng đầu vào: từ 32 đến 64 đầu vào. Số Neural tầng ẩn: từ 32 đến 128 Neural lớp ẩn. Số Neural tầng ra: 11 đầu ra tương ứng 11 vần. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 32 đầu vào, 24 Neural tầng ẩn, 11 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.2.3. Thiết kế mạng cho nhận dạng âm tiết. Số Neural tầng đầu vào: từ 32 đến 64 đầu vào. Số Neural tầng ẩn: từ 32 đến 128 Neural lớp ẩn. Số Neural tầng ra: 11 đầu ra tương ứng 11 âm tiết. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 32 đầu vào, 24 Neural tầng ẩn, 11 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.3. Với đặc trưng bộ hệ số LPC. 4.2.3.1. Thiết kế mạng cho nhận dạng phụ âm. Số Neural tầng đầu vào: từ 40 đến 100 đầu vào. Số Neural tầng ẩn: từ 40 đến 100 Neural lớp ẩn. Số Neural tầng ra: 8 đầu ra tương ứng 8 phụ âm. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 50 đầu vào, 40 Neural tầng ẩn, 8 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.3.2. Thiết kế mạng cho nhận dạng vần. Số Neural tầng đầu vào: từ 120 đến 240 đầu vào. Số Neural tầng ẩn: từ 120 đến 240 Neural lớp ẩn. Số Neural tầng ra: 11 đầu ra tương ứng với 11 vần. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 150 đầu vào, 120 Neural tầng ẩn, 11 đầu ra cho kết quả nhận dạng tốt nhất. 4.2.3.3. Thiết kế mạng cho nhận dạng âm tiết. Số Neural tầng đầu vào: từ 120 đến 240 đầu vào. Số Neural tầng ẩn: từ 120 đến 240 Neural lớp ẩn. Số Neural tầng ra: 11 đầu ra tương ứng 11 âm tiết. Qua quá trình huấn luyện em thấy rằng cấu trúc mạng 180 đầu vào, 120 Neural tầng ẩn, 11 đầu ra cho kết quả nhận dạng tốt nhất. 4.3. Các đầu vào nhận dạng. 4.3.1. Với đặc trưng năng lượng trung bình thời gian ngắn. Đầu vào là năng lượng thời gian ngắn tương ứng. 4.3.1.1. Đầu vào cho mạng nhận dạng phụ âm. Đầu vào là 16 đặc trưng năng lượng thời gian ngắn ứng với 16 Frame dữ liệu. 4.3.1.2. Đầu vào mạng cho nhận dạng vần. Đầu vào là 32 đặc trưng năng lượng thời gian ngắn ứng với 32 Frame dữ liệu. 4.3.1.3. Đầu vào mạng cho nhận dạng âm tiết. Đầu vào là 32 đặc trưng năng lượng thời gian ngắn ứng với 32 Frame dữ liệu. 4.3.2. Với đặc trưng năng lượng trung bình thời gian ngắn và tần số cơ bản. 4.3.2.1. Đầu vào mạng cho nhận dạng phụ âm. Đầu vào là 16 đặc trưng năng lượng thời gian ngắn chia cho tần số cơ bản ứng với 16 Frame dữ liệu. 4.3.2.2. Đầu vào mạng cho nhận dạng vần. Đầu vào là 32 đặc trưng năng lượng thời gian ngắn chia cho tần số cơ bản ứng với 32 Frame dữ liệu. 4.3.2.3. Đầu vào mạng cho nhận dạng âm tiết. Đầu vào là 32 đặc trưng năng lượng thời gian ngắn chia cho tần số cơ bản ứng với 32 Frame dữ liệu. 4.3.3. Với đặc trưng bộ hệ số LPC. 4.3.3.1. Đầu vào mạng cho nhận dạng phụ âm. Đầu vào là 50 đặc trưng LPC được trích rút từ 5 Frame dữ liệu. 4.3.3.2. Đầu vào mạng cho nhận dạng vần. Đầu vào là 150 đặc trưng LPC được trích rút từ 15 Frame dữ liệu. 4.3.3.3. Đầu vào mạng cho nhận dạng âm tiết. Đầu vào là 180 đặc trưng LPC được trích rút từ 18 Frame dữ liệu. 4.4. Thiết kế chương trình. Chương trình nhận dạng gồm các Form sau: 4.4.1. Form chính. Gồm các menu: Thu âm: thu âm thanh phục vụ huấn luyện và nhận dạng. Xử lí âm thanh: thao tác xử lí các file âm thanh. Huấn luyện theo năng lượng: thực hiện huấn luyện mạng theo năng lượng trung bình thời gian ngắn. Huấn luyện mạng theo năng lượng và tần số: huấn luyện mạng theo năng lượng trung bình thời gian ngắn và tần số cơ bản. Huấn luyện mạng theo LPC: huấn luyện mạng theo các đặc trưng LPC. Nhận dạng theo năng lượng: thực hiện nhận dạng theo năng lượng trung bình thời gian ngắn. Nhận dạng theo năng lượng và tần số: nhận dạng theo năng lượng trung bình thời gian ngắn và tần số cơ bản. Nhận dạng theo LPC: nhận dạng theo các đặc trưng LPC. Thoát: thoát ra khỏi chương trình, giải phóng bộ nhớ. Giao diện chương trình: 4.4.2. Form thu âm. Sử dụng Sound Recorder có sẵn của Windows. 4.4.3. Form xử lí âm thanh: Các chức năng: Open: mở các file âm thanh cần xử lí. Tách PAD: xử lí và tách phụ âm, vần. Play: nghe âm tiết. Play Phu Am: nghe phân phụ âm. Play Nguyen Am: nghe phần vần. Giao diện chương trình: 4.4.4. Form huấn luyện theo năng lượng. Các nút chức năng: Lớp học: lựa chọn huấn luyện cho phụ âm, vần hoặc âm tiết. Mở file: mở các file cần huấn luyện. Tạo mạng: lấy mạng cho huấn luyện. Huấn luyện: thực hiện huấn luyện mạng. Giao diện chương trình: 4.4.5. Form huấn luyện theo năng lượng và tần số. Các nút chức năng: Lớp học: lựa chọn huấn luyện cho phụ âm, vần hoặc âm tiết. Mở file: mở các file cần huấn luyện. Tạo mạng: lấy mạng cho huấn luyện. Huấn luyện: thực hiện huấn luyện mạng. Giao diện chương trình: 4.4.6. Form huấn luyện theo LPC. Các nút chức năng: Lớp học: lựa chọn huấn luyện cho phụ âm, vần hoặc âm tiết. Mở file: mở các file cần huấn luyện. Tạo mạng: lấy mạng cho huấn luyện. Huấn luyện: thực hiện huấn luyện mạng. Giao diện chương trình: 4.4.7. Form nhận dạng theo năng lượng. Các chức năng chính: Học lớp: lựa chọn nhận dạng theo các lớp học phụ âm, vần, âm tiết. Open net: mở mạng dùng để nhận dạng. Open: mở các file cần nhận dạng. Nhận dạng một file: cho phép nhận dạng và huấn luyện file hiện trong textBox. Nhận dạng trong list Box: nhận dạng toàn bộ các file trong list Box. Giao diện chương trình: 4.4.8. Form nhận dạng theo năng lượng và tần số. Các chức năng chính: Học lớp: lựa chọn nhận dạng theo các lớp học phụ âm, vần, âm tiết. Open net: mở mạng dùng để nhận dạng. Open: mở các file cần nhận dạng. Nhận dạng một file: cho phép nhận dạng và huấn luyện file hiện trong textBox. Nhận dạng trong list Box: nhận dạng toàn bộ các file trong list Box. Giao diện chương trình: 4.4.7. Form nhận dạng theo LPC. Các chức năng chính: Học lớp: lựa chọn nhận dạng theo các lớp học phụ âm, vần, âm tiết. Open net: mở mạng dùng để nhận dạng. Open: mở các file cần nhận dạng. Nhận dạng một file: cho phép nhận dạng và huấn luyện file hiện trong textBox. Nhận dạng trong list Box: nhận dạng toàn bộ các file trong list Box. Giao diện chương trình: 4.5. Phân tích và đánh giá kết quả. 4.5.1. Thiết kế dữ liệu. Dữ liệu được em tự thu và thu của một số đồng chí trong lớp tin học khóa 38. Trong thời gian thực hiện đồ án em đã thu được khoảng 3000 mẫu âm thanh và đã đưa vào huấn luyện. 4.5.2. Đánh giá kết quả. Sau một thời gian huấn luyện mạng Neural lan truyền ngược để nhận dạng thanh điệu tiếng Việt, với các phương án lấy đầu vào như trong phần 4.1. em đạt được kết quả như sau: Nhận dạng theo năng lượng Cho kết quả nhận dạng tương đối tốt, kết quả nhận dạng cho vần và âm tiết đạt 35-50 %. Nhận dạng theo năng lượng và tần số Kết quả nhận dạng tương đối tốt, kết quả nhận dạng cho vần và âm tiết đạt 40-60%. Nhận dạng theo LPC Kết quả nhận dạng không được tốt, kết quả đạt 20-30%. Nhận xét: ● Kết quả nhận dạng cho các từ không giống nhau, một số từ nhận dạng tương đối tốt như 1,10. ● Việc nhận dạng phụ âm chất lượng còn rất thấp do phần dữ liệu phụ âm ngắn, với năng lượng thấp. ● Kết quả nhận dạng tốt với số lượng người nói hạn chế, và đã được huấn luyện. Kết luận Sau một thời gian thực hiện nghiên cứu về đề tài , đề tài đã được hoàn thành đúng tiến độ và đạt được những kết quả nhất định, đã giải quyết được một phần bài toán nhận dạng tiếng Việt. Tuy nhiên do sự phức tạp của âm thanh và sự hạn chế của bản thân em nên kết quả nhận dạng âm thanh tiếng Việt còn chưa được như mong muốn. Đề tài đã nghiên cứu về đặc điểm của tiếng Việt, các vấn đề chung của phân tích tiếng nói; đề xuất cách xác định các đặc trưng của tiếng nói mà cụ thể trong đồ án đã lựa chọn cách trích rút đặc trưng về năng lượng trung bình thời gian ngắn và tần số cắt không của tín hiệu tiếng nói, Pitch theo hàm sai khác độ lớn thời gian ngắn; đưa ra thuật toán xác định phần vô thanh và hữu thanh của tiếng nói-đây là một trong số vấn đề quan trọng của việc xử lý tín hiệu tiếng nói và cũng là khâu quan trọng trong bài toán nhận dạng tiếng nói. Đề tài đã nghiên cứu kỹ về mạng Neural với mạng lan truyền ngược và ứng dụng của nó trong nhận dạng thanh điệu tiếng Việt. Đề tài trình bày cách huấn luyện (cách học) của mạng để nó mô phỏng theo tư duy của con người-có khả năng ghi nhớ việc học. Đề xuất cách thức cải tiến thuật toán học của mạng để có thể huấn luyện mạng đạt kết quả tốt nhất. Việc hoàn thành đồ án ngoài sự nỗ lực của bản thân còn có sự giúp đỡ chỉ bảo rất tận tình của thầy giáo Đại tá, PGS-TS Nguyễn Văn Xuất. Em xin chân thành cảm ơn thầy đã giúp đỡ em trong quá trình thực hiện đề tài. Các tài liệu tham khảo Tiếng Việt: 1. Tài liệu bài giảng mạng Neural của TS Nguyễn Xuân Hoài-Học viện kỹ thuật quân sự. 2. Giáo trình xử lý tín hiệu số-TS Dương Tử Cường-HVKTQS. 3. Tiếng Việt-mấy vấn đề về ngữ âm, ngữ pháp, ngữ nghĩa, NXB Giáo dục của tác giả Cao Xuân Hạo(1998). 4. Bạch Hưng Khang – Nghiên cứu phát triển nhận dạng tổng hợp và xử lý ngôn ngữ tiếng Việt. Nhánh đề tài: Tổng hợp và nhận dạng tiếng Việt.Đề tài mã số KC01-03. Hà Nội 06/2004. Tiếng Anh: 5. Neural Network Design. Tác giả: Martin T.Hagan; Howard B.Demuth; Mark Beale. 6. Một số tài liệu thu thập trên Internet.

Các file đính kèm theo tài liệu này:

  • docNghiên cứu mạng Neurral và xây dựng ứng dụng nhận dạng tiếng Việt.doc
Luận văn liên quan