45
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHLê Đô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

xu ly tieng noi tieng viet

Embed Size (px)

DESCRIPTION

xu ly tieng noi tieng viet

Citation preview

ĐẠ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

ĐẠ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 TIẾNG VIỆT TỪ VĂN BẢN

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

Cán bộ hướng dẫn: TS. Bùi Thế Duy

HÀ NỘI - 2009

- i -

Lời cảm ơn

Trước tiên, tôi muốn gửi lời cảm ơn sâu sắc nhất đến thầy giáo chủ nhiệm, TS. Bùi Thế Duy, người đã tận tình hướng dẫn em trong suốt quá trình nghiên cứu khóa luận tốt nghiệp cũng quá trình học tập tại Đại học Công nghệ.

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 cho tiếng Việt.

- iii -

Mục lục

Lời cảm ơn ...........................................................................................................i

Tóm tắt................................................................................................................ii

Mục lục ............................................................................................................. iii

Danh mục hình ảnh .............................................................................................v

Danh mục bảng biểu...........................................................................................vi

Chương 1 Tổng quan về hệ thống tổng hợp tiếng nói ..........................................1

1.1 Giới thiệu ...............................................................................................1

1.2 Ý nghĩa của TTS ....................................................................................1

1.3 Quá trình phát triển của TTS trên thế giới ..............................................2

1.4 TTS ở Việt Nam .....................................................................................2

1.5 Mục đích của khóa luận..........................................................................3

1.6 Cấu trúc của khóa luận ...........................................................................3

Chương 2 Các phương pháp tổng hợp tiếng nói ...................................................4

2.1 Mô hình chung của một hệ thống TTS....................................................4

2.1.1 Phân tích văn bản ............................................................................4

2.1.2 Phân tích cách đọc...........................................................................5

2.1.3 Tạo ra sóng âm thanh ......................................................................6

2.2 Phương pháp tổng hợp Formant .............................................................6

2.3 Các phương pháp tổng hợp bằng ghép nối ..............................................8

2.3.1 Phương pháp tổng hợp bằng ghép nối các tiếng...............................8

2.3.2 Phương pháp tổng hợp bằng ghép nối các phone .............................9

2.3.3 Phương pháp tổng hợp bằng ghép nối diphone ................................9

2.3.3.1 Điểm pitch...............................................................................10

2.3.3.2 Đồng bộ điểm pitch theo miền thời gian TD-PSOLA ..............11

2.4 Phương pháp mô phỏng phát âm ..........................................................12

- 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

Hình 1 Mô hình một hệ thống tổng hợp tiếng nói.........................................................4

Hình 2 Mô hình 3 formant nối tiếp...............................................................................7

Hình 3 Mô hình 5 formant của Klatt ............................................................................8

Hình 4 Điểm pitch trong phone ..................................................................................10

Hình 5 Ghép nối hai diphone .....................................................................................11

Hình 6 Thuật toán TD-PSOLA ..................................................................................12

Hình 7 Sự thay đổi giá trị F0 của các thanh................................................................14

Hình 8 Sự thay đổi giá trị F0 khi các thanh đi với chữ "chi".......................................14

Hình 9 Biểu diễn dạng sóng của một carrier và đánh nhãn diphone............................30

Hình 10 Pitchmark của sóng "taa taa taa"...................................................................32

- vi -

Danh mục bảng biểu

Bảng 1 Các nguyên âm đơn tiếng Việt và tính chất ....................................................18

Bảng 2 Các nguyên âm đôi của tiếng Việt và tính chất...............................................19

Bảng 3 Các phụ âm tiếng Việt và tính chất ................................................................21

Bảng 4 Một cách liệt kê các diphone..........................................................................22

Bảng 5 Phân loại các phone .......................................................................................22

Bảng 6 Diphone âm câm – phụ âm ............................................................................23

Bảng 7 Diphone âm câm – nguyên âm.......................................................................23

Bảng 8 Diphone phụ âm – âm câm ............................................................................24

Bảng 9 Diphone nguyên âm – âm câm.......................................................................24

Bảng 10 Diphone phụ âm – nguyên âm 1...................................................................25

Bảng 11 Diphone phụ âm – nguyên âm 2...................................................................25

Bảng 12 Diphone nguyên âm – phụ âm......................................................................26

Bảng 13 Khai báo các carrier .....................................................................................27

Bảng 14 Ví dụ ánh xạ phone tiếng Việt sang phone tiếng Anh ...................................28

- 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 từ điển điện tử cũng đã sử dụng các hệ thống TTS. Ngoài ra, các trò chơi

- 2 -

điện tử hiện này đã ứng dụng công nghệ này rất rộng rãi.

Trong truyền thông: Một trong những nguyên nhân gây ra nhiều tai nạn xe hơi là tài xế vừa lái xe vừa đọc tin nhắn. Sự với sự hỗ trợ của TTS, người lái xe hoàn toàn có thể tập trung vào việc lái xe mà vẫn nghe được tin nhắn mình nhận được. Ngoài ra, khi công nghệ GPRS chưa phát triển thì việc check email khi phải đi công tác tới một khu vực chưa phát triển gặp rất nhiều khó khắn. Khi đó người ta đã có những phần mềm sử dụng TTS để check email qua điện thoại di động.

Hiện nay, ở Việt Nam việc sử dụng các hệ thống TTS vẫn còn chưa nhiều. Chủ yếu là việc đọc các thông báo tại các nhà ga, sân bay hay tại cơ quan nhà nước có hệ thống xếp hàng.

1.3 Quá trình phát triển của TTS trên thế giới

Tiếng nói nhân tạo đã được nghiên cứu trong một thời gian dài và có sự tham gia của nhiều nhà khoa học. Những người đầu tiên có ý tưởng về một chiếc máy có khả năng nói được là Gerbert of Aurillac, Albertus Magnus (1198 – 1280) và Roger Bacon (1214 – 1294). [18]

Tuy vậy phải tới năm 1779, nhà khoa học người Đan Mạch Christian Kratzenstein mới xây dựng thành công mô hình cơ khí tổng hợp 5 âm /a/, /e/, /i/, /o/, /u/. Thiết bị này vẫn chưa tổng hợp được một câu nói hoàn chỉnh.

Thiết bị đầu tiên được xem như một bộ tổng hợp tiếng nói là VODER (Voice Operating Demonstrator) được nhà khoa học người Mỹ Homer Dulley giới thiệu năm 1939 tại New York. Hệ thống này có thể tổng hợp các câu đơn giản những cần sự điều khiển hết sức phức tạp. [14]

Trong mấy thập kỷ qua, các hệ thống TTS đã có những bước phát triển vượt bậc. Chất lượng của những hệ thống TTS được phát triển ngày càng cao và đã được ứng dụng với các mục đích thương mại. Đa số các hệ thống này dành cho tiếng Anh. Ngoài ra, cũng có một số các ngôn ngữ khác như tiếng Trung, tiếng Tây Ban Nha, … nhưng tiếng Anh vẫn được nghiên cứu nhiều nhất vì vậy tiếng Anh có hệ thống TTS chuẩn 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

Thông thường, hệ thống TTS bao gồm 3 bước:

Phân tích văn bản

Phân tích cách đọc

Tạo ra sóng âm thanh

Hình 1 Mô hình một hệ thống tổng hợp tiếng nói

2.1.1 Phân tích văn bản

Phân tích văn bản là việc chuyển các kí hiệu, các số, các chữ viết tắt ra thành các câu chữ đầy đủ. Ví dụ như câu “Phong trào sinh viên tình nguyện do TW Đoàn TNCS Hồ Chí Minh phát động đã được hưởng ứng của hơn 10000 sinh viên trên cả nước” cần phải được chuyển thành “Phong trào sinh viên tình nguyện do Trung Ương Đoàn Thanh niên Cộng sản Hồ Chí Minh phát động đã được hưởng ứng của hơn mười nghìn sinh viên trên cả nước”.

Để thực hiện việc phân tích văn bản tốt, ta cần có:

Một module chuyển số thành dạng chữ viết.

Một cơ sở dữ liệu các chữ viết tắt thông dụng.

Tiếng nói Văn bản Phân tích văn bản

Chia các cụm từ

Ngữ điệu

Độ dài ngắn Tạo

sóng âm

Phân tích cách đọc

- 5 -

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 thể hiện khi người nói muốn nhấn mạnh một từ nào đó trong câu. [2]

Cường độ thể hiện ở độ to nhỏ của tiếng nói. Ở mức âm tiết, các nguyên âm

- 6 -

thường có cường độ mạnh hơn phụ âm. Ở mức cụm, các âm tiết ở phần cuối của cách phát âm có thể có cường độ yếu hơn.

Một hệ thống TTS cần phân tích được cách đọc ở mức càng gần với thực tế càng tốt. Đây là mục tiêu của mọi hệ thống TTS cho các ngôn ngữ khác nhau, tuy vậy chưa có một hệ thống nào có thể thực hiện hoàn hảo điều này.

2.1.3 Tạo ra sóng âm thanh

Đây là quá trình trực tiếp tạo ra tín hiệu âm thanh. Chất lượng tiếng nói tổng hợp được phụ thuộc rất nhiều vào phần này. Trên thế giới đã có rất nhiều phương pháp được đưa ra để tổng hợp tiếng nói như phương pháp tổng hợp Formant, phương pháp ghép nối Diphone, …

Các phương pháp có thể được chia làm 4 nhóm:

Phương pháp tổng hợp dựa trên hệ luật: phương pháp Formant

Phương pháp tổng hợp bằng ghép nối:

o Phương pháp tổng hợp bằng ghép nối phones

o Phương pháp tổng hợp bằng ghép nối nửa phones

o Phương pháp tổng hợp bằng ghép nối diphone

Phương pháp tổng hợp dựa trên các mô hình:

o Phương pháp tổng hợp dựa trên mô hình Markov ẩn (HMM)

o Phương pháp tổng hợp dựa trên mô hình âm tiếng nói và nhiễu (Harmonic plus Noise – HNM)

Phương pháp tổng hợp dựa trên mô phỏng phát âm

2.2 Phương pháp tổng hợp Formant

Phương pháp này còn có tên gọi khác là phương pháp tổng hợp dựa trên hệ luật (rule-based). Đây là phương pháp không dựa vào những đoạn tiếng nói đã thu sẵn của con người. Phương pháp tổng hợp Formant sẽ sử dụng tiếng nói tổng hợp được tạo ra dựa trên cơ sở lý thuyết âm học của quá trình tạo tiếng nói. Phổ biến nhất hiện nay chính là mô hình nguồn âm bộ lọc ( source-filter model) để tạo ra được tín hiệu tiếng 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. Ta cần phải có một sự hiểu biết sâu sắc về mặt âm học mới có thể thực hiện được phương pháp này.

2.3 Các phương pháp tổng hợp bằng ghép nối

Trong các phương pháp này, tiếng nói sẽ được tổng hợp từ các đoạn tiếng nói nhỏ hơn đã được lưu trữ sẵn trong cơ sở dữ liệu. Đối với tiếng Việt, đó có thể là: phone, diphone, tiếng, …

2.3.1 Phương pháp tổng hợp bằng ghép nối các tiếng

Rõ ràng đây là một phương án không khả thi, đối với tiếng Việt, số lượng tiếng là rất lớn, điều này làm cho cơ sở dữ liệu phải lưu trữ là rất lớn. Một nhược điểm nữa của cách làm này là giữa các tiếng sẽ không có độ trơn, do các tiếng được thu riêng biệt tại

- 9 -

các thời điểm khác nhau.

2.3.2 Phương pháp tổng hợp bằng ghép nối các phone

Phone: Là âm vị hay chính là đơn vị âm nhỏ nhất tạo ra tiếng nói. Thông thường đối với mỗi ngôn ngữ thì mỗi chữ cái trong bảng chữ cái là một phone. Trong tiếng Việt, ngoài các phone là chữ cái ra còn có các phone là tổ hợp của các chữ cái như: th; gh; kh; gi; nh; ng; ngh… Âm câm (silence) có thể coi là một phone đặc biệt. Thông thường mỗi âm vị có một cách đọc riêng, tuy nhiên không phải mỗi cách đọc chỉ tương ứng với một âm vị. Trong tiếng Việt, một số âm vị có cách đọc giống nhau tuy cách viết khác nhau (chẳng hạn: ng và ngh, i và y, g và gh… ).

Số lượng phone của tiếng Việt có dấu là 95 phone và cơ sở dữ liệu của ta chỉ cần bao gồm 95 phone này. Có thể thấy ngay cơ sở dữ liệu nhỏ là một ưu điểm lớn của phương pháp này.

Tuy vậy, chất lượng tiếng nói tổng hợp của phương pháp này lại không cao. Hãy xét ví dụ cần tổng hợp câu “Hai bạn đó hát hay”. Từ “hai” được ghép từ các phone “h”, “a”, “i”. Từ “hay” được ghép từ các phone “h”, “a”, “y”. Rõ ràng trong cơ sở dữ liệu cách đọc các phone, “h”, “a”, “i”, “y” thì phone “i” và phone “y” có cách đọc giống hệt nhau nhưng khi ghép với các phone khác lại cho ta hai cách đọc hoàn toàn khác nhau. Cách tổng hợp này đã không đạt được yêu cầu đầu tiên của một hệ thống tổng hợp tiếng nói là “tiếng nói sinh ra phải hiểu được”, nó đã làm thay đổi hoàn toàn ý 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 -

Hình 5 Ghép nối hai diphone

Việc ghép nối hai diphone có thể được thực hiện bằng thuật toán PSOLA (pitch synchronous overlap – add) được gọi là đồng bộ điểm pitch.

