Câu bao gồm nhiều từ, sau khi đã tách được câu, tiếp theo sẽ tách các từ. Giải thuật tách một câu thành các từ như sau:
Bắt đầu Nếu hết văn bản Kết thúc Đ S Đọc ký tự Là dấu kết thúc câu Lưu ký tự Xử lý câu Đ S
Hình 4.6: Lưu đồ thuật toán xác định từ trong câu 4.4.2. Xác định dấu (thanh điệu) của từ và tách từ thành diphone
Phần trên đã phân tích văn bản thành các từ riêng biệt. Bước tiếp theo là xác định dấu (thanh điệu) của mỗi từ. Sau khi xác định dấu sẽ lưu lại để bước tiếp theo tiến hành thay đổi tần số, đồng thời bỏ dấu để chuyển thành từ không dấu.
4.4.2.1. Xác định dấu (thanh điệu) của từ
Quá trình xác định dấu của mỗi từ được mô tả trong sơ đồ khối sau: Bắt đầu Nếu hết câu Kết thúc Đ S Đọc ký tự Là ký tự hết từ Lưu ký tự Xử lý từ Đ S
Hình 4.7: Lưu đồ thuật toán xác định dấu của từ
4.4.2.2. Tách từ thành hai diphone
Sau khi xác định dấu của từ và bỏ dấu, lúc này từ không còn mang dấu nữa. Ta tiến hành tách từ thành hai diphone theo quy tắc: Duyệt lần lượt từng ký tự, tìm đến vị trí nguyên âm đầu tiên trong từ. Chuỗi ký tự bên trái nguyên âm (bao gồm cả nguyên âm) là diphone đầu, chuỗi ký tự bên phải nguyên âm (bao gồm cả nguyên âm) là diphone cuối. Sơ đồ khối như sau:
Bắt đầu Nếu hết từ Kết thúc Đọc ký tự Đ S Nếu có dấu Xác định và lưu dấu Bỏ dấu Đ S
Hình 4.8: Lưu đồ thuật toán tách từ thành 2 diphone
4.5. GHÉP NỐI CÁC DIPHONE VÀ THAY ĐỔI TẦN SỐ CƠ BẢN
Trong phần trên văn bản cần tổng hợp đã được phân tích thành các từ đơn. Với mỗi từ đã xác địch được hai diphone đầu và cuối. Tiếp theo là việc ghép nối các diphone này và biến đổi tần số tương ứng với dấu để 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
( )
s t% : 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.
Bắt đầu Nếu là nguyên âm Kết thúc Đọc ký tự Đ S Xác định diphone đầu Xác định diphone cuối
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),
( )
s t% như s n%( ).
4.5.1.Ghép nối các diphone tạo thành các từ không dấu.
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ừ.
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 đồ á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.
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:
)) 2 cos( 1 ( 2 ) ( ) ( = + Π −Π T n n s n w
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 đó.
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 s n − s n = =∑ % ( )
s n% là tín hiệu mới sẽ được tạo ra. T là chu kỳ của nó.
Hình 4.9: Cộng xếp chồng các tín hiệu thành phần
Hình 4.10: Lưu đồ ghép nối 2 diphone để tạo thành từ. Hình 4.11: Ghép nối hai diphone Bắt đầu Kết thúc Xác định các tín hiệu thành phần từ 2 diphone Xác định các điểm mốc trên tín hiệu cần tạo Đọc thông tin về 2 diphone Định vị các tín hiệu thành phần vào các điểm mốc Cộng xếp chồng để tạo thành tín hiệu cần tổng hợp
Hình 4.12: Vị trí lấy cửa sổ
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
• Ghép nối các diphone đặc biệt để tạo nên từ có dấu
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.13: 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:
t1 t2 t3 0 F1 F2 Thời gian Tần số
Từ 0 đến t1 tần số biến đổi từ 0 đế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 F3.
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 Fo để 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)
- Thanh bằng: Tần số cơ bản không đổi
Hình 4.14: Tín hiệu âm a và đường biểu diễn Fo của thanh bằng
- Dấu huyền: Tần số cơ bản giảm dần
Hình 4.15: Tín hiệu âm à và đường biểu diễn Fo của thanh huyền
Hình 4.16: Tín hiệu âm á và đường biểu diễn Fo của thanh sắc
- Dấu hỏi:
Hình 4.17: Tín hiệu âm ả và đường biểu diễn Fo của thanh hỏi
- Dấu nặng:
- Dấu ngã:
Hình 4.19: Tín hiệu âm ã và đường biểu diễn Fo của thanh ngã
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.
Hình 4.20: Tính chu kỳ cơ bản F0 tại điểm i
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.21: 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ừ.
tj i tj+1 0 F0i F0j+1 Thời gian Tần số F0j Bắt đầu Kết thúc Đọc thông tin về 2 diphone Diphone đặc biệt Nối 2 diphone để tạo thành từ Đ
4.6. ỨNG DỤNG TỔNG HỢP TIẾNG VIỆT
Ứng dụng xây dựng trong luận văn này nhằm mục đích minh hoạ các cơ sở lý thuyết đã trình bày ở những phần trên. Đây được xem như một công cụ thí nghiệm giúp người xử dụng thấy được một cách trực quan quá trình xây dựng và tổng hợp tiếng nói. Đây là một công cụ cho phép khảo sát các tham số cơ bản ảnh hưởng đến chất lượng tiếng nói tổng hợp theo phương pháp TD-PSOLA. Các tham số cơ bản mà ứng dụng cho phép khảo sát bao gồm:
• Tần số cơ bản Fo của tín hiệu: Ứng dụng cho phép thay đổi tần số cơ bản Fo của bất kỳ đoạn tín hiệu nào trên tín hiệu. Dạng tín hiệu sau khi thay đổi tần số có thể được hiển thị trên màn hình hoặc phát ra loa.
• Độ dài của tín hiệu: Ứng dụng cho phép điều chỉnh độ dài của từ tổng hợp. • Năng lượng: Ứng dụng cho phép tăng hoặc giảm năng lượng của bất kỳ
đoạn tín hiệu nào trên tín hiệu. Cho phép thay đổi đường bao của tín hiệu thành một dạng bất kỳ. Cho phép so sánh tín hiệu ban đầu với tín hiệu đã thay đổi năng lượng.
Ngoài chức năng khảo sát, thí nghiệm trên thì đây còn là một công cụ hoàn chỉnh cho phép tổng hợp tiếng nói với các chức năng sau:
• Cho phép xây dựng và quản lý cơ sở dữ liệu diphone từ các file âm thanh *.WAV. Xác định các điểm mốc, điểm phân cách vô thanh hữu thanh cho mỗi diphone.
• Cho phép đọc một đoạn văn bản bất kỳ ra loa. Sau đây là một số mô tả các chức năng của chương trình.
4.6.1. Giao diện chính
Cửa sổ chính của chương trình gồm các thành phần sau:
• Thanh Menu và thanh Toolbar: Với các chức năng Tạo mới, Mở, Ghi một file tổng hợp từ. Các chức năng khác như Zoom in, Zoom out tín hiệu, chức năng Play tín hiệu chưa cân bằng và Play tín hiệu đã cân bằng.
• Khung 1: Hiển thị tín hiệu tiếng nói tổng hợp chưa qua xử lý cân bằng năng lượng trên miền thời gian
• Khung 2: Hiển thị tín hiệu tiếng nói tổng hợp đã qua xử lý cân bằng năng lượng trên miền thời gian
• Khung 3: Hiển thị đường biểu diễn tần số cơ bản Fo của tín hiệu. Chương trình cho phép dịch chuyển đường biểu diễn này để thay đổi tần số cơ bản Fo của tín hiệu.
• Khung bên phải: Là công cụ cho phép thay đổi đường bao của tín hiệu, đây chính là công cụ cho phép thay đổi và cân bằng năng lượng cho tín hiệu. • Tab Test: Cho phép tổng hợp các từ bằng việc lựa chọn từng cặp diphone
tương ứng. Sau khi tổng hợp trong tab này, dạng tín hiệu ra sẽ được hiển thị trong khung 1 và 2.
• Tab Database: Tab này cho phép tạo và quản lý cơ sở dữ liệu diphone. Cho phép chỉnh sửa, chọn các điển đánh dấu ứng với mỗi diphone.
• Tab Reading: Đây là công cụ hoàn chỉnh cho phép đọc một đoạn văn bản bất kỳ ra loa. Hình 4.22: Giao diện chính của chương trình Thanh Menu Thanh Toolbar Tín hiệu chưa cân bằng Tín hiệu sau khi cân bằng Công cụ thay đổi, cân bằng năng lượng Công cụ thay đổi tần số cơ bản Fo
4.6.2. Minh hoạ một số chức năng chính của chương trình
Ví dụ 1: Tổng hợp từ xin chào
• Bước 1: Trên Tab1 sử dụng chức năng New Word để tạo 2 từ. Ở từ thứ nhất chọn First Diphone là -xi, Second Diphone là in-. Ở từ thứ hai chọn
First Diphone là -cha, Second Diphone là ao-.
Hình 4.23: Tạo hai từxin và chao
• Bước 2: Ấn Refresh trên thanh Toolbar để hiển thị tín hiệu tổng hợp lên khung 1 và 2. Lúc này tín hiệu ở khung 1 và 2 là giống nhau đều chưa qua xử lý cân bằng năng lượng. Ở khung 3 là đường biểu diễn tần số cơ bản Fo của tín hiệu, có 2 đường biểu diễn Fo tương ứng với 2 từ xin và chao, cả 2 đường hiện giờ là nằm ngang có nghĩa là cả 2 từ đang mang thanh bằng. Ta có thể dùng chức năng Play 1 và Play 2 để nghe tín hiệu tổng hợp.
Hình 4.24: Biểu diễn tín hiệu 2 từxin và chao
• Bước 3: từ xin không mang thanh điệu do đó đường Fo giữ nguyên, còn từ chào mang thanh huyền do đó ta phải thay đổi đường Fo.
• Bước 4: Xử lý cân bằng năng lượng của tín hiệu trên trên khung 2. Ta sẽ dùng công cụ ở khung bên phải để thay đổi đường bao của tín hiệu
Hình 4.26: Xử dụng công cụ biến đổi cân bằng năng lượng
Ví dụ 2: Tạo một diphone trong cơ sở dữ liệu
Để tạo một diphone mới trong cơ sở dữ liệu trước tiên ta phải có file âm thanh
wav chứa diphone đó. Trong tab Database ta chọn New Dip rồi đặt tên cho diphone. Tiếp theo chọn Open Wave để mở file wave chứa diphone. Sau đó dùng công cụ bôi đen, cắt dán để giữ lại mình phần tín hiệu của diphone. Tiếp theo xác định 2 điểm đánh dấu đầu tiên của diphone rồi chọn Detect chương trình sẽ tự