Bài toán nhận dạng tiếng nói là làm cho máy tính nhận biết và chuyển tiếng nói thu nhận của người thành một chuỗi các từ tương ứng, kết quả này có thể được dùng trong các ứng dụng điều k
Trang 1Khoa Công Nghệ Thông Tin
BÁO CÁO
THỰC TẬP TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG GIỌNG NÓI
SPEECH TO TEXT
Sinh Viên Thực Hiện: Nguyễn Cao Thăng
Giảng Viên Hướng Dẫn: TS.Nguyễn Tấn Khôi
Đà Nẵng, 2/2012
Trang 2NHẬN XÉT CỦA GIÁO VIÊN
Trang 3
LỜI MỞ ĐẦU Nhân loại ngày nay đang chứng kiến sự phát trển mạnh mẽ của ngành Công nghệ Thông tin, một trong những ngành mũi nhọn của nhiều quốc gia trên thế giới Sự phát triển vượt bậc của nó là kết quả tất yếu của sự phát triển kèm theo các thiết bị phần cứng cũng như phần mề tiện ích
Sự phát triển đó đã kéo theo rất nhiều các ngành khác phát triển theo, trong đó có lĩnh vực nghiên cứu khoa học Công nghệ ngày càng phát triển, tốc độ xử lý của các thiết bị cũng không ngừng tăng cao, nhu cầu thực tiễn của con người không ngừng thay đổi Vì thế việc xây dựng những ứng dụng phục vụ cho nhu cầu của con người trong thời đại ngày nay rất cần thiết
Trang 4MỤC LỤC
Chương I: TỔNG QUAN VỀ ĐỀ TÀI 6
1 Bối cảnh lý do thực hiện đề tài 6
2 Mục đích của đề tài 6
3 Phương pháp thực hiện đề tài 6
Chương II: CƠ SỞ LÝ THUYẾT 7
1 Giới thiệu chung 7
2 Cơ sở lí thuyết 8
2.1 Sơ lược về nhận dạng giọng nói 8
2.1.1 Công thức cơ bản 8
2.1.2 Các thành phần của một bộ nhận dạng giọng nói 9
2.1.3 Engine Speech Recoginize (SR) 12
2.2 Hoạt động của hệ thống Speech To Text 13
Chương III: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 14
1 Phân tích hệ thống 14
1.1 Phân tích nhu cầu thực tiễn 14
1.2 Yêu cầu đặt ra 14
2 Thiết kế hệ thống 14
2.1 Sơ đồ use case 14
2.2 Sơ đồ hoạt động 15
2.3 Sơ đồ tuần tự 15
3 Kết quả chương trình 16
Chương IV:TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 17
1 Thực thi chương trình 17
2 Đánh giá kết quả 17
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 18
1 Kết luận 18
2 Hướng phát triển 18
TÀI LIỆU THAM KHẢO 19
Trang 5DANH MỤC HÌNH ẢNH
Hình 1: Mô tả quá trình nhận dạng tiếng nói 7
Hình 2: Mô tả của mô hình ngữ âm 10
Hình 3: Quá trình chuyển từ Speech To Text 12
Hình 4: Lưu đồ thuật toán Speech To Text 13
Hình 5: Sơ đồ use-case 14
Hình 6: Sơ đồ hoạt động 15
Hình 7: Sơ đồ tuần tự 15
Hình 8: Giao diện Speech To Text 16
Trang 6Chương I: TỔNG QUAN VỀ ĐỀ TÀI
1 Bối cảnh lý do thực hiện đề tài
Hiện nay, trên thế giới việc sử dụng các phần mềm về âm thanh không còn là một vấn đề quá mới mẻ Tuy nhiên mỗi quốc gia đều có một đặc thù ngôn ngữ khác nhau nên không có các quy tắc, các luật chung trong việc xử lý từ Vì thế em đã chọn và nghiên cứu, xây dựng chương trình nhận dạng giọng Speech To Text ( chuyển âm thanh thành văn bản)
2 Mục đích của đề tài
Xây dựng ứng dụng nhận dạng giọng nói Speech To Text, chuyển âm thanh được nhận dạng sang dạng text
3 Phương pháp thực hiện đề tài
Sử dụng ngôn ngữ lập trình C#, các thư viện hỗ trợ nhận dạng giọng nói SpeechRecognitionEngine , VSpeech
Trang 7Chương II: CƠ SỞ LÝ THUYẾT
1 Giới thiệu chung
Hiện nay có nhiều cách tiếp cận nhận dạng tiếng nói khác nhau bao gồm: sử dụng Mô hình HMM, mạng Neural, cơ sở tri thức, hoặc mô hình kết hợp giữa các
mô hình
Ta thấy đây là bài toán rất khó, vì âm thanh người nói khá phức tạp, có tính liên tục
và các âm quyện nối vào nhau, vì mỗi người mỗi giọng, vì có các tạp âm khác nhiễu vào thiết bị thu, Với tiếng nói chuẩn, các hệ hiện đại cũng mới nhận dạng đúng được khoảng 70% Bài toán nhận dạng tiếng nói là làm cho máy tính nhận biết và chuyển tiếng nói thu nhận của người thành một chuỗi các từ tương ứng, kết quả này có thể được dùng trong các ứng dụng điều khiển thiết bị, nhập dữ liệu, soạn thảo văn bản, hoặc chuyển cho một quá trình xử lý ngôn ngữ ở mức cao hơn Nhận dạng tiếng nói phát triển từ nhận dạng các từ nói riêng biệt đến nhận dạng các từ được nói liên tục, bộ
từ vựng sử dụng trong hệ thống được chia thành 3 nhóm:
Từ vựng nhỏ: sử dụng tối đa khoảng 100 từ
Từ vựng trung bình: sử dụng từ hàng trăm đến 20000 từ
Từ vựng lớn: cho phép mở rộng đến hơn 64000 từ Một hệ thống dạng tiếng nói là một thiết bị có khả năng tự động chuyển đổi tiếng nói thành văn bản
Hình 1: Mô tả quá trình nhận dạng tiếng nói
Hình trên mô tả một cách tổng thể về quá trình nhận dạng tiếng nói Đầu tiên, tiếng nói được phát ra theo ý nghĩ của người nói, tiếng nói này được thu nhận thu dưới dạng sóng âm, sau khi rút trích các đặc trưng và được chuyển tới bộ phận xử lý ngữ âm Tại
Trang 8đây các đặc trưng được phân tích thành các ngữ âm Sau đó các ngữ âm này được xử lý trong bộ giải mã để cho ra chuỗi từ phù hợp
Ta có thể nhận thấy rằng kết quả của nhận dạng phụ thuộc vào nhiều yếu tố như: chất lượng tiếng nói, thiết bị thu âm và bộ giải mã Bộ giải mã được xem là thành phần quan trọng nhất của hệ thống nhận dạng tiếng nói
Hiện nay có nhiều cách để thiết kế và cài đặt một bộ giải mã, nhưng cách được sử dụng phổ biến nhất và hiệu quả hơn là dùng mô hình HMM kết hợp với lý thuyết thống kê
Như trình bày ở hình 0.0, đầu vào của hệ thống là một chuỗi các ngữ âm quan sát được X Cơ chế giải mã là từ chuỗi ngữ âm này, so sánh với các ngữ âm đã được huấn luyện trước (thông qua quá trình học) cùng với thực hiện phép toán xác suất, chúng tìm
ra chuỗi từ phù hợp nhất Ŵ Quá trình này được thực hiện bằng cách gắn các ngữ âm đã quan sát được và các giả thiết đầu ra là các chuỗi từ phù hợp vào Mô hình HMM Trong
đó các ngữ âm được gắn vào các trạng thái của mô hình HMM, còn các giả thiết đầu ra
là các quan sát Các tham số dùng cho mô hình HMM được ước lượng bằng thuật toán Forward-backward hay còn gọi là thuật toán Baum- Welch Để tính xác suất từ một chuỗi trạng thái sinh ra một chuỗi quan sát nào đó, chúng ta sử dụng thuật toán Viterbi
2 Cơ sở lí thuyết
2.1 Sơ lược về nhận dạng giọng nói
2.1.1 Công thức cơ bản
Một số ký hiệu được sử dụng và các lý thuyết cơ bản Gọi A là tập hợp các ngữ âm
để bộ nhận dạng dùng để xác định từ nào đã được nói A là một chuỗi các kí tự trong bảng alphabet A:
A= a1, a2, …, am ai U A (1.1)
Gọi W= w1, w2, , wn wi U W (1.2)
W là một chuỗi n từ, những từ này nằm trong một bộ từ vựng cố định cho trước P(W|A) là xác suất để tập từ W được nói với chuỗi ngữ âm quan sát được là A
Trang 9Từ chuỗi W, bộ nhận dạng sẽ xác định một chuỗi từ tốt nhất Ŵ để cho ra chuỗi quan sát là A, tức là:
Ŵ = argmaxWP(W|A) (1.3)
Theo công thức Bayes ta có:
Trong đó P(W) là xác suất để chuỗi W được nói, P(A|W) là xác suất quan sát được
A khi đọc chuỗi W, và P(A) là xác suất trung bình A được quan sát P(A) được tính theo công thức:
Vì A là cố định nên từ (I.3) và (I.5) ta có xấp xỉ lớn nhất của bài toán giải mã:
Ŵ = argmaxWP(W)P(A|W) (1.6)
Theo công thức (1.6) thì bài toán nhận dạng tiếng nói (nhận ra chuỗi từ Ŵ) chính là phải xác định được các xác suất P(W) và P(A|W) P(W) được tính thông qua mô hình ngôn ngữ, còn xác suất P(A|W) được tính thông qua mô hình ngữ âm
2.1.2 Các thành phần của một bộ nhận dạng giọng nói
a) Xử lý ngữ âm
Công việc đầu tiên của một hệ thống dạng tiếng nói là thông qua dữ liệu ngữ âm được quan sát A Bộ phận làm việc này gọi là Front end, Front end sẽ rút trích vector đặc trưng biểu diễn thông tin của ngữ âm quan sát A để chuyển đổi âm thanh dưới
dạng sóng thành các ký tự ai.
b) Mô hình ngữ âm (Acoustic model)
Một mô hình âm thanh được tạo ra bằng cách giữ lại các giọng nói được ghi âm, sau
đó phiên âm các từ của giọng nói và sử dụng phần mềm để tính các xác suất của âm thanh tạo nên mỗi từ Nó được sử dụng bởi một bộ máy nhận dạng để nhận ra tiếng nói
Trang 10Theo cấu trúc giọng nói, mô hình ngữ âm cho phép tính toán xác suất tương quan của vector đặc trưng của chuỗi quan sát được đến một từ cụ thể Quay trở lại công thức 1.6, bộ nhận dạng cần phải tính được P(A|W) là xác suất khi người nói nói chuỗi từ W thì bộ phân tích ngữ âm phân tích được chuỗi ngữ âm A Để phục vụ công việc nhận dạng, chúng ta cần phải tính P(A|W) của tất cả các cặp A, W có thể Điều này khó có thể thực hiện được, vì số lượng rất lớn Và nếu có tính hết được thì cũng rất khó có thể tìm kiếm được cặp A, W phù hợp
Vì vậy để tính P(A|W) chúng ta cần một mô hình xác suất ngữ âm của chuỗi từ mà người nói đã nói Số lượng mô hình phụ thuộc vào cách mà người nói nói chuỗi từ đó, vào nhiễu (tiếng ồn, tiếng vọng …), vị trí và các đặc tính của microphone, và việc xử lý ngữ âm của Front end
Mô hình ngữ âm được sử dụng rộng rãi nhất trong các bộ nhận dạng tiếng nói hiện nay là mô hình HMM Ngoài ra còn nhiều loại mô hình khác, chúng có thể dựa vào thuật toán mạng Neural (artificial neural networks) hoặc thuật toán qui hoạch động (dynamic time warping)
Hình 2: Mô tả của mô hình ngữ âm
c) Mô hình ngôn ngữ (Language model_LM)
Một mô hình ngôn ngữ là một phân phối xác suất trên các chuỗi từ, nó được sử dụng để hạn chế việc tìm kiếm từ Hầu hết các mô hình ngôn ngữ thường được sử dụng
là mô hình ngôn ngữ N-gram, có chứa số liệu thống kê của các chuỗi từ và các trạng thái hữu hạn Để đạt được độ chính xác tốt mô hình ngôn ngữ N-gram của ta phải rất thành công trong việc hạn chế không gian tìm kiếm, có nghĩa là nó phải được dự đoán
Trang 11với xác suất rất tốt trong N từ tiếp theo Mô hình ngôn ngữ còn nhằm hạn chế các từ vựng chứa trong các từ
Mô hình ngôn ngữ thường được kết hợp trong bộ giải mã để nhận dạng ra tiếng nói Đối với các hệ thống nhận dạng tiếng nói liên tục từ vựng lớn hiện nay, có nhiều mô hình ngôn ngữ âm học, từ điển phát âm và thậm chí mô hình ngôn ngữ từ vựng lớn được xây dựng sẵn để có thể tải về
Công thức 1.6 cũng yêu cầu phải tính xác suất các chuỗi chữ W để tìm ra chuỗi từ
có xác suất tốt nhất mà người dùng muốn nói chuỗi từ W Công thức Bayes cho phép
có nhiều cách khác nhau để phân tích P(W) Nhưng bởi vì bộ nhận dạng muốn truyền đạt chuỗi văn bản một cách ngẫu nhiên như những gì con người đã nói, vì thế chúng ta
sử dụng cách phân tích:
Bộ nhận dạng phải ước lượng xác suất P(wi|w1,…, wi-1) Chúng ta phải ước lượng bởi vì dù với một giá trị n vừa phải và kích thước từ vựng hợp lý, thì xác suất P(wi|w1,…, wi-1) có rất nhiều đối số
Tuy nhiên, thật là vô lý nếu cho rằng việc lựa chọn chữ thứ i của người nói phụ thuộc vào tất cả i-1 chữ trước trong toàn bộ những lời mà một người đã đã nói Vì vậy, chúng ta sẽ cho những từ trước vào các lớp tương đối Ф(wi|w1,…, wi-1), công thức 1.7 trở thành:
Sự khác biệt giữa các mô hình ngôn ngữ khác nhau chính là việc xác định Ф
phù hợp và một phương pháp để ước lượng P(wi| Ф(w1,…, wi-1))
Việc xây dựng mô hình ngôn ngữ chỉ phụ thuộc vào bộ văn bản sử dụng, hoàn toàn không phụ thuộc vào tiếng nói (không phụ thuộc vào việc ghi âm cho học)
Trang 12Là một chuỗi các mục có thứ tự, các mục có thể là các âm tiết, các chữ cái, các từ tùy theo ứng dụng
Một N-gram có kích thước N =1 được gọi là unigram,
kích thước N =2 là bigram, kích thước N =3 là trigram và kích thước N ≥ 4 được gọi là N-gram Hầu hết các mô hình ngôn ngữ đều được xây dựng từ N-gram Mô hình N-Gram:
Là một loại mô hình xác suất cho các dự đoán mục kế tiếp trong một chuỗi Mô hình N-gram được dùng trong nhiều lĩnh vực khác nhau của mô hình thống kê để xử lý ngôn ngữ tự nhiên, nhận dạng tiếng nói và phân tích chuỗi gen
2.1.3 Engine Speech Recoginize (SR)
SR là một tiến trình chuyển từ ngôn ngữ nói thành dạng text Tiến trình bao gồm:
1 Thu nhận và số hóa âm thanh của người nói
2 Chuyển và số hóa âm thanh thành âm vị cơ bản
3 Xây dựng những từ (word) từ những âm vị cơ bản đó
4 Phân tích ngữ cảnh xuất hiện của từ để chắc chắn đánh vần đúng từ được nói
Hình 3: Quá trình chuyển từ Speech To Text
Trang 132.2 Hoạt động của hệ thống Speech To Text
Hình 4: Lưu đồ thuật toán Speech To Text
Bắt đầu Khởi tạo recognize engine Khởi tạo recognize context Thiết lập các even message Thiết lập các interest Tạo đối tượng audio
Thu nhận âm thanh của người nói vào
Tạo dictation Load dictation
Thiết lập trạng thái kích hoạt
cho dictation
Chuyển âm thanh sang text
Kết thúc
Giải phóng
Trang 14Chương III: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH
1 Phân tích hệ thống
1.1 Phân tích nhu cầu thực tiễn
Hiện nay, trên thế giới việc sử dụng các phần mềm nhận dạng về âm thanh không còn là vấn đề quá mới mẻ Tuy nhiên mỗi quốc gia đều có một đặc thù ngôn ngữ khác nhau nên không có các quy tắc, các luật chung trong việc xử lý từ Chính vì vậy, việc nghiên cứu và xây dựng một ứng dụng nhận dạng giọng nói là rất phù hợp
1.2 Yêu cầu đặt ra
Xây dựng ứng dụng nhận dạng giọng nói Speech To Text
2 Thiết kế hệ thống
2.1 Sơ đồ use case
Hình 5: Sơ đồ use-case
Trang 152.2 Sơ đồ hoạt động
Hình 6: Sơ đồ hoạt động
2.3 Sơ đồ tuần tự
Hình 7: Sơ đồ tuần tự
Trang 163 Kết quả chương trình
Hình 8: Giao diện Speech To Text
Trang 17Chương IV: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
1 Thực thi chương trình
Thực thi chương trình tại đường dẫn: \\STT_V_E\bin\Debug\STT_V_E.exe
2 Đánh giá kết quả
Chương trình đã thực hiện được yêu cầu đề ra
Trang 18KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 Kết luận
a Kết quả đạt được
Đề tài đã đạt được các kết quả như sau :
Tìm hiểu được cách thức lập trình nhận dạng giọng nói trong môi trường Net
Tìm hiểu được cách thức hoạt động của chương trình chuyển âm thanh thành văn bản (Speech To Text)
b Những hạn chế của chương trình
Chỉ là một chương trình đơn giản cho phép chuyển đổi từ âm thanh sang văn bản Chưa ứng dụng được trong thực tiễn
Giao diện đơn giản
2 Hướng phát triển
Nếu có điều kiện, em sẽ cố gắng khắc phục những hạn chế của chương trình, và xây dựng thêm các tính năng điều khiển các ứng dụng trên PC thông qua giọng nói
Trang 19TÀI LIỆU THAM KHẢO Tài liệu:
[1] MSDN Library for Visual Studio 2008 - ENU
[2] Trịnh Văn Loan, Tài liệu xử lý tiếng nói.
[3] Cao Quyết Thắng, Bài giảng môn học xử lý tiếng nói, Trường Đại học Hàng Hải
Việt Nam – Khoa Công nghệ thông tin
[4] VSPEECH SDK1.0, Nhóm phát triển phần mềm BK02 – Khoa Công nghệ thông tin – Đại học Bách Khoa TPHCM
Các trang Web
[1] http://www.voicexml.org
[2] http://www.c-sharpcorner.com