ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Lê Đôn Khuê
THỬ NGHIỆM MỘT PHƯƠNG PHÁP TỔNG
HỢP TIẾNG NÓI TỪ VĂN BẢN TIẾNG VIỆT
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin HÀ NỘI - 2009
Tôi xin gửi lời cảm ơn sâu sắc đến tất những thầy cô giáo của trường đại học
Công nghệ, những kiến thức và kinh nghiệm quý báu mà tôi nhận được từ thầy cô
trong suốt bốn năm ngồi trên giảng đường sẽ là hành trang tốt nhất giúp tôi vững bước
trong sự nghiệp của mình.
Tôi cũng gửi lời cảm ơn đến tất cả các bạn bè, những người đã luôn đồng hành,
động viên, giúp đỡ tôi trong suốt bốn năm đại học.
Với các bạn K50CA, K50KHMT và các bạn trong phòng thí nghiệm tương tác
người máy, những trao đổi, góp ý của các bạn về khóa luận này thực sự đã giúp tôi rất
nhiều.
Cuối cùng, xin gửi những lời tri ân đến gia đình, những người thân yêu nhất của
tôi, luôn quan tâm, tạo điều kiện cho tôi.
Sinh viên Lê Đôn Khuê
- ii -
Tóm tắt
Kể từ khi ra đời, máy tính đã là một công cụ giúp đỡ con người vô cùng hữu ích.
Mục tiêu biến máy tính thành một con người làm việc không biết mệt mỏi đang được
dần hoàn thiện. Một trọng những yêu cầu để thực hiện được mục tiêu đó là khả năng
máy tính có thể đọc được các văn bản hay được gọi là tổng hợp tiếng nói. Trong
những năm qua, đã có nhiều nghiên cứu xung quanh đề tài tổng hợp tiếng nói. Từ đây,
một số hệ thống tổng hợp tiếng nói đã ra đời và đạt hiệu quả rất tốt. Tuy vậy, những hệ
thống này chủ yếu phục vụ cho các ngôn ngữ thông dụng như tiếng Anh, tiếng Pháp,
… còn đối với tiếng Việt, các hệ thống tổng hợp tiếng nói chưa được phát triển nhiều.
Trong khóa luận này, tôi muốn thử nghiệm một hệ thống tổng hợp tiếng nói dành
- iv -
2.5 Đặc điểm của tiếng Việt 13
2.6 Kết luận 14
Chương 3 Xây dựng TTS tiếng Việt sử dụng phương pháp ghép nối diphone 16
3.1 Các công cụ thực hiện 16
3.2 Cài đặt và tạo ra các file khuôn mẫu 17
3.3 Định nghĩa tập phone tiếng Việt 17
3.4 Xây dựng tập các diphone: 22
3.4.1 Diphone giữa âm câm và phụ âm: 23
3.4.2 Diphone giữa âm câm và nguyên âm 23
3.4.3 Diphone giữa phụ âm và âm câm 24
3.4.4 Diphone giữa nguyên âm và âm câm 24
3.4.5 Diphone giữa phụ âm – nguyên âm 25
3.4.6 Diphone giữa nguyên âm – phụ âm 26
3.5 Carrier và ý nghĩa của nó 26
3.6 Ánh xạ các phone tiếng Việt sang tiếng Anh 28
3.7 Thu âm 29
3.8 Đánh nhãn các diphone 30
3.9 Tìm pitchmark 30
3.9.1 Các bước để lấy pitchmark tốt 31
3.10 Kiểm thử 32
3.11 Thêm dấu cho tiếng Việt 32
Chương 4 Tổng kết 34
4.1 Kết quả thu được 34
4.2 Các khó khăn thách thức 34
4.3 Các hướng nghiên cứu phát triển tiếp theo 35
Tài liệu tham khảo 36
- v -
Danh mục hình ảnh
- 1 -
Chương 1 Tổng quan về hệ thống tổng hợp tiếng nói
1.1 Giới thiệu
Tổng hợp tiếng nói là việc tạo ra tiếng nói của con người một cách nhân tạo. Một
hệ thống máy tính thực hiện mục đích này được gọi là một hệ thống tổng hợp tiếng
nói. Tổng hợp tiếng nói có thể được thực hiện bằng bằng phần mềm hay nhúng vào
phần cứng của máy tính.
Việc tổng hợp tiếng nói có thể được thực hiện bằng nhiều phương pháp. Phương
pháp phổ biển nhất hiện nay là phương pháp tổng hợp bằng cách ghép nối các đoạn
tiếng nói nhỏ hơn được lưu trữ trong cơ sở dữ liệu. Việc lưu trữ cơ sở dữ liệu nhiều
hay ít làm ảnh hưởng rất lớn đến kết quả thu được tốt hay không. Đôi khi, vì mục đích
cần phải giảm độ lớn của cơ sở dữ liệu, người ta chấp nhận làm giảm chất lượng của
tiếng nói thu được trong một mức cho phép.
Chất lượng của một hệ thống tổng hợp tiếng nói được đánh giá dựa trên độ
“giống” đối với tiếng nói của người thật và khả năng để người nghe có thể hiểu được
hết ý nghĩa của văn bản.
Một hệ thống chuyển văn bản thành tiếng nói (tiếng Anh là Text To Speech,
trong khóa luận này sẽ được viết tắt là TTS) là một hệ thống có đầu vào là một văn
bản và đầu ra là một sóng âm thanh.
1.2 Ý nghĩa của TTS
Bài toán này có rất nhiều ý nghĩa thực tiễn. Trên thế giới, TTS tiếng Anh có
những ứng dụng hết sức thành công:
Giúp đỡ người tàn tật: Đây là ứng dụng có ý nghĩa lớn nhất của TTS.
Trước đây, người ta đã từng có các loại băng ghi âm các cuốn truyện hay
sách dành cho người tàn tật. Tuy nhiên số lượng những loại sách, truyện
này không nhiều vì công việc được hiện một cách thủ công và tốn rất
nhiều thời gian. Với sự giúp đỡ của các hệ thống TTS, công việc được làm
tự động và cho hiệu quả rất cao.
Các thiết bị truyền thông đa phương tiện: Với sự phát triển và thành công
vượt bậc của TTS cho tiếng Anh, các phần mềm để học tiếng Anh hay các
mực hơn cả.
1.4 TTS ở Việt Nam
TTS ở Việt Nam cũng đã được nghiên cứu từ khá lâu. Hiện nay có 2 chương
- 3 -
trình thành công hơn cả là VnSpeech và VietSound.
Phần mềm VnSpeech là hệ thống tổng hợp tiếng nói đầu tiên của Tiếng Việt,
phần mềm này sử dụng phương pháp tổng hợp Formant. Hệ thống này có thể đọc được
hầu hết các âm tiết tiếng Việt ở mức nghe rõ tuy vậy, mức độ tự nhiên không cao.
Phần mềm VietSound là phần mềm được phát triển tại đại học Bách Khoa Thành
phố Hồ Chí Minh. Phần mềm này sử dụng giải thuật TD-PSOLA dùng để tổng hợp các
nguyên âm đơn và phương pháp tổng hợp FORMANT để tổng hợp các phụ âm,
nguyên âm và âm vần đơn giản. Phần mềm này cũng chưa đạt đến mức độ tự nhiên
gần giống với tiếng nói con người. [2]
Cả hai phần mềm trên đều có nhược điểm là âm thanh thu được rời rạc, thiếu tự
nhiên.
1.5 Mục đích của khóa luận
Mục đích của khóa luận này là tìm hiểu và xây dựng hệ thống tổng hợp tiếng nói
tiếng Việt dựa trên phương pháp ghép nối diphone. Hệ thống cần có khả năng tổng
hợp một tiếng nói có độ liền mạch và có khả năng nghe hiểu được.
1.6 Cấu trúc của khóa luận
Khóa luận này được trình bày thành 4 chương. Chương 2 sẽ nêu ra lý thuyết một
hệ thống tổng hợp tiếng nói; các phương pháp tổng hợp tiếng nói thông dụng hiện nay.
Dựa trên đặc điểm riêng của tiếng Việt, chúng ta có thể so sánh và có sự lựa chọn
phương pháp tổng hợp tiếng nói cho tiếng Việt phù hợp nhất. Chương 3 sẽ là các bước
cụ thể để có thể xây dựng được một hệ thống tổng hợp tiếng nói bằng phương pháp
ghép nối diphone. Chương 4 sẽ là tổng kết cho toàn bộ quá trình thử nghiệm phương
pháp này.
- 4 -
Chương 2 Các phương pháp tổng hợp tiếng nói
2.1 Mô hình chung của một hệ thống TTS
Một cơ sở dữ liệu các khuôn dạng thông dụng như ngày tháng, giờ, …
Tuy vậy, ta cũng sẽ gặp phải nhiều khó khăn do những tình huống nhập nhằng.
Ví dụ như cụm “1/2” có thể được hiểu là “ngày mùng một tháng hai” hoặc “một phần
hai”. Một ví dụ khác là khi ta gặp một dãy số “38533580”, ta cần phải xác định xem
đây là số đếm (ba mươi tám triệu năm trăm ba mươi ba ngàn năm trăm tám mươi) hay
đây là số điện thoại (ba tám năm ba ba năm tám không). Những trường hợp như thế
này đỏi hỏi ta phải xác định được văn cảnh của văn bản đầu vào.
2.1.2 Phân tích cách đọc
Việc phân tích cách đọc thực chất chính là quá trình tiền xử lý cho việc tổng hợp
tiếng nói. Vì vậy, quá trình này còn phụ thuộc vào việc chúng ta sẽ sử dụng phương
pháp nào để thực hiện việc tổng hợp tiếng nói.
Cũng phải nói thêm rằng tiếng Việt có một thuận lợi rất lớn là mỗi cách viết chỉ
có một cách đọc không như tiếng Anh một cách viết có thể có nhiều cách đọc phụ
thuộc vào ngữ cảnh.
Nếu việc tổng hợp tiếng nói được thực hiện bằng các phương pháp ghép nối, thì
việc bắt buộc đối với chúng ta là phải phân chia câu cần tổng hợp thành các đơn vị đã
có sẵn trong cơ sở dữ liệu của chúng ta. Hãy xét ví dụ ta cần tổng hợp câu “Xin chào”
bằng phương pháp ghép nối diphone. Các diphone đã có trong cơ sở dữ liệu là “âm
câm – x”, “x – i”, “i – n”, “n – âm câm”, “âm câm – ch”, “ch – à”, “à – o”. Khi đó ta
cần tách đoạn text “Xin chào” thành “âm câm – x – i – n – âm câm – ch – à – o – âm
câm”.
Để tiếng nói tổng hợp được thu được chất lượng tốt thì phân tích ngôn điệu là vô
cùng quan trọng. Ngôn điệu gồm: độ cao thấp, độ dài ngắn, cường độ.
Độ cao thấp (pitch) hay tần số trên một câu phụ thuộc vào nhiều yếu tố trong đó
có loại câu (câu kể, câu hỏi, câu cảm thán); người nói (giới tính, trạng thái cảm xúc).
Ví dụ câu kể thường thấp giọng ở cuối câu còn câu hỏi lại cao giọng ở cuối câu. Người
nói là nam thường nói với độ cao thấp hơn.
Độ dài ngắn (duration) là đặc điểm về thời gian phát âm một từ hay một âm vị.
Thông thường hai tiếng liên tiếp mà tạo thành từ khoảng nghỉ giữa hai tiếng sẽ ngắn
hơn hai tiếng liên tiếp những không tạo thành một từ. Đôi khi, độ dài ngắn cũng được
nói.
Formant là một sự cộng hưởng âm thanh. Ở đây chúng ta có thể hiểu tín hiệu
- 7 -
tiếng nói là kết quả của nguồn kích hữu thanh hoặc vô thanh được cộng hưởng hay
phản cộng hưởng của tuyến âm, sau đó ảnh hưởng bởi sự tán xạ của tiếng nói qua môi
và mũi.
Phương pháp tổng hợp Formant đầu tiên được Walter Lawrence đưa ra vào năm
1953, phương pháp này sử dụng 3 formant được nối song song. 3 formant cũng là số
lượng formant tối thiểu để có thể tạo ra được một tiếng nói nghe được. Dưới đây là
một mô hình 3 formant được nối nối tiếp [14]:
Hình 2 Mô hình 3 formant nối tiếp
Đầu vào của mô hình này là 12 tham số: tần số chung (F0), 3 tần số của các
Formant và 3 biên độ của các Formant, cường độ của tần số thấp, cường độ của tần số
cao, … Do có nhiều tham số nên việc điều khiển là rất phức tạp. Tuy vậy, phương
pháp này mới chỉ đưa ra được một tiếng nói với chất lượng nghe được. Tiếng nói vẫn
còn rời rạc, không trơn chu, liền mạch hay nói cách khác là không tự nhiên.
Năm 1980, Dennis Klatt đã đưa ra một mô hình phức tạp gồm 5 formant và cần
tới 39 tham số điều khiển và được cập nhật 5 mili giây một lần. Dưới đây là mô hình
được Klatt đưa ra [14]:
- 8 -
Hình 3 Mô hình 5 formant của Klatt
Cho đến nay, đây vẫn là mô hình tốt nhất cho phương pháp này. Phương pháp
formant có những đặc điểm nổi trội so với các phương pháp khác là không cần phải
lưu trữ cơ sở dữ liệu, thời gian tổng hợp là rất nhanh. Đây là phương pháp hiện nay rất
thích hợp cho những ứng dụng trên các thiết bị như PDA, PC Pocket vì đặc điểm của
những thiết bị này là phần cứng yếu.
Tuy nhiên, phương pháp này về mặt chất lượng của tiếng nói vẫn không tốt.
Tiếng nói vẫn bị rời rạc, không tự nhiên. Hơn nữa, phương pháp này rất khó xây dựng.
ý nghĩa của văn bản.
2.3.3 Phương pháp tổng hợp bằng ghép nối diphone
Đây là phương pháp được phát triển từ những năm 70 của thế kỷ trước. Cho tới
nay, phương pháp này là một trong những phương pháp hiệu quả nhất và đã được ứng
dụng rộng rãi cho nhiều ngôn ngữ.
Diphone: Một diphone được bắt đầu từ điểm giữa của phone trước đến điểm giữa
của phone sau trong hai phone đứng cạnh nhau của một cặp phone. Với một từ có thể
có một, hai hoặc nhiều diphone. Ví dụ như từ ba chỉ có một diphone là b – a nhưng từ
ban có hai diphone là b – a và a – n. Các từ chỉ có một phone được coi là một diphone
của phone đó với âm câm, chẳng hạn từ a được coi là một diphone của asilence.
Phương pháp tổng hợp diphone được thực hiện theo 4 bước:
Liệt kê tất cả các phone và các đặc tính của các phone này.
- 10 -
Liệt kê tất cả các cách ghép nối các cặp phone-phone để tạo thành
diphone. Do có những cặp phone-phone không xuất hiện nên số lượng
diphone không bao giờ quá bình phương số lượng phone.
Xây dựng cơ sở dữ liệu cách đọc cho các diphone này.
Ghép nối các diphone: đây chính là quá trình quan trọng nhất của phương
pháp này. Ở đây, thuật toán thường dùng nhất là đồng bộ điểm pitch.
2.3.3.1 Điểm pitch
Điểm pitch (pitch mark) là điểm có tần số là cực đại địa phương trên một sóng
âm. Dưới đây là hình ảnh ví dụ về điểm pitch trong phone /u/.[15]
Hình 4 Điểm pitch trong phone
Giữa hai diphone gần ghép nối với nhau, bao giờ ta cũng có một phone giống
nhau ví dụ như “a – b” và “b – c”. Việc chúng ta cần làm là chỉnh sửa sóng âm của
phone “b” ở diphone thứ nhất hoặc diphone thứ hai hoặc cả hai diphone sau cho chúng
có thể chồng khít được lên nhau.[15]
- 11 -
Ở đây w(x) là một “cửa sổ” được chọn. Có thể hiểu rằng, s(P) mới phụ thuộc vào
các điểm nằm trong “cửa số” của x(P0) cũ mà P0 và P là hai điểm tương ứng của sóng
cũ và sóng mới. Cách làm này người ta đã chứng minh được là biên độ sóng không bị
thay đổi trong quá trình biến đổi sóng. [14]
- 12 -
Hình 6 Thuật toán TD-PSOLA
Trong hình trên, tín hiệu ở phía bên trái được đã giãn ra để khớp với các điểm
pitch mong muốn. Các hình bên phải là biên động số tương ứng và ta có thể nhận thấy
là biên độ này không bị thay đổi.
2.4 Phương pháp mô phỏng phát âm
Tổng hợp mô phỏng phát âm là các kỹ thuật tổng hợp giọng nói dựa trên mô hình
máy tính của cơ quan phát âm của người và quá trình phát âm xảy ra tại đó. Hệ thống
tổng hợp mô phỏng phát âm đầu tiên là ASY được phát triển ở phòng thí nghiệm
Haskins vào giữa những năm 1970 bởi Philip Rubin, Tom Baer, và Paul Mermelstein.
Tổng hợp mô phỏng phát âm đã từng chỉ là hệ thống dành cho nghiên cứu khoa học
cho mãi đến những năm gần đây. Lý do là rất ít mô hình tạo ra âm thanh chất lượng đủ
cao hoặc có thể chạy hiệu quả trên các ứng dụng thương mại. Một ngoại lệ là hệ thống
dựa trên NeXT; vốn được phát triển và thương mại hóa bởi Trillium Sound Research
Inc, Canada. Hệ thống tạo ra một máy tổng hợp giọng nói dựa trên mô phỏng phát âm
hoàn chỉnh, dựa trên mô hình ống dẫn sóng tương đương với cơ quan phát âm của
người. Nó được điều khiển bởi Mô hình Phần Riêng biệt của Carré; bản thân mô hình
này lại dựa trên công trình của Gunnar Fant và các người khác ở Phòng thí nghiệm
Công nghệ Giọng nói Stockholm thuộc Viện Cộng nghệ Hoàng gia Thụy Điển về tổng
hợp giọng nói cộng hưởng tần số. Công trình này cho thấy các cộng hưởng tần số
trong ống cộng hưởng có thể được điều khiển bằng cách thay đổi tám tham số tương
đồng với các cách phát âm tự nhiên của cơ quan phát âm của người. Hệ thống bao gồm
- 13 -
một từ điển phát âm cùng với các quy tắc phát âm tùy thuộc ngữ cảnh để giúp ghép nối
âm điệu và tạo ra các tham số phát âm; mô phỏng theo nhịp điệu và ngữ điệu thu được
Dưới đây là đồ thị mô tả sự biến thiên của giá trị F0 các thanh và ví dụ với việc
ghi âm chữ “chi” cùng với 6 thanh lần lượt là ngang, huyền, ngã, hỏi, sắc, nặng.[9]
Hình 7 Sự thay đổi giá trị F0 của các thanh
Hình 8 Sự thay đổi giá trị F0 khi các thanh đi với chữ "chi"
2.6 Kết luận
Với mục đích xây dựng được một hệ thống tổng hợp tiếng nói mà âm thanh thu
- 15 -
được phải có độ trơn, độ tự nhiên cao nhất, phương pháp ghép nối bằng diphone là
vượt trội hơn cả. Yêu cầu về độ trơn và độ tự nhiên của tiếng nói chính là điểm mạnh
của phương pháp này. Các phương pháp khác đều không so sánh được với phương
pháp ghép nối diphone ở tiêu chí này. Hơn nữa, phương pháp này lại có ưu điểm là
việc xây dựng không phức tạp. Vì vậy, tôi quyết định lựa chọn phương pháp ghép nối
diphone để xây dựng hệ thống TTS tiếng Việt.
Cùng với những đặc điểm của tiếng Việt ở trên, tôi quyết định áp dụng phương
pháp này với tiếng Việt không dấu và thay đổi tần số chung F0 để tạo ra thanh điệu
(dấu) cho tiếng nói được tổng hợp.
- 16 -
Chương 3 Xây dựng TTS tiếng Việt sử dụng phương
pháp ghép nối diphone
3.1 Các công cụ thực hiện
Tôi xây dựng hệ thống TTS tiếng Việt dựa trên bộ công cụ:
Speech Tools Library 2.0: Đây là một tập hợp các lớp, hàm, đối tượng
được viết bằng ngôn ngữ C++ cần thiết đối với xử lý âm thanh. Thư viện
này giúp ta có khả năng đọc, ghi, thay đổi các sóng âm. Thư viện cũng
cung cấp nhiều định dạng khác nhau các file chỉ số như (LPC, ceptra, F0)
và các hàm cần thiết để chuyển đổi giữa các định dạng đó. Thư viện này
được phát triển tại trung tâm nghiên cứu tiếng nói thuộc đại học
một thư mục làm việc là “~/data/vnu_vn_ldk_diphone”. Tất cả các công việc tiếp theo
của chúng ta đều thực hiện từ thư mục này.
3.3 Định nghĩa tập phone tiếng Việt
Công việc tiếp theo của chúng ta là định nghĩa tập phone tiếng Việt trong
festvox/vnu_vn_ldk_phoneset:
Chúng ta sẽ sử dụng một phone đặc biệt là âm câm (tiếng Anh âm là silence,
trong danh sách của ta sẽ được kí hiệu là pau).
Tiếng Việt còn gồm có 24 phụ âm tính cả phụ âm đơn và đôi là b, c(k), ch, d, đ,
g, gi, h, kh, l, m, n, ng(ngh), nh, p, ph, q, r, s, t, tr, th, v, x. Ở đây, 2 cặp phone k và c,
ng và ngh có cách phát âm giống nhau, nên ta sẽ chỉ định nghĩa một lần.
Ngoài ra, tiếng Việt bao gồm 12 nguyên âm đơn a, ă, â, e, ê, i, o, ô, ơ, u, ư, y.
Như đã nói ở mục 2.6, chúng ta sẽ chỉ thực hiện việc tổng hợp tiếng nói cho tiếng Việt
không dấu.
Để tăng chất lượng của tiếng nói được tổng hợp, tôi cho rằng chúng ta có thể coi
cả các nguyên âm đôi ví dụ như ao, au, oi, ưu … là một phone mặc dù chúng có thể
được tổng hợp từ những nguyên âm đơn. Cách làm này sẽ không làm giảm đi chất
lượng của tiếng nói (độ trơn) do các từ vẫn được ghép nhờ âm câm.
Ở đây, tôi kí hiệu các phone theo cách gõ tiếng Việt TELEX. Các chữ cái chỉ dấu
sẽ được viết thường, còn lại viết hoa. Ví dụ như phone “ưu” gõ theo cách gõ TELEX
là uwu nên sẽ được kí hiệu là UwU.
Đối với mỗi phone, ta cần biết các thông số về phone là: