Mở đầu: ếng nói là phương tiện giao ti ếp ếp cơ bả n nh ấ t của con người, sửdụng lời nói là một cách di ễn ễn đạ đ ạt Ti ếng đơn giản và hiệu quả nh ất. Đã từ lâu,con người luôn mơ ước đế n các hệ th ống máy điều khi ể ển t ự động có th ể giao ti ế ế p b ằng ti ế ế ng ng nói tựnhiên của con người. ển của khoa học kỹ thuật và công nghệ, đặc biệt trong lĩnh vực tin Ngày nay, cùng với sự phát tri ể ều công việc. Nhu c ầu giao ti ế ế p học. Các hệ th ống máy tự động đã dần thay th ế con người trong nhi ề với thi ế ng nói là r ấ t c ần thi ết, ế t bị máy b ằng ti ế ế ng ết, đó là phương thức giao ti ếp ếp văn minh và tự t ự nhiên
ế ng ều công nh ấ t.Nh t.Nhận d ạng ti ế ng nói là một v ấn đề không mới. Trên th ế giới đã và đang có có rấ t nhi ề ều phương pháp nhận dạng ti ế ế ng trình nghiên cứu v ề v ấn đề này với r ấ t nhi ều ng nói khác nhau. Và những nghiên cứu đó cũng có những thành công đáng kể . Có th ể k ể đến như: hệ th ống nhận dạng ti ế ng nói ti ế ng Anh Via Voice của IBM, Spoken T oolkit c ủa CSLU (Central of Spoken Laguage ế ng ế ng Under-standing), Speech Recognition Engine c ủa Microsoft, Hidden Markov Model toolkit c ủa đại học Cambridge, CMU Sphinx c ủa đại học Carnegie Mellon,… ngoài ra, một s ố hệ th ống nhận dạng
ế n nói ti ếng ếng Pháp, Đức, Trung Qu ốc,... cũng khá phát triển. Ti ế ế ng ti ế ng Việt thì cũng có mộ t s ố công trình của các nhóm như: AILab, Vietvoice, Vietvoice, Vspeech… ng nói v ẫn là một lĩnh vực khá mới mẻ. Đến nay tuy đã có Nhưng đối với nước ta, nhận dạng ti ế ế ng ều nghiên cứu v ề nhận d ạng ti ế ế ng ế ng nhi ề ng nói ti ế ng Việt và đã đạt được m ột s ố thành tựu, n hưng nhìn ết để có th ểtạo ra các sản ph ẩm mang tính ứng dụng chung v ẫn chưa đạt được k ế t quả c ần thi ết ểu đượ c cách giao ti ế ế p giữa người và máy tính, lu ận văn này nghiên cao.Với mong mu ốn có th ể hi ểu cứu các phương pháp nhận dạng ti ế ng nói, từ đó xây dựng một chương trình demo nhận dạng ti ế ng ế ng ế ng ế ng ểu được. nói ti ế ng Việt mà khi con ngườ i nói máy tính có th ể hi ểu
GIỚ Ề SPHINX:
Sphinx là (Sphinx là ph ần ngu ồn mở được nhi ều ều chuyên gia và người sử dụng làm công cụ nhận ế ng ế t b ằng ngôn ngữ Java. dạng giọng nói )một hệth ống nhận dạng ti ế ng nói hoàn chirh nh ấ t được vi ế Sphinx được công b ố và chia s ẻ mã ngu ồn mở ần l ần đầu tiên vào năm 2010 do nhóm nghiên cứu n,Sau đó với sự giúp đỡ của các Sphinx cởCarnegie Mellon University (CMU) nghiên c ứu và phát tri ể ển,Sau t ổ chức ( Sun Microsystems Laboratories, MERL (Mitsubishi Electric Research Labs) và HP (Hewlett Packard), và với sựđóng góp của các trường đại học ở UCSC (University of California at Santa Cruz) và
MIT(Massachusetts Institute of Technology). Sphinx ti ế p tục nghiên cứu và b ổ sung các phiên b ản mới cho sphinx(sphinx 2 , sphinx 3,..) mới nh ấ t sphinx 4.
Các tính năng chính (đặc điểm ): - Nhận d ạng ti ế ng nói ở ch ế độ trực ti ế p và theo lô, có kh ả năng nhận d ạng ti ế ng nói rời r ạc và liên tục. - Ki ế n trúc ngoại vi t ổng quát có khả năng tháo lắp. Bao g ồm kh ả năng bổsung các tính năng tiề n nh ấ n (preemphasis), c ửa s ổ Hamming, bi ến đổi Fourier nhanh, thang lọc t ần s ố Mel, bi ến đổi cosine rời rạc, chu ẩn hóa cepstral, và trích đặc trưng cepstra, delta cepstra, double delta cepstra. - Ki ế n trúc mô hình ngôn ng ữ t ổng quát và có khả năng tháo lắp. Bao g ồm h ỗ trợ mô hình ngôn ngữ dạng ASCII và các phiên bản nhị phân của unigram, bigram, trigram, Java Speech API Grammar Format (JSGF), và ARPA-format FST grammars. - Ki ế n trúc mô hình âm t ổng quát. Bao g ồm h ỗ trợ các mô hình âm học của Sphinx3. - Bộ quản lý tìm ki ế m t ổng quát. Bao g ồm h ỗ trợ các tìm ki ế m breadth first và word pruning. - Các tiện ích cho việc xử lý k ế t quả sau khi nhận dạng, bao g ồm tính điểm s ố tin cậy, phát sinh các
lưới và nhúng k ịch bản ECMA vào th ẻ JSGF. Các công cụ 67 độc lập bao g ồm các công cụ để hi ển thị dạng sóng và ảnh ph ổ và trích đặc trưng từtập tin âm thanh. Sphinx đã trở thành một framework nhận d ạng ti ế ng nói mạnh m ẽ, đã được s ử dụng trong nhi ều hệ th ống nhận dạng bao g ồm các chương trình điện đàm như Cairo, Freeswitch, jvoicexml,… các chương trình điều khi ển như Gnome-Voice-Control, Voicekey, SpeechLion,… KI Ế N TRÚC SPHINX: Sphinx Framework được thi ế t k ế với độ linh hoạt và tính mô đun hóa cao.
ình dưới đây biểu di ễn bao quát ki ế n trúc c ủa hệ th ố ng. M ỗi thành ph ần được gán nhãn bi ểu di ễn một mô đun có thể d ễ dàng được thay th ế , cho phép các nhà nghiên cứu thử nghiệm một mô đun khác mà không c ần phải thay đổi các ph ần còn lại của hệ th ống.
Có 3 mô đun chính trong Sphinx Framework: Bộngoại vi (FrontEnd), B ộ giải mã (Decoder) và b ộ ngôn ngữ (Linguist).
Bộ ngoại vi nhận vào một hay nhi ều tín hiệu s ố và tham s ố hóa chúng thành một dãy các đặc trưng (Feature). Bộ ngôn ng ữ chuy ển đổi t ấ t cả các mô hình ngôn ng ữ chu ẩn, cùng với thông tin cách phát âm trong từ điển (Dictionary) và thông tin c ấ u trúc từ một hay nhi ều các tập hợp các mô hình âm học (AcousticModel) vào một đồ thị tìm ki ế m (SearchGraph). Bộ quản lý tìm ki ế m (SearchManager) trong bộ giải mã sử dụng các đặc trưng từ bộ ngoại vivà đồ thị tìm ki ế m từ bộ ngôn ngữ để thực hiện vi ệc gi ải mã, phát sinh các k ế t quả(Result). Tại b ấ t k z thời điểm trước và trong quá trình x ử lý nhận dạng, ứng dụng (Application) đưa ra các điều khi ển t ới m ỗi mô đun, trở thành một đối tác hiệu qu ảtrong quá trình xử lý nhận dạng.Hệ th ống Sphinx4 có một s ố lượng l ớn các tham s ố c ấ u hình để điều chỉnh hiệu su ấ t của hệ th ống. Thành ph ần quản lý c ấ u hình (ConfigurationManager) được dùng để c ấ u hình các tham s ố đó. Bộ quản lý c ấ u hình còn giúp cho Sphinx4 có khảnăng nạp
động và c ấu hình các mô đun trong thời gian thực thi, làm cho Sphinx4 trởnên linh hoạt và có kh ả năng tháo lắp. Bộ ngoại vi - FrontEnd:
Đây là Quá trình trích đặc trưng của bộ ngoại vi dùng MFCCMục đích của bộ ngoại vi là tham s ố hóa một tín hiệu đầu vào (âm thanh) thành m ột dãy các đặc trưng xuấ t ra. Bộ ngoại vi bao g ồm một hay nhi ều chu ỗi song song các mô đun xử lý tín hiệu giao ti ế p có khảnăng thay thế gọi là các DataProcessor. Việc h ỗ trợ nhi ều chu ỗi cho phép gi ảlập tính toán các loại tham s ốkhác nhau trong cùng một hay nhi ều tín hiệu vào. Điều này cho phép tạo nên các hệth ống có th ể giải mã cùng một lúc sử dụng các loại tham s ốkhác nhau,
Hình 4.3. Chu ỗi các DataProcessor M ỗi DataProcessor trong bộ ngoại vi h ỗ trợ một đầu vào và một đầu ra có th ể được k ế t n ối v ới DataProcessor khác, cho phép tạo thành dãy các chu ỗi dài chuyên biệt. Sphinx4 cho phép khả năng phát sinh dãy các đặc trưng song song và cho phép mộ t s ố lượng tùy ý các dòng song song.S ử dụng
ConfigurationManager, người dùng có th ể xâu chu ỗi các DataProcessor vói nhau theo b ấ t k z cách nào cũng như các bổ sung DataProcessor k ế t hợp chặt chẽ trong thi ế t k ế riêng của họ. Bộ ngôn ngữ - Linguist
Bộngôn ngữphát sinh đồthịtìm ki ế m (SearchGraph) đểsử dụng trong bộgiải mã trong quá trình tìm ki ế m, trong khi ẩn đi các phần phức t ạp bao g ồm phát sinh ra đồthịnày. Trong Sphinx4 bộngôn ngữ là m ột module có th ể g ắn thêm, cho phép người dùng có th ể c ấu hình động h ệ th ống v ới các cài
đặt khác vào bộ ngôn ngữ. Một b ổ sung bộ ngôn ngữ thông thường xây dựng nên đồ thị tìm ki ế m sửdụng c ấ u trúc ngôn ngữ
được mô tả bởi LanguageModel cho trước và c ấ u trúc hình học tôpô của mô hình ngôn ng ữ (các HMM cho các đơn vị âm cơ bản sử dụng bởi hệ th ống). Bộ ngôn ngữ có th ể cũng sử dụng một từ điển (thường là một t ừ điển phát âm) để ánh xạ các từ từ mô hình ngôn ngữ vào các chu ỗi c ủa các thành ph ần mô hình âm h ọc. Khi phát sinh đồ thị tìm ki ế m, b ộ ngôn ngữ có th ể còn k ế t h ợp các đơn vị từ con (subword) với các ngữ cảnh độ dài tùy ý, n ếu được cung c ấ p. B ằng cách cho phép các b ổ sung khác nhau của bộ ngôn ngữ được g ắn k ế t vào trong thời gian chạy, Sphinx4 cho phép các cá nhân cung c ấ p các c ấ u hình khác nhau cho các hệth ống và các yêu c ầu nhận dạng khác nhau.
Bộ giải mã - Decoder:
Vai trò chính của b ộ giải mã là sử dụng các đặc trưng (Features) từ bộ ngo ại vi k ế t hợp v ới đồ thị tìm ki ế m từ bộ ngôn ngữ để phát sinh các k ế t quả (Result). Kh ối bộ giải mã bao g ồm một bộ quản lý tìm ki ế m (SearchManager) có khả năng tháo lắp và các mã h ỗ trợ khác để đơn giản hóa quá trình giải mã cho một ứng dụng. Do v ậy, thành ph ần đáng quan tâm củ a b ộ gi ải mã là bộ qu ản lý tìm ki ế mBộ giải mã chỉ đơn thuần bảo bộ quản lý tìm ki ế m nhận dạng một t ập các c ấu trúc đặc trưng. Tạ i m ỗi bước x ử lý, Bộ quản lý tìm ki ế m t ạo ra một đối tượng k ế t qu ả chứa t ấ t c ả đường d ẫn đế n m ột tr ạng thái không phát sinh cu ối cùng (final non-emitting state). Để x ử lý k ế t qu ả, Sphinx cung c ấ p các tiện ích có khả năng phát sinh một lưới và các đánh giá tin cậy từ k ế t quả. Không như các hệ th ống khác, các ứng dụng có th ể
điều ch ỉnh không gian tìm ki ếm và đối tượ ng k ế t qu ả giữa các bước, cho phép ứng d ụng trở thành một đối tác trong quá trình xử lý.Gi ống b ộ ngôn ngữ, b ộ quản lý tìm ki ế m không bị ràng buộc v ới b ấ t cứ b ổsung cụ th ể nào. Quá trình hoạt động:
ình 5.3. Sơ đồ hoạt động của chương trình demo Đầu tiên, tín hiệu ti ế ng nói qua micro sẽ được đưa vào bộ ngoại vi, ởđây tín hiệu được tham s ố hóa thành một dãy đặc trưng và chuyể n vào cho bộ giải mã. Bộ ngôn ngữchuy ển đổi các mô hình ngôn ng ữ, thông tin phát âm trong t ừ điển và thông tin c ấ u trúc âm trong mô hình âm h ọc vào một đồ thị tìm ki ế m trong bộ giải mã. Bộ giải mã sẽ xác định chu ỗi đặc trưng gần gi ống nh ất trong đồ thị tìm ki ế m so với đặc trưng tiế ng
nói được cung c ấ p bởi bộ ngoại vi và phát sinh k ế t quả. ------------------------------------------(MÔ HÌNH NGÔN NGỮ) Quá trình so kh ớp m ẫu âm học và ki ế n thức v ề ngôn ngữ là quan trọng như nhau trong nhận dạng và hi ểu ti ế ng nói tự nhiên. Trong nhận dạng ti ế ng nói thực ti ễn, có th ể không có khả năng để tách việc sử dụng của các c ấp độ khác nhau của tri thức, vì th ế chúng thường được tích hợp ch ặt ch ẽ. Chúng ta sẽ tìm hi ểu v ề lý thuy ế t ngôn ngữ hình thức và xác su ấ t mô hình ngôn ngữ. Ngôn ngữ hình thức có 2ph ần cơ bản: ngữ pháp và thuật toán phân tích cú pháp. Ngữ pháp là sự mô tả hình thức của c ấu trúc được cho phép đối với ngôn ngữ. Kỹ thuật phân tích cú pháp là phương pháp phân tích câu để th ấ y n ế u c ấ u trúc của nó là tuân theo ngữ pháp. Với sự có mặt của kh ối lượng nhi ều văn bản mà c ấ u trúc của nó được chú thích b ằng tay. M ối quan hệ xác su ấ t giữa dãy các từ có th ể được d ẫn su ấ t tr ực ti ếp và được mô hình từ tập văn bản
được gọi là mô hình ngôn ng ữ Stochastic, như n-gram. Mô hình ngôn ngữ Stochastic đóng vai trò thi ế t y ế u trong xây dựng hoạt động một hệ th ống ngôn ngữ nói. Mô hình ngôn ngữ của bộ ngôn ngữ cung c ấ p c ấ u trúc ngôn ngữ c ấp độ từ(word-level), có th ể bi ểu di ễn b ởi b ấ t c ứ s ố lượng các b ổ sung có th ể g ắn thêm. Những b ổ sung này thường là một trong hai mục: các graph-driven grammar và các mô hình Stochastic N-Gram. Các Graph-driven grammar bi ễu di ễn m ột đồ thị từ có hướng trong đó mỗ i nút bi ểu di ễn m ột t ừ đơn và mỗi cung bi ễu di ễn xác su ấ t d ịch chuy ển sang một t ừ. Các mô hình stochastic N -Gram cung c ấ p các xác su ấ t cho các từ được cho dựa vào việc quan sát n-1 t ừ đứng trước.
MÔ HÌNH ÂM Mô hình âm học cung c ấ p m ột ánh xạ giữa m ột đơn vị ti ế ng nói và một HMM có th ể được đánh giá dựa vào các đặc trưng đượ c cung c ấ p bởi bộ ngoại vi. Các ánh x ạ có th ể đưa thông tin vị trí của từ và ngữ cảnh vào tài kho ản. Ví dụ trong trường h ợp các triphone, ngữ cảnh miêu tả các âm vị
đơn ở bên trái và bên phải c ủa âm vị đã cho, và vị trí của t ừ mô t ả triphone ở vị trí b ắt đầu, ở giữa hay ở cu ối c ủa m ột t ừ (hay chính nó là một t ừ). Định nghĩa ngữ cảnh này không bị c ố định bởi Sphinx4, Sphinx4 cho phép định nghĩa các mô hình âm học ch ứa các tha âm v ị cũng như các mô hình âm học mà ngữ cảnh của nó không c ần phải sát với đơn vị. Thông thường, bộ ngôn ngữ phân tích m ỗi từ trong bộ từ vựng được kích hoạt thành một dãy các đơn vị từ con phụ thuộc ngữ cảnh. Bộ ngôn ngữ sau đó chuyển các đơn vị này và các ngữ cảnh của nó đế n mô hình âm học, tìm các đồ thịHMM g ắn v ới các đơn vị đó. Sau đó nó dùng các đồ thị HMM này k ế t hợp với mô hình âm h ọc để xây dựng nên đồ thị tìm ki ế m
ĐỒ THỊ TÌM KI Ế M
Đồ thị tìm ki ế m là c ấ u trúc dữ li ệu chính sử dụng trong su ốt quá trình giải mã.Đó là một đồ thị có hướng trong đó mỗ i nút, gọi là một Trạng thái tìm ki ế m (SearchState), bi ểu di ễn một tr ạng thái phát hay không phát (emitting state hay non-emitting state). Các tr ạng thái phát có th ể được đánh giá
dựa trên các đặc trưng âm họ c vào (incoming acoustic feature) trong khi các tr ạng thái không phát
thông thường được dùng để bi ểu di ễn các c ấ u trúc ngôn ngữ c ấp độ cao như các từ và các âm vị không th ể đánh giá trực ti ế p dựa trên các đặc trưng đầ u vào. Các cung giữa các trạng thái bi ễu di ễn các bi ến đổi trạng thái có th ể, m ỗi cung có một xác su ấ t chỉ khả năng biến đổi dọc theo các cung.
ĐẶC ĐỂM CHÍNH CỦA BỘ TÌM KI Ế M :là việc thực thi của trạng thái tìm ki ế m không c ần c ố định. Như vậy, m ỗi b ổ sung bộ ngôn ngữ thông thường cung c ấ p th ực thi cụ th ể của SearchState của riêng nó mà có th ể dựa trên các đặc trưng khác nhau củ a bộ ngôn ngữ cụ th ể. LỢ I ÍCH Mã ngu ồn của Sphinx được vi ế t rõ ràng và d ễ đọc. Nhi ều nhà nghiên cứu không chỉ mu ốn sử dụng
Sphinx như một công cụ mà còn mu ốn thay đổi mã ngu ồn để phù hợp với mục đích của họ.