2.3.3.2 Đồng bộ điểm pitch theo miền thời gian TD-PSOLA

Người ta đã phát triển nhiều phiên bản của thuật toán PSOLA như: TD-PSOLA (time domain pitch synchronous overlap – add), MBROLA (multi band overlap add), LP-PSOLA (linear pitch synchronous overlap – add). Tất cả các phiên bản này đều có một ý tưởng chung là sửa đổi trực tiếp sóng âm thanh mà không sử dụng các thông số nào của nó.

Thuật toán TD-PSOLA được hãng truyền thông Pháp phát triển vào đầu những năm 1990 và dựa trên ý tưởng: “Nếu x(n) tuần hoàn trong khoảng [−∞, +∞] thì ta có thể tạo ra một sóng mới s(n) từ x(n) với các điểm pitch đã được dịch chuyển từ T0 về T mà ta mong muốn. Thuật toán được thể hiện bởi công thức biến đổi:

0

0

( ) ( ) ( )

( ) ( ( )

i

ii

s n x n w n iT

s n s n i T T

Ở đâ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 từ các kết quả nghiên cứu ngữ âm học. [18]

Để có thể thực hiện được phương pháp này đòi hỏi thời gian, chi phí và công nghệ. Phương pháp này khó có thể ứng dụng tại Việt Nam trong thời điểm hiện nay.

2.5 Đặc điểm của tiếng Việt

Đối với bài toán TTS, tiếng Việt so với các ngôn ngữ khác có rất nhiều thuận lợi. Mỗi cách viết chỉ có duy nhất một cách đọc. Tuy nhiên, một trong những khó khăn lớn nhất của tiếng Việt chính là vấn đề thanh điệu. Việc mỗi nguyên âm có 6 thanh (ngang, sắc, huyền, ngã, hỏi, nặng) lại làm cho việc tổng hợp gặp những khó khăn khác. Việc đọc không dấu chúng ta hầu hết có thể hiểu được nhưng như vậy vẫn có thể gây ra những hiểu lầm. Tuy nhiên, nếu ta đã sinh được sóng âm cho tiếng Việt không dấu, thì ta có thể biến đổi sóng âm đó để thu được sóng âm thể hiện tiếng Việt có dấu.

Một âm tiết tiếng Việt khi đọc có 5 loại âm thanh: âm đầu (phụ âm), âm trung bình (bán nguyên âm), âm trung tâm (nguyên âm hoặc nguyên âm đôi), âm cuối (nguyên âm hoặc bán nguyên âm) và thanh điệu (dấu). Khi thay các thanh điệu vào cùng từ, giá trị F0 thay đổi như sau: [3]

Với thanh ngang, giá trị F0 bắt đầu lớn nhất và duy trì cho tới khi kết thúc âm tiết.

Thanh huyền giá trị F0 bắt đầu thấp hơn thanh ngang, thanh sắc và thanh ngã.

Thanh ngã giá trị F0 bắt đầu cao, tới giữa âm tiết thì giảm xuống, và tăng lên cao nhất khi đến cuối âm tiết. Trong hầu hết các trường hợp, các âm tiết có thanh ngã có giá trị F0 cực tiểu rơi vào khoảng giữa đến 2/3 của F0 tại thời điểm ban đầu.

Thanh hỏi giá trị F0 giảm dần đến khoảng 2/3 giá trị F0 ban đầu rồi tăng trở lại.

Thanh sắc giá trị F0 giữ ổn định trong khoảng 2/3 thời gian của âm tiết rồi sau đó tăng nhanh.

Thanh nặng giá trị F0 giảm nhanh và thời gian kéo dài thường chỉ bằng 2/3 thời gian các thanh khác.

- 14 -

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 Edinburgh, Anh. [6]

Festvox 2.1 là bộ công cụ chủ yếu được viết bằng shell Linux và ngôn ngữ PERL hỗ trợ việc xây dựng cơ sở dữ liệu phục vụ cho việc tổng hợp tiếng nói. Cơ sở dữ liệu được xây dựng trên Festvox đảm bảo được sự tương thích với hệ thống tổng hợp tiếng nói Festival. Bộ công cụ này được phát triển tại đại học Carnegie Mellon, Hoa Kỳ. Mục đích phát triển của hệ thống này là giúp cho việc xây dựng một giọng đọc mới hay một ngôn ngữ mới trở nên dễ dàng hơn và mọi người có thể tự xây dựng một giọng đọc cho riêng mình. [7]

Festival 1.96 được viết bằng C++ có thể coi là một frame work tổng hợp, cho phép xây dựng các hệ thống tổng hợp tiếng nói bằng các phương pháp khác nhau. Nhân của hệ thống này có thể nói chính là thư viện Speech Tools. Festival đồng thời con cung cấp sẵn những giọng đọc chuẩn tiếng Anh giúp cho những người sử dụng rất thuận lợi trong việc xây dựng một hệ thống TTS cho ngôn ngữ khác. Hệ thống này ban đầu được phát triển tại trung tâm nghiên cứu tiếng nói thuộc đại học Edinburgh, Anh. Hiện nay, hệ thống này còn được phát triển đồng thời bởi trường đại học Carnegie Mellon, Hoa Kỳ. [5]

Cả 3 công cụ trên đều là những phần mềm mã nguồn mở, được phát triển để sử dụng trên Linux. Đây là một bộ công cụ tổng hợp hoàn chỉnh dành cho tiếng Anh.

- 17 -

3.2 Cài đặt và tạo ra các file khuôn mẫu

Việc cài đặt các công cụ này cũng cần có chú ý:

Cần cài bản gcc cũ 2.7.2 để biên dịch Speech Tools Library.

Cần cài đặt Speech Tools trước, sau đó đến Festvox rồi mới đến Festival.

Cần chỉnh lại đường dẫn mặc định của Festvox và Speech Tools.

Sau khi việc cài đặt hoàn tất, chúng ta có thể bắt đầu xây dựng hệ thống TTS tiếng Việt bằng lệnh: “$FESTVOXDIR/src/diphones/setup_diphone vnu vn ldk” để tạo ra các thư mục và file khuôn mẫu phục vụ cho việc thực hiện. Trong đó vnu là tên đơn vị, vn là tên ngôn ngữ, ldk là tên người đọc. Sau khi thực hiện lệnh này, ta sẽ 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à:

- 18 -

Loại phone: nguyên âm hay phụ âm tương ứng là + hoặc –. Ở đây chúng ta phải lưu ý răng ta chia phone là nguyên âm hay phụ âm dựa trên cách phát âm của chúng (âm học). Nguyên âm là âm mà khi phát âm, dòng không khí sau khi đi qua thanh quản đi thẳng ra ngoài, không gặp vật cản. Phụ âm là âm mà khi phát âm, dòng không khí sau khi đi qua thanh quản gặp vật cản trên đường đi ví dụ như vòm miệng, răng, môi. Với cách định nghĩa như trên, phone “y” trong tiếng Việt được coi là nguyên âm.

Độ dài của phone nếu là nguyên âm: dài, ngắn hay là nguyên âm đôi tương ứng là l, s, d

Nếu là nguyên âm, độ cao của phone (vheight): cao, trung bình, thấp tương ứng là 1 2 3

Nếu là nguyên âm, phone có phát âm tròn miệng không (vrnd) (+ -)

Nếu phone là phụ âm (ctype), phone là loại âm gì: âm mũi (n), âm xát (f), âm nước (l), âm dừng (s), âm dừng và xát (a).

Nếu là phụ âm vị trí gặp vật cản (cplace): môi (l), vòm miệng (p), răng (a, d, v), cả môi và răng (b).

Tôi đã xây dựng bảng phone tiếng Việt cho các nguyên âm và phụ âm như sau:

Bảng 1 Các nguyên âm đơn tiếng Việt và tính chất

Thứ tự Phone Ký hiệu Độ dài Độ cao Phát âm tròn miệng

1. a A Dài Thấp Không

2. ă Aw Ngắn Cao Không

3. â Aa Ngắn Cao Không

4. e E Ngắn Thấp Không

5. ê Ee Dài Thấp Không

6. i I Ngắn Cao Không

7. o O Ngắn TB Có

- 19 -

8. ô Oo Ngắn TB Có

9. ơ Ow Ngắn TB Không

10. u U Ngắn Cao Có

11. ư Uw Dài Cao Không

12. y Y Ngắn Cao Không

Bảng 2 Các nguyên âm đôi của tiếng Việt và tính chất

Thứ tự Phone Kí hiệu Độ dài Độ cao Phát âm tròn miệng

1. ai AI Nguyên âm đôi Cao Không

2. ao AO Nguyên âm đôi TB Có

3. au AU Nguyên âm đôi TB Có

4. ay AY Nguyên âm đôi TB Có

5. âu AaU Nguyên âm đôi Thấp Có

6. ây AaY Nguyên âm đôi Cao Không

7. eo EO Nguyên âm đôi TB Có

8. êu EeU Nguyên âm đôi Cao Không

9. ia IA Nguyên âm đôi TB Không

10. iê IEe Nguyên âm đôi TB Không

11. iêu IEeU Nguyên âm đôi TB Không

12. iu IU Nguyên âm đôi Cao Không

13. oa OA Nguyên âm đôi TB Không

- 20 -

14. oă OAw Nguyên âm đôi Cao Không

15. oe OE Nguyên âm đôi Cao Không

16. oi OI Nguyên âm đôi Cao Không

17. oo OO Nguyên âm đôi TB Có

18. ôi OoI Nguyên âm đôi TB Không

19. ơi OwI Nguyên âm đôi TB Không

20. ua UA Nguyên âm đôi TB Không

21. uâ UAa Nguyên âm đôi Cao Không

22. uê UEe Nguyên âm đôi TB Không

23. ui UI Nguyên âm đôi Cao Không

24. uyê UYEe Nguyên âm đôi TB Không

25. uô UOo Nguyên âm đôi TB Có

26. uôi UOoI Nguyên âm đôi TB Không

27. uơ UOw Nguyên âm đôi TB Không

28. uy UY Nguyên âm đôi Cao Không

29. uya UYA Nguyên âm đôi Cao Không

30. ưa UwA Nguyên âm đôi Cao Không

31. ưi UwI Nguyên âm đôi Cao Không

32. ươ UwOw Nguyên âm đôi TB Không

33. ươu UwOwU Nguyên âm đôi TB Có

34. ưu UwU Nguyên âm đôi TB Có

- 21 -

Bảng 3 Các phụ âm tiếng Việt và tính chất

Thứ tự Phone Kí hiệu Loại phụ âm Vị trí cản

1. b B Âm dừng Môi

2. c C Âm dừng Môi

3. ch CH Âm dừng Môi

4. d D Âm dừng Răng

5. đ Dd Âm dừng Răng

6. g G Âm dừng Răng

7. gi GI Âm dừng Răng

8. h H Âm xát Răng

9. kh KH Âm dừng Môi

10. l L Âm nước Răng

11. m M Âm mũi Môi

12. n N Âm mũi Răng

13. ng NG Âm mũi Răng

14. nh NH Âm dừng Môi

15. p P Âm dừng Môi

16. ph PH Âm dừng Môi

17. q Q Âm dừng Răng

18. r R Âm xát Răng

- 22 -

19. s S Âm xát Răng

20. t T Âm dừng Răng

21. tr TR Âm dừng Răng

22. th TH Âm xát Răng

23. v V Âm xát Môi và răng

24. x X Âm xát Vòm miệng

Từ bảng tổng hợp trên, tôi đã định nghĩa các phone tiếng Việt trong file festvox/vnu_vn_ldk_phoneset.scm.

3.4 Xây dựng tập các diphone:

Đây là quá trình liệt kê tất cả các khả năng ghép của các phone với nhau. Một cách đơn giản chúng ta có thể viết đoạn chương trình:

Bảng 4 Một cách liệt kê các diphone

for (phone u trong tập phone)

for (phone v trong tập phone)

tập diphone kết quả = add(diphone(u – v))

Trong tiếng Việt không phải cặp phone – phone nào cũng tồn tại, vì vậy, cách làm này gây ra sự lãng phí về cơ sở dữ liệu phải lưu trữ, tuy không ảnh hưởng đến chất lượng tiếng nói tổng hợp thu được sau cùng nhưng làm cho cơ sở dữ liệu bị tăng lên nhiều lần. Theo cách định nghĩa các phone như trên, sẽ không tồn tại các diphone dạng nguyên âm – nguyên âm hoặc phụ âm – phụ âm. Tôi sẽ chỉ định nghĩa những diphone có tồn tại. Để dễ dàng hơn cho việc xây dựng, tôi chia các phone vào 5 tập:

Bảng 5 Phân loại các phone

Các tập dữ liệu Các phần tử

8 phone phụ âm có thể đứng cuối

(consonants_can_stay_last)

C, CH, M, N, NG, NH, P, T

- 23 -

16 phone phụ âm không thể đứng cuối

(consonants_cannot_stay_last)

B, D, Dd, G, GI, H, KH, L, PH, Q, R, S, TR, TH, V, X

13 phone nguyên âm có thể đứng cuối

(vowels_can_stay_last)

A, E, Ee, I, O, Oo, Ow, U, Uw, OA, OE, UY, Y

24 phone nguyên âm bắt buộc phải đứng cuối (vowels_must_stay_last)

AI, AO, AU, AY, AaU, AaY, EO, EeU, IA, IEeU, IU, OI, OoI, OwI, UA, UEe, UI, UooI, UOw, UYA, UwA, UwI, UwOwU, UwU

9 phone nguyên âm không thể đứng cuối (vowel_cannot_stay_last)

Aa, Aw, IEe, OAw, OO, UAa, UYEe, UOo, UwOw

Sau khi đã chia các phone vào 5 tập như trên, ta có thể thực hiện việc liệt kê các phép ghép nối dễ dàng hơn.

3.4.1 Diphone giữa âm câm và phụ âm:

Mọi phụ âm đều có khả năng đứng ở đầu của một tiếng vì vậy ta sẽ có 24 diphone giữa âm câm và phụ âm:

Bảng 6 Diphone âm câm – phụ âm

(set! silc-carrier '(() (A T A pau))) (define (list-silc) (mapcar (lambda (c) (set! count (+ 1 count)) ;;; to count (list (list (string-append silence "-" c)) (append (car silc-carrier)(list silence c)(car(cdr silc-carrier))) ) ) (append consonants_can_stay_last consonants_cannot_stay_last) ) )

3.4.2 Diphone giữa âm câm và nguyên âm

Mọi nguyên âm đều có khả năng đứng đầu của một tiếng vì vậy ta sẽ có 46 diphone giữa âm câm và nguyên âm:

Bảng 7 Diphone âm câm – nguyên âm

(set! silv-carrier '(() (N N A pau)))

- 24 -

(define (list-silv) (mapcar (lambda (v) (list (list (string-append silence "-" v)) (append (car silv-carrier)(list silence v)(car(cdr silv-carrier))) ) ) (append vowels_can_stay_last vowels_cannot_stay_last vowels_must_stay_last) ) )

3.4.3 Diphone giữa phụ âm và âm câm

Diphone phụ âm và âm câm cần xét đến khi phụ âm đứng cuối một tiếng. Ở đây sẽ chỉ có các phụ âm trong tập consonants_can_stay_last tham gia. Ta sẽ thu được 8 diphone.

Bảng 8 Diphone phụ âm – âm câm

(set! csil-carrier '((pau T A T A) ())) (define (list-csil) (mapcar (lambda (c) (list (list (string-append c "-" silence)) (append (car csil-carrier)(list c silence)(car(cdr csil-carrier))) ) ) consonants_can_stay_last ) )

3.4.4 Diphone giữa nguyên âm và âm câm

Diphone giữa nguyên âm và âm câm cần xét đến khi có nguyên âm đứng ở cuối một tiếng. Ở đây sẽ chỉ có các nguyên âm thuộc tập vowel_can_stay_last và vowels_must_stay_last tham gia. Ta sẽ thu được 37 diphone.

Bảng 9 Diphone nguyên âm – âm câm

(set! vsil-carrier '((pau T A T ) ())) (define (list-vsil) (mapcar (lambda (v) (list (list (string-append v "-" silence)) (append (car vsil-carrier)(list v silence)(car(cdr vsil-carrier))) ) ) (append vowels_can_stay_last vowels_must_stay_last) ) )

- 25 -

3.4.5 Diphone giữa phụ âm – nguyên âm

Theo cách định nghĩa như ở trên, mọi cặp phụ âm – nguyên âm đều có thể ghép để tạo thành diphone. Tuy nhiên ở đây, ta sẽ tách làm 2 phần. Nhóm 1 sẽ gồm tất cả các phụ âm được ghép với các nguyên âm thuộc hai tập vowels_can_stay_last và vowels_must_stay_last. Nhóm 2 sẽ gồm tất cả các phụ âm được ghép với các nguyên âm thuộc tập vowels_cannot_stay_last. Lý do của việc tách công việc làm hai phần là do chúng ta trong lúc chúng ta tạo danh sách các diphone, chúng ta đồng thời còn làm luôn việc nhúng các diphone vào carrier. Và sẽ là thuận lợi hơn cho chúng ta trong quá trình thu âm nếu chúng ta tách làm hai phần. Danh sách diphone của chúng ta sau khi thực hiện xong bước này sẽ có thêm 1104 diphone

Bảng 10 Diphone phụ âm – nguyên âm 1

(set! cvl-carrier '((pau T A ) (pau))) (define (list-cv1) (apply append (mapcar (lambda (v) (mapcar (lambda (c) (list (list (string-append c "-" v)) (append (car cv1-carrier)(list c v)(car(cdr cv1-carrier)))) )(append consonants_can_stay_last consonants_cannot_stay_last) ) )(append vowels_can_stay_last vowels_must_stay_last) ) ) )

Bảng 11 Diphone phụ âm – nguyên âm 2

(set! cv2-carrier '((pau T A ) (N pau))) (define (list-cv2) (apply append (mapcar (lambda (v) (mapcar (lambda (c) (list (list (string-append c "-" v)) (append (car cv2-carrier)(list c v)(car(cdr cv2-carrier)))) )(append consonants_can_stay_last consonants_cannot_stay_last) ) ) vowels_cannot_stay_last ) ) )

- 26 -

3.4.6 Diphone giữa nguyên âm – phụ âm

Đây chính là công đoạn khó khăn nhất trong việc xây dựng tập các diphone cho tiếng Việt. Nguyên nhân là do ta không thể đưa ra một quy tắc chung nào cho việc liệt kê danh sách của các diphone giữa nguyên âm – phụ âm. Ở công đoạn này, tôi hoàn làm thủ công, liệt kê danh sách các diphone này. Cụ thể chúng ta có 89 diphone.

Bảng 12 Diphone nguyên âm – phụ âm

(set! vc-carrier '((pau T A T) ( pau))) (set! valid_vc '( (A C) (A CH) (A M) (A N) (A NG) (A NH) (A T) (Aw C) (Aw M) (Aw N) (Aw NG) (Aw t) (AA C) (AA M) (AA N) (AA NG) (AA t) (E C) (E M) (E N) (E NG) (E t) (Ee CH) (Ee M) (Ee N) (Ee NG) (Ee NH) (Ee T) (I CH) (I M) (I N) (I NG) (I t) (O C) (O M) (O N) (O NG) (O t) (Oo C) (Oo M) (Oo N) (Oo NG) (Oo t) (Ow C) (Ow M) (Ow N) (Ow NG) (Ow t) (U C) (U M) (U N) (U NG) (U t) (Uw C) (Uw M) (Uw N) (Uw NG) (Uw t) (Y T) (Y CH) (OA C) (OA CH) (OA M) (OA N) (OA NG) (OA T) (OE N) (OE T) (UY T) (IEe C) (IEe M) (IEe N) (IEe NG) (IEe T) (OAw C) (OAw M) (OAw N) (OAw NG) (OAw T) (OO NG) (UAa N) (UAa T) (UYEe N) (UYEe T) (UOo C) (UOo M) (UOo N) (UOo NG) (UOo T) )) (define (list-vc) (mapcar (lambda (z) (set! v (car z)) (set! c (car (cdr z))) (list (list (string-append v "-" c)) (append (car vc-carrier) (list v c) (car (cdr vc-carrier)))) ) valid_vc) )

3.5 Carrier và ý nghĩa của nó

Ta hoàn thành việc tạo danh sách diphone bằng cách gọi: festival –b festvox/diphlist.scm festvox/vn_schema.scm ‘(diphone-gen-schema “vn” “etc/vndiph.list”)’. Lúc này, chúng ta có thể xem toàn bộ danh sách các diphone và carrier chứa nó trong file etc/vndiph.list

- 27 -

Sau khi đã hoàn thành việc tạo danh sách 1309 diphone, nếu ta thu âm ngay các diphone này để thực hiện ghép nối thì chúng ta hoàn toàn có thể thu đươc một tiếng nói ở mức trung bình. Nguyên nhân của điều này là do ta thu từng diphone tại các thời điểm khác nhau nên khi ghép hai diphone, tần số tại điểm cần ghép là không tương đương nhau. Ngoài ra, còn do cách đọc các diphone dài hoặc ngắn khác nhau tại mỗi thời điểm nên tiếng nói sau khi ghép không được như mong muốn. Để tăng cường chất lượng cho tiếng nói tổng hợp, người ta đưa ra khái niệm carrier.

Để tăng chất lượng cho tiếng nói, đồng thời với việc tạo ra danh sách các diphone, người ta đã nghĩ ra một giải pháp khắc phục nhược điểm này. Thay vì chỉ đọc một diphone, ta sẽ đọc một câu trong đó có chứa diphone đó. Diphone sau đó sẽ được trích ra, việc này giúp giảm thiểu những ảnh hưởng do âm điệu của người đọc vì khi đọc một đoạn dài có chứa diphone, người đọc có xu hướng đọc đều hơn và ta có thể thu được một diphone mong muốn. Câu gồm nhiều diphone và không có nghĩa này chính là carrier.

Ta phải nhúng các diphone cần thu âm vào carrier theo ý của ta. Các đoạn code ở phía trên đây đã có một bước thực hiện việc nhúng các diphone nay vào các carrier (các đoạn code in nghiêng). Tôi đã quy định với mỗi loại diphone thì carrier lại có một định dạng riêng như sau:

Bảng 13 Khai báo các carrier

(set! silc-carrier '(() (A T A pau))) (set! silv-carrier '(() (N N A pau))) (set! csil-carrier '((pau T A T A) ())) (set! vsil-carrier '((pau T A T ) ())) (set! cv1-carrier '((pau T A ) (pau))) (set! cv2-carrier '((pau T A ) (N pau))) (set! vc-carrier '((pau T A T) ( pau)))

Ý nghĩa của đoạn khai báo trên là tạo ra dạng của các carrier:

Với các diphone dạng âm câm – phụ âm như âm câm – B ta có carrier là “silence B A T A silence”.

Với các diphone dạng silence – nguyên âm như silence – A ta có carrier là “silence A N N A silence”.

Với các diphone dạng phụ âm – silence như T – silence ta có carrier là “silence T A T A T silence”.

Với các diphone dạng nguyên âm – silence như Ow – silence, ta có carrier là “silence T A T Ow silence”.

- 28 -

Với các diphone dạng phụ âm – nguyên âm (loại 1) như B – O ta có carrier là “silence T A B O silence”.

Với các diphone dạng phụ âm – nguyên âm (loại 2) như T – IEe ta có carrier là “silence T A T I Ee N silence”.

Với các diphone dạng nguyên âm – phụ âm như UYEe – T ta có carrier là “silence T A T UYEe T silence”

Điều quan nhất là các carrier không có nghĩa cụ thể nên người đọc không thể hiện sự biến thiên về ngôn điệu và duration (khoảng thời gian kéo dài của âm vị) khi đọc chúng. Đặc biệt với các diphone được lấy ra từ giữa của một carrier, ảnh hưởng tại điểm khớp nối sẽ được làm giảm tới mức cực tiểu.

3.6 Ánh xạ các phone tiếng Việt sang tiếng Anh

Ngoài việc nhúng các diphone vào carrier, ta còn phải ánh xạ mỗi phone tiếng Việt sang một phone có cách đọc gần giống trong tiếng Anh. Mục đích của việc ánh xạ các phone tiếng Việt sang tiếng Anh là để Festival có thể đọc được và có thể tự động trích được diphone mong muốn ra khỏi carrier.

Festival có cung cấp 4 bộ phone chuẩn (2 Anh – Anh, 2 Anh – Mỹ). Giả sử ta có một carrier “silence – a – n – a – silence” và ta mong muốn trích được diphone “a – silence” ra khỏi carrier. Với việc ta ánh xạ phone tiếng Việt sang phone tiếng Anh, Festival sẽ tự đọc carrier trên theo giọng đọc của Festival. Nhờ vậy, khi sau khi ta thu âm carrier của ta và so sánh với carrier do Festival đọc, Festival có thể tự trích lấy diphone “a – silence” mà ta mong muốn. Dưới đây là ví dụ bảng ánh xạ mà tôi đã thực hiện trong file vn_schema.scm [13]:

Bảng 14 Ví dụ ánh xạ phone tiếng Việt sang phone tiếng Anh

Phone tiếng Việt Phone tiếng Anh Phone tiếng Việt Phone tiếng Anh

A aa Ow er

O ow D dh

E eh Uw uh

Aw ae GI jh

- 29 -

Sinh khi thực hiện việc ánh xạ này xong, chúng ta có thể sinh ra cách đọc của Festival cho các carrier của chúng ta bằng lệnh: festival –b festvox/diphlist.scm festvox/vn_schema.scm ‘(diphone-gen-waves “prompt-wav” “prompt-lab” “etc/vndiph.list”)’ Lệnh này cũng đồng thời sinh ra “nhãn” của các diphone được Festival đọc. “Nhãn” ở đây có ý nghĩa là thời điểm đọc của các diphone.

3.7 Thu âm

Sau khi đã sinh được danh sách các diphone, ta có thể kiểm tra lại trong file etc/vndiph.list sẽ có 1309 diphone tiếng Việt.

Để thu âm đạt được kết quả cao, ta cần các điều kiện sau:

Về phòng thu: Phòng thu phải đảm bảo các yếu tố về cách âm. Đây là điều rất quan trọng ảnh hưởng đến chất lượng tiếng nói được tổng hợp. Ngoài ra, nếu thu trong nhiều ngày, phòng thu cần phải có độ ẩm và nhiệt độ tương đương nhau.

Về thiết bị thu: Chúng ta cần một micro tốt và card sound tốt. Micro tốt là micro có khả năng lọc được nhiễu ở đầu vào, âm thanh thu đạt độ trung thực cao. Card sound có nhiệm vụ chính là chuyển tín hiệu rời rạc (digital) ở đầu ra thành tín hiệu sóng (analog). Card sound tốt sẽ giúp cho chất lượng tiếng nói tổng hợp được trơn hơn. Ngoài ra, card sou

Về người đọc: Chúng ta cần một người có giọng đọc chuẩn, không mang tính địa phương. Giọng đọc không quá cao hoặc quá thấp. Người đọc cần phải thu âm trong trạng thái khỏe mạnh, không bị các bệnh tai, mũi, họng. Nếu thu âm trong nhiều ngày thì nên thu âm vào cùng một thời điểm trong ngày.

Một phòng thu ở studio với hệ thống âm thanh hiện đại và MC chuyên nghiệp là một điều kiện lý tưởng. Tuy nhiên, trong khuôn khổ khóa luận này, tôi không có đủ khả năng để có được điều kiện lý tưởng như vậy. Tôi thực hiện việc thu âm này trên máy tính cá nhân và một micro không thật tốt.

Festival có hỗ trợ chúng ta hàm prompt-them cho phép chúng ta thu âm liên tiếp các diphone theo thứ tự từ carrier thứ X trở đi: “bin/prompt-them etc/vndiph.list X”. Ở đây X mặc định bằng 1.

- 30 -

3.8 Đánh nhãn các diphone

Sau khi thực hiện việc thu âm xong, chúng ta đã có tập âm các carrier. Để trích các diphone ra, ta thực hiện việc đánh “nhãn” các diphone với hàm make_labs của festival: bin/make_labs prompt-wav/*.wav. “Nhãn” ở đây là thời điểm chúng ta đọc từng diphone trong carrier. Từ “nhãn” này có thể dễ dàng sinh ra cách đọc của các diphone. Sau quá trình trên, với mỗi file wav thu âm giọng đọc, chúng ta có một file lab lưu thông tin về điểm bắt đầu và điểm kết thúc của diphone. Dưới đây là hình ảnh biểu diễn dạng sóng của một carrier và diphone đã được được đánh nhãn [2]:

Hình 9 Biểu diễn dạng sóng của một carrier và đánh nhãn diphone

3.9 Tìm pitchmark

Hàm make_pm_wave tìm ra các điểm pitch trong biểu diễn dạng sóng của diphone thu được. “bin/make_pm_wave etc/vndip.list”

Tiếp đó, hàm make_pm_fix di chuyển các điểm pitch về các điểm phù hợp nhất sao cho biểu diễn dạng sóng phone khớp nối trong hai diphone cần ghép nối giống nhau. “bin/make_pm_fix etc/vndiph.list”.

- 31 -

Lúc này, ta đã có một cơ sở dữ liệu cách đọc các diphone đầy đủ.

3.9.1 Các bước để lấy pitchmark tốt

Festival đã hỗ trợ việc lấy pitchmark tự động tuy nhiên việc lấy được pitchmark tốt là rất quan trọng, một đoạn carrier có quá nhiều, hay quá ít pitchmark đều không tốt. Lấy pitchmark tự động rất dễ bị rơi vào trường hợp này. Đây là cách tôi thực hiện để có thể lấy được một pitch mark tốt dựa theo hướng dẫn của [15].

Script make_pm_wave có được gọi với một vài tham số mà ta cần phải quan tâm như sau:

min – là khoảng thời gian ngắn nhất giữa hai pitchmark (được tính bằng giây)

max – là khoảng thời gian dài nhất giữa hai pitchmark (được tính bằng giây)

def – là chu kỳ pitchmark mặc định. Thông thường được đặt là 0.01 giây.

wave_end – đặt pitch mark cuối cùng ở kết thúc của sóng.

lx_lf – cận dưới của tần số

lx_hf – cận trên của tần số

Các bước để lấy pitch của 1 file, ví dụ file wav/vn_0001.wav:

Sửa giá trị min và max cho phù hợp với giọng người đọc. Một người đọc là nam nên đặt min = 0.005, max = 0.012 (tức là 200 đến 80 Hz). Nếu người đọc là nữ, nên đặt min = 0.0033, max = 0.7 (tương đương với (300 tới 140 Hz).

Chạy script bin/make_pm_wave wav/vn_0001.wav để lấy pitchmark.

Chạy script make_pmlab_pm. Script này đổi file pitchmark thành một file có thể biểu diễn được bằng công cụ emulabel (công cụ đã có sẵn trong Festival): bin/make_pmlab_pm pm/vn_0001.pm

Xem các pitchmark bằng cách gọi emulabel etc/emu_pm vn_0001

- 32 -

Hình 10 Pitchmark của sóng "taa taa taa"

Ta phải lặp lại việc hiệu chỉnh các thông số cho tới khi thu được một pitch mark như ý.

3.10 Kiểm thử

Sau khi hoàn thành việc đánh pitchmark, ta đã có thể thử nghiệm hệ thống của chúng ta bằng cách load diphone chúng ta vừa thu được:

festival festvox/vnu_vn_ldk_diphone.scm “(voice_vnu_vn_ldk_diphone)”

festival> (SayPhones ‘(pau x i n ch a o))

Thực tế cho thấy đây là giai đoạn tốn nhiều thời gian nhất. Giai đoạn này đi kèm với việc thu đi thu lại các diphone, đánh pitchmark lại.

3.11 Thêm dấu cho tiếng Việt

Thư viện Festival có cung cấp cho chúng ta chương trình ToBI cho phép chúng ta truy cập trực tiếp vào sóng âm thanh (utterance). Để sử dụng được chương trình này ta thực hiện các bước sau: [5]

festival/ %FESTIVALDIR%/lib/tobi_rules.scm

festival> (require ‘tobi_rules)

festival> (setup_tobi_f0_method)

Tất cả các dữ liệu trong thư viện festival được lưu trữ dưới dạng utterance. Một utterance có thể ở dạng: xâu (Words), sóng âm (Wave), số (Number). Festival đồng

- 33 -

thời cũng cung cấp cho chúng ta các hàm để truy cập, thay đổi giá trị các utterance này. Dưới đây là các câu lệnh để khởi tạo một utterance dạng xâu, tổng hợp utterance đó thành dạng sóng và phát ra loa:

festival>(set! myUTT (Utterance Words (chao)))

festival>(utt.synth myUTT)

festival>(utt.play myUTT)

Đoạn chương trình trên sẽ phát ra chữ “chao”.

Việc bỏ dấu cho một tiếng chính là việc thay đổi tần số F0 của sóng âm thanh. Các utterance có giá trị accent (trọng âm) và tone (âm). Ta có thể thay đổi 2 giá trị này để tạo ra thanh điệu. ToBI cung cấp một số giá trị để thay đổi. Ta có thể thay đổi L*, L+, L-, H+, H-, H%, !H [11]

Dựa trên các nghiên cứu ở mục (2.5) và qua quá trình kiểm thử, tôi đã thay đổi các giá trị sóng âm để tạo ra thành công 4 / 6 thanh điệu của tiếng Việt.

Đây là các lệnh cần thực hiện để tạo ra tiếng: “Chào”

festival>(set! myUTT (Utterance Words ((chao ((accent L*) (tone L-))))))

festival>(utt.synth myUTT)

festival>(utt.play myUTT)

Với giá trị accent là L* và tone là H-H%, ta có thể tạo ra âm “chão”.

Với giá trị accent là H* và tone là H-H%, ta có thể tạo ra âm “cháo”.

- 34 -

Chương 4 Tổng kết

4.1 Kết quả thu được

Hệ thống TTS cho tiếng Việt mà tôi đã xây dựng đã tạo ra được một tiếng nói thỏa mãn yêu cầu quan trọng nhất là phát âm không sai và con người có thể nghe hiểu được. Tiếng nói được tổng hợp có độ tự nhiên, không rời rạc. Các từ trong câu được đọc một cách liền mạch, trơn chu. Kết quả thu được này có thể nói là đã đạt được mục đích ban đầu đặt ra khi thực hiện khóa luận này.

Có thể kết luận rằng, với hệ thống TTS cho tiếng Việt, phương pháp ghép nối diphone thể hiện được nhiều ưu điểm vượt trội so với các phương pháp tổng hợp khác như Formant. Có thể khẳng định rằng, tại thời điểm hiện nay, đây là phương pháp thích hợp nhất.

Đã thử nghiệm thành công việc thay đổi tần số của sóng âm để tạo ra dấu cho tiếng Việt. Tuy vậy, tôi mới chỉ thay đổi được tần số của sóng âm để tạo ra 4 trong số 6 thanh của tiếng Việt.

Trong khuôn khổ khóa luận này, tôi cũng chưa chú ý đến xử lý ngữ điệu của văn bản trong khi tổng hợp. Đây chính là điểm mà TTS tiếng Anh đang vượt xa các hệ thống TTS của các ngôn ngữ khác

4.2 Các khó khăn thách thức

Trong quá trình thực hiện việc thử nghiệm tổng hợp tiếng nói tiếng Việt sử dụng phương pháp ghép nối diphone, tôi đã gặp nhiều khó khăn, trong đó có cả những khó khăn về chủ quan lẫn khách quan.

Một khó khăn rất lớn tôi đã gặp phải khi thực hiện đề tài này là việc sử dụng bộ 3 thư viện mã nguồn mở Festival, Festvox, Speech Tools. Ba thư viện này đã được cập nhật các phiên bản mới hơn nhưng hướng dẫn sử dụng lại không được cập nhật đồng thời. Vì vậy, tôi đã mất rất nhiều thời gian để xem lại mã nguồn của 3 thư viện này.

Bản thân tiếng Việt tuy có nhiều thuận lợi hơn so với các ngôn ngữ khác nhưng lại có những đặc trưng riêng và thanh điệu gây khó khăn cho việc tổng hợp.

Một khó khăn nữa là tôi không có một phòng thu đảm bảo, không có một micro thật tốt và không có một giọng đọc tốt.

- 35 -

Đây là lần đầu tiên tôi rời xa Windows và thực sự làm việc nghiêm túc trên môi trường Linux. Những khó khăn do môi trường làm việc mới là không thể tránh khỏi. Tuy vậy, sau một thời gian nghiên cứu, tìm hiểu, những khó khăn này không còn là cản trở lớn.

Dù vậy, tôi hài lòng với những kết quả đã đạt được.

4.3 Các hướng nghiên cứu phát triển tiếp theo

Đề tài tổng hợp tiếng nói tiếng Việt sử dụng phương pháp ghép nối diphone mà tôi thực hiện còn nhiều hạn chế, còn rất nhiều hướng để có thể tiếp tục nghiên cứu, phát triển tiếp:

Ta có thể xây dựng lại tập phone đầy đủ (có dấu) cho tiếng Việt. Phát triển theo hướng tự đánh nhãn, không phụ thuộc vào giọng đọc của Festival. Cách làm này sẽ rất vất vả trong việc đánh nhãn do sẽ phải thực hiện toàn bộ bằng tay, nhưng sẽ mang lại một giọng nói tổng hợp chính xác về thanh điệu, trơn chu và tự nhiên.

Ta có thể phát triển tiếp theo hướng nghiên cứu sâu hơn về kỹ thuật sửa đổi sóng âm để có thể tạo ra thanh điệu. Nếu thành công, đây sẽ là cách tổng hợp hiệu quả nhất, cả về chất lượng cũng như tiết kiệm về cơ sở dữ liệu phải lưu trữ.

Tập trung nghiên cứu về ngữ điệu của tiếng Việt và thực hiện một hệ thống TTS có ngữ điệu.

- 36 -

Tài liệu tham khảo

[1] Mai Ngọc Chử, Vũ Đức Nghiệu, Hoàng Trọng Phiến: “Cơ sở ngôn ngữ học và Tiếng Việt”, NXB Giáo dục (2000)

[2] Nguyễn Thị Hương, “Tổng hợp tiếng nói từ văn bản tiếng Việt bằng phương pháp ghép nối diphone”, (2005)

[3] Đoàn Thiện Thuật, “Ngữ âm tiếng Việt”, NXB Đại học Quốc Gia Hà Nội (1999)

[4] http://vi.wikipedia.org/wiki/Tổng_hợp_giọng_nói

[5] Alan W Black, Paul Taylor, Richard Caley, “The Festival Speech Synthesis System” (1999)

[6] Alan W Black, Paul Taylor, Richard Caley, Simon King, “Edinburgh Speech Tools Library”, (1999)

[7] Alan W Black, Kevin A Lenzo, “Building Synthetic Voices”, (2007)

[8] Nguyen Tien Dung, Hansjörg Mixdorff, Luong Chi Mai, Ngo Huy Hoang, Vu Kim Bang, “Fujisaki Model based F0 contours in Vietnamese TTS” (2004)

[9] Tran Do Dat, Eric Castelli, Jean-Francois Serignat, Trinh Van Loan, Le Xuan Hung, “Influence of F0 on Vietnamese syllable perception”

[10] Thierry Dotoit “High Quality Text-to-Speech Synthesis: A Comparison of Four Candidate Algorithms” (1994)

[11] Janet Fletcher “Intonation and Prosody in Australian English and New Zealand English”, STT 2006 workshop Auckland, New Zeland

[12] Carolie Hemptinne “Intergration of the harmonic plus noise model (HNM) into the hidden Markov model-based speech synthesis system (HTS)” (2006)

[13] James L.Hieronymus, Bell Laboratories, Murray Hill, “ASCII Phonetic Symbols for the World’s Languages”

[14] Sami Lemetty, “Review of Speech Synthesis Technology”, (1999)

[15] J.A. Louw, “A Short Guide to Pitch-marking in the Festival Speech

- 37 -

Synthesis System and Recommendations for Improvements”

[16] Yannis Stylianou, Thierry Dutoit, Juergen Schroeter “Diphone Concatenation using a Harmonic plus Noise Model of Speech”

[17] David Vandromme “Harmonic Plus Noise Model for Concatnenative Speech Synthesis” (2005)

[18] http://en.wikipedia.org/wiki/Speech_synthesis