Văn bản cần xử lý được phân tích tuần tự theo từng từ. Với mỗi từ ta xác định được diphone bắt đầu và kết thúc tương ứng. Công việc tiếp theo là ghép nối các diphone này lại và biến đổi tần số cơ bản để tạo thành tiếng nói tổng hợp.
Trong phần này có nhiều vấn đề phát sinh như sau. - Chất lượng các diphone có thể không đồng đều.
- Các diphone có những diphone dài và ngắn, không bằng nhau.
Trước khi đưa ra một số giải thuật và phương pháp cho thực hiện ghép nối các diphone, ta đưa thêm vào một số kí hiệu để cho việc thể hiện giải thuật được dễ dàng hơn.
s1(t) : Tín hiệu tiếng nói của diphone đầu. Các điểm mốc được ký hiệu là mi s2(t) : Tín hiệu tiếng nói của diphone cuối. Các điểm mốc được ký hiệu là m'i
( )t s
~
Tín hiệu tiếng nói của từ tổng hợp được. Các điểm mốc được ký hiệu là mj
Do sự rời rạc hoá về mặt thời gian của tín hiệu tiếng nói khi được thu và lưu trữ trong máy tính nên khi thao tác với s1(t) ta coi như là s1(n), s2(t) ta coi như s2(n),
( )t s ~ như s~( )n . 4.5.1. Ghép nối các diphone 4.5.1.1. Đặt vấn đề.
Cần tổng hợp một từ không dấu với 2 diphone đã có sẵn. Từ tạo thành có độ dài nhất định (Có thể cho trước) để việc ghép vào một câu không gây ra sự biến đổi quá lớn về độ dài tín hiệu của các từ.
78
4.5.1.2. Phân tích vấn đề.
Dữ liệu về hai diphone bao gồm dạng tín hiệu và các điểm đánh dấu đã có. Ngoài ra ta cần đưa thêm các tham số là độ dài của từ cần tổng hợp và tần số cơ bản F0 của từ cần tổng hợp. Do từ không dấu nên tần số cơ bản F0 là không đổi.
Khi đã có các thông tin này ta hoàn toàn có thể tổng hợp từ bằng việc sử dụng thuật giải TD-PSOLA.
4.5.1.3. Giải pháp và các bước thực hiện.
Bước 1: Dựa trên sự phân tích về độ dài và tần số F0 đã có. Định vị những điểm mốc trên tín hiệu tiếng nói của từ sẽ tạo ra. Khoảng cách T giữa các điểm mốc được lấy như sau:
T = TSLM /F0
Với TSLM là tần số lấy mẫu của tín hiệu tiếng nói. Ở trong luận văn này,
TSLM được lấy là 16 kHz.
Khoảng cách T này đóng vai trò là chu kỳ của tín hiệu tổng hợp Vì vậy tổng số điểm mốc N sẽ là:
N = (L - delta) /T + 1
Vậy tín hiệu được tạo ra là s%(n) có các điểm mốc mj với 0 ≤ j ≤ N
Ở đây delta là tổng 2 độ dài phần phụ âm của diphone đầu và diphone sau. L là độ dài của tín hiệu của từ cần tổng hợp. Vì phần phụ âm không tham gia vào quá trình tổng hợp. Nên từ giờ trở đi ta coi L là độ dài phần nguyên âm.
79
Bước 2: Tại các điểm mốc trên 2 diphone đã có, nhân tín hiệu với cửa sổ Hanning. Với cửa sổ Hanning như sau:
( ) ( ) − + = π π T n n s n w 1 cos 2 2
Với T là độ dài của cửa sổ Hanning. Ở trong trường hợp này cửa sổ Hanning được lấy bằng T.
Tín hiệu sau khi nhân với cửa sổ Hanning sẽ tạo thành tín hiệu thành phần tại vị trí điểm mốc thứ i. Điểm mốc này có thể nằm trên diphone thứ nhất hoặc diphone thứ 2, chu kỳ T0 là chu kỳ tức thời của phần nguyên âm của diphone đó.
Hình 4.7: Vị trí lấy cửa sổ
Bước 3: Cộng xếp chồng tín hiệu để tạo nên từ cần tổng hợp
( ) ∑− ( ) = = 1 0 ~ N j j n S n s ( )n s ~
là tín hiệu mới sẽ được tạo ra. T là chu kỳ của nó.
80
Giải thuật ghép nối để tạo thành từ không dấu được minh họa dưới đây:
Hình 4.9: Lưu đồ ghép nối 2 diphone để tạo thành từ.
4.5.2. Ghép nối các diphone tạo thành các từ có dấu.
Việc ghép nối các diphone để tạo thành từ có dấu chia làm 2 trường hợp: - Ghép nối và thay đổi tần số với các diphone thông thường để tạo nên từ có dấu.
81
4.5.2.1. Từ tạo thành từ các diphone thông thường.
Những từ có dấu khác với những từ không dấu bởi trong quá trình phát âm ra những từ này tần số cơ bản Fo của từ có sự thay đổi. Sự thay đổi này tạo nên những từ có dấu (thanh điệu) khác nhau. Tóm lại từ có dấu có thể hiểu đơn giản là từ không dấu được biến đổi tần số cơ bản một cách thích hợp. Một số từ không tuân theo quy luật này và ta sẽ xét nó ở mục sau.
Để biến đổi tần số cơ bản của tín hiệu ta cần biết: - Độ dài từ cần tổng hợp
- Quá trình biến đổi của tần số cơ bản
Hình 4.10: Biểu diễn tần số cơ bản của từ theo thời gian
Trên biểu đồ biểu diễn tần số cơ bản theo thời gian ta thấy: - Từ 0 đến t1 tần số biến đổi từ F0 đến F1.
- Từ t1 đến t2 tần số biến đổi từ F1 đến F2. - Từ t2 đến t3 tần số biến đổi từ F2 đến F0.
Trong quá trình xây dựng ứng dụng và khảo sát sự thay đổi của tần số cơ bản F0 để tạo nên các thanh điệu tương ứng trong tiếng Việt. Quy luật về sự biến đổi tần số cơ bản Fo ứng với các thanh điệu được mô tả trong các hình vẽ sau: (trên mỗi hình vẽ bao gồm 2 phần, phần trên là dạng tín hiệu trong miền thời gian, phần dưới là đường biểu diễn tần số cớ bản Fo tương ứng của tín hiệu)
82 * Thanh bằng: Tần số cơ bản không đổi
Hình 4.11: Thanh điệu không dấu (âm a)
* Dấu huyền: Tần số cơ bản giảm dần
Hình 4.12: Dấu huyền (âm à)
* Dấu sắc: Tần số cơ bản tăng dần
83 * Dấu hỏi: Hình 4.14: Dấu hỏi (âm ả) * Dấu nặng: Hình 4.15: Dấu nặng (âm ạ) * Dấu ngã: Hình 4.16: Dấu ngã (âm ã)
84
Trên các hình vẽ mô tả dạng thay đổi tần số cơ bản F0 ở trên ta coi việc tăng hoặc giảm tần số trong một đoạn thời gian là tuyến tính có nghĩa là tăng đều hoặc giảm đều.
Như vậy để tổng hợp từ có dấu thì đầu vào ngoài thông tin về 2 diphone và độ dài của từ còn có các đoạn thời gian ti đến ti+1 và tần số tương ứng F0i, F0i+1 sẽ biết đổi trong đoạn đó.
Giải thuật tổng hợp từ có dấu chỉ khác giải thuật tổng hợp từ không dấu ở bước 1 tức là bước xác định các điểm mốc trên tín hiệu sẽ tổng hợp. Lúc này các điểm mốc không cách đều nhau với tần số F0 nữa mà có khoảng cách tương ứng với tần số đầu vào.
Khi đó:
Ti = TSLM /F0i
Với F0i được xác định như sau:
- Dựa và i có thể biết điểm cần tính tần số cơ bản thuộc đoạn thời gian nào, giả sử thuộc đoận từ tj đến tj+1.
- Với tần số cơ bản tại điểm tj là F0j và tại tj+1 là F0j+1 ta tính được F0i.
85
4.5.2.2. Từ tạo thành từ các diphone đặc biệt.
Như ta đã biết một số từ có dấu đặc biệt trong tiếng việt không thể tổng hợp bằng cách thay đổi tần số của từ không dấu tương ứng. Hay nói theo cách khác đây chính là các diphone có dấu mà chúng không có diphone không dấu tương ứng.
Các diphone này được thống kê trong bảng các diphone đặc biệt đã trình bầy ở trên. Giải pháp đưa ra để tổng hợp những từ loại này ở đây được trình bày trong sơ đồ khối sau:
Hình 4.18: Sơđồ khối tổng hợp diphone đặc biệt
Với phương pháp nối trực tiếp hai đoạn tín hiệu này, ưu điểm là âm thanh phát ra chất lượng khá tốt và trung thực do tín hiệu là tín hiệu thu âm trực tiếp từ người thu và chưa qua xử lý gì. Nhược điểm là không thể thay đổi độ dài của từ.
86
4.6. GIỚI THIỆU MỘT SỐ PHẦN MỀM TỔNG HỢP TIẾNG VIỆT 4.6.1. Vnspeech 4.6.1. Vnspeech
4.6.1.1. Giới thiệu
Vnspeech được thiết kế như một thư viện phần mềm, sẵn sàng cho các nhà phát triển tích hợp, đem lại khả năng nói tiếng Việt cho mọi chương trình ứng dụng. Vnspeech là một trong những thành quả thuộc dự án Hệ xử lý Ngôn ngữ tiếng Việt gồm hệ thống một loạt các engine, từ đầu vào nhận dạng chữ viết - tiếng nói, đến các xử lý như dịch tự động, phân tích - hiểu ngôn ngữ, kiểm tra chính tả - ngữ pháp, tìm kiếm theo nội dung, và cuối cùng đầu ra là tổng hợp tiếng nói. Trong kết quả nghiên cứu, triển khai thực hiện các nội dung trên, phòng Công nghệ Phần mềm, thuộc Trung tâm Công nghệ Vi điện tử và Tin học - Viện Ứng dụng Công nghệ, trước đây đã giới thiệu Hệ dịch Anh-Việt EVTRAN, và nay là VNSPEECH - Engine phần mềm thực hiện chuyển văn bản tiếng Việt thành tiếng nói. Vnspeech được thiết kế như một thư viện phần mềm, sẵn sàng cho các nhà phát triển tích hợp, đem lại khả năng nói tiếng Việt cho mọi chương trình ứng dụng.
4.6.1.2. Hệ TTS tiếng việt - VNSPEECH
Vnspeech là hệ TTS tiếng Việt dựa trên tiếng nói được tổng hợp bằng phương pháp tổng hợp formant, có nghĩa là tiếng nói của Vnspeech tạo ra không phải là tiếng nói tự nhiên được ghi từ trước sau đó phát lại, mà bằng phương pháp sinh ra tín hiệu tiếng nói trên cơ sở các thông số đặc trưng của ngữ âm và luật cấu âm của tiếng Việt (Hình 4.19).
* Sơđồ khối hệ Vnspeech
Vnspeech là phần mềm đầu tiên có thể tổng hợp được tiếng Việt bằng các luật từ các thành phần đặc trưng của ngữ âm tiếng Việt, tự động đọc không hạn chế văn bản tiếng Việt. Ngoài ra, Vnspeech còn là một công cụ mới để nghiên cứu ngữ âm tiếng Việt - Phân tích bằng Tổng hợp. Vnspeech thực hiện phân tích và chuẩn hóa văn bản tiếng Việt, đọc khá rõ tất cả các âm tiết tiếng Việt, thể hiện hợp lý ngữ
87
điệu khi đọc các loại câu khác nhau, có thể điều khiển không hạn chế tốc độ đọc, cao độ của giọng nói để thành các giọng nói khác nhau. Đặc biệt, kích thước toàn bộ của Vnspeech rất nhỏ, không cần file dữ liệu riêng, toàn bộ đều nằm trên file thực thi (chương trình minh hoạ chỉ 350KB), thuận tiện để tích hợp vào mọi loại ứng dụng trên các hệ điều hành, phần cứng khác nhau, hoặc các thiết bị có tài nguyên hạn chế (như thiết bị cầm tay, di động,...). Vnspeech xử lý văn bản tiếng Việt đầu vào thuộc bảng mã TCVN 5712 và Unicode dựng sẵn, tạo dãy tín hiệu tiếng nói đầu ra mã hóa theo chuẩn PCM (16 bit, mono, có thể thay đổi tần số lấy mẫu tùy ý), có thể ghi lên đĩa thành các file theo định dạng WAV hoặc phát trực tiếp ra loa.
Hình 4.19: Sơđồ khối hệ Vnspeech * Phần mềm minh họa
Phần mềm VTTSDemo.exe minh họa các tính năng của Vnspeech, chạy trên MS Windows. Phần mềm này cho phép khảo sát một số đặc tính như điều chỉnh tốc độ đọc, cao độ của giọng nói, cũng như một số khả năng xử lý văn bản tiếng Việt để tạo thành tiếng nói tương ứng. Cách sử dụng và ý nghĩa của một số điều khiển của phần mềm như sau:
- Nhập đoạn văn bản tiếng Việt vào ô soạn thảo (đánh máy hoặc dán từ Clipboard) theo mã TCVN3 (mọi phiên bản Windows) hoặc Unicode dựng sẵn (Windows XP, Server 2003).
88
- Chọn (bôi đen) một đoạn hoặc đặt con trỏ về đầu đoạn cần đọc.
- Nhấn nút Speak để đọc đoạn văn bản được chọn, nhấn nút Stop để dừng giữa chừng, nếu ô soạn thảo trống (rỗng) chương trình sẽ đọc bản thông báo thời gian hiện tại.
- Chương trình có thể đọc được các dãy số, ngày-tháng, viết tắt theo kiểu tiếng Việt. Có thể bổ sung cách đọc các từ lạ vào file abbrdic.txt (đặt cùng thư mục với file chương trình)
- Thay đổi giá trị Speed (tốc độ, tính bằng số âm tiết sẽ đọc trong 1 phút) để khảo sát sự điều khiển tốc độ đọc.
- Thay đổi giá trị Pitch (cao độ) để khảo sát sự điều khiển cao độ giọng nói.
Hình 4.20: Giao diện VnSpeech * Phát triển ứng dụng với thư viện lập trình
Toàn bộ thư viện lập trình chuyển văn bản thành tiếng nói cho tiếng Việt dựa trên tổng hợp formant - Vnspeech được đóng gói trong file vnspeech.dll (240KB). Để sử dụng, cần phải tích hợp nó cùng với ứng dụng theo quy cách ứng với từng ngôn ngữ lập trình cụ thể.
89
Để thử nghiệm, chỉ cần gọi duy nhất hàm VietTTS, hàm này sẽ chuyển đoạn văn bản mong muốn thành tín hiệu tiếng nói và tự động phát ra loa.
Mô tả: (theo cú pháp C/C++) int VietTTS(char*s)
- Đối số s (kiểu chuỗi ký tự): đoạn văn bản tiếng Việt.
- Giá trị trả về (số nguyên): thời gian (ms) để phát (play) hết đoạn tiếng nói đã tổng hợp.
Chú ý:
- Hàm VietTTS chỉ hiểu văn bản tiếng Việt theo bảng mã TCVN 5712 (font ABC) và các dấu ngắt, nghỉ. Do đó, cần phải xử lý văn bản để trở thành thuần Việt trước khi gọi hàm.
- Một đoạn văn bản dài nên chia thành nhiều đoạn (câu) để cung cấp cho hàm VietTTS.
- Hàm VietTTS được thực hiện trong một Thread riêng nên cần sử dụng Timer để đồng bộ khi cần đọc liên tục nhiều đoạn.
- Một số mã nguồn ví dụ về cách sử dụng thư viện vnspeech.dll với các môi trường lập trình như C++ Builder 6.0, Visual Basic 6.0, Delphi 7.0, Visual Foxpro 6.0.
* Hình thức cung cấp Vnspeech
Vnspeech được thiết kế thành một engine, có thể cung cấp ở các dạng: - Thư viện phần mềm lập trình dạng DLL, COM.
- Ứng dụng trên server
- Phần mềm ứng dụng độc lập
- Hợp tác phát triển các ứng dụng đặc thù - Đóng gói tương thích với SAPI
90
- Phát triển thành phần mềm nhúng (firmware) hay cứng hoá, tích hợp phần cứng theo yêu cầu (thiết bị tài nguyên hạn chế, máy chuyên dụng, đồ chơi, robot...)
* Khả năng ứng dụng của Vnspeech
Thư viện lập trình Vnspeech sẵn sàng để tích hợp vào lớp lớn các ứng dụng: - Hệ thống đáp ứng bằng tiếng nói
- Hệ thống giao tiếp người-máy bằng tiếng nói
- Thêm lựa chọn cung cấp thông báo bằng tiếng Việt cho các ứng dụng - Các ứng dụng hỗ trợ người tàn tật (khiếm thị)
- Các hệ thống telematics
- Các hệ thống thông điệp hợp nhất
- Các hệ thống khai thác thông tin qua điện thoại
- Các ứng dụng thông báo bằng tiếng nói với nội dung thay đổi như: các hệ thống xếp chỗ tự động trong các ngân hàng, phòng bán vé...
- Ứng dụng soát lỗi chính tả, đọc các thông tin trên màn hình giúp người dùng
- Các ứng dụng trong giáo dục
4.6.2. NHMTTS
Phiên bản mới nhất NHMTTS 4.0 cung cấp cho người dùng công cụ đọc văn bản (chuyển văn bản thành tiếng nói) đa ngôn ngữ và 2 giọng đọc nam/nữ tiếng Việt theo chuẩn SAPI5 với chất giọng khá tự nhiên. Đặc biệt phần mềm này còn cho phép khả năng đọc văn bản chứa đồng thời tiếng Việt và một ngôn ngữ khác bất kỳ (chẳng hạn: Việt-Anh, Việt-Hoa, … ). Ngoài ra phần mềm còn cho phép điều chỉnh tốc độ, tần số, cường độ của giọng đọc.
91
Hình 4.21 : Giao diện của NHMTTS
Với NHMTTS 4.0, người khiếm thị hoặc có thị lực kém có thể dễ dàng sử dụng kết hợp với các phần mềm hỗ trợ đọc màn hình như JAWS, NVDA để soạn thảo văn bản; duyệt web; đọc tin tức, sách truyện, văn thơ… NHMTTS cũng rất phù hợp cho người nước ngoài học tiếng Việt; thích hợp xây dựng các hệ thống tổng đài trả lời tự động…
Các tính năng:
- Tổng hợp tiếng nói tiếng Việt từ văn bản với các thông số ngữ điệu gồm: trường độ, cường độ và khoảng ngừng; được xác định bởi mô hình mạng nơ-ron.
- Hỗ trợ chuẩn giao tiếp SAPI5.
- Cho phép đọc văn bản chứa đồng thời tiếng Việt và một ngôn ngữ khác. Sử