Tổng hợp tiếng nói tiếng Việt sử dụng giải thuật PSOLA.

Một phần của tài liệu Tổng hợp tiếng nói trên T-Engine (Trang 63 - 71)

. P(S1| S1 ) P(S3| S1 ) P(S2| S3 ) P(S3| S2) = π3 a33 a33 a31 a11 a13 a32 a

4.3 Tổng hợp tiếng nói tiếng Việt sử dụng giải thuật PSOLA.

Như đã đề cập trong chương trước, người ta có thể tổng hợp tiếng nói theo nhiều phương pháp như mô phỏng hệ thống phát âm của con người, tổng hợp formant và tổng hợp ghép nối. Mỗi phương pháp đều có những ưu, nhược điểm riêng. Phương pháp mô phỏng hệ thống phát âm của con người cho chất lượng tốt, song rất khó mô phỏng một cách hoàn hảo bộ máy phát âm. Phương pháp tổng hợp bằng formant lại không cho chất lượng cao. Trong ba phương pháp này thì tổng hợp tiếng nói bằng ghép nối được sử dụng rộng rãi hơn cả.

PSOLA là giải thuật dùng cho phương pháp ghép nối. Trước hết tiếng nói được phân tích thành các tín hiệu thành phần, sau đó, khi cộng xếp chồng các thành phần này ta sẽ được tín hiệu tiếng nói tổng hợp. Phương pháp này thao tác trực tiếp với tín hiệu trên miền thời gian nên có chi phí tính toán thấp. Người ta kéo dãn thời gian trong tín hiệu tổng hợp bằng cách lặp lại các đoạn tín hiệu thành phần.

TD-PSOLA

Phương pháp PSOLA thực hiện ghép nối các thành phần cơ bản có thể thực hiện trên miền thời gian (Time Domain) hoặc miền tần số (Frequency Domain), tuy nhiên rõ ràng phương pháp TD-PSOLA có thời gian thực hiện nhanh hơn do chỉ tính toán với tín hiệu trên miền thời gian, đây là một trong những vấn đề rất quan trọng khi vài đặt hệ thống tổng hợp trên các hệ nhúng vì tài nguyên của các hệ thống này thường tương đối thấp so với các PC thông thường.

Phương pháp TD-PSOLA được thực hiện trên cơ sở ghép nối các đơn vị cơ bản của tín hiệu tiếng nói. Đối với tiếng nói tiếng Việt, chúng ta có thể xem mỗi một từ rời rạc được phát âm gồm có 2 phần cơ bản (hay còn gọi là các âm vị kép) là phần âm vị trước và âm vị sau. Ví dụ từ “vinh” có thể xem là sự ghép nối liên tiếp của 2 âm

vị kép là “vi” và “inh”. Một trong những vấn đề quan trọng trong tổng hợp tiếng Việt là xác định một cách chính xác các nguyên tắc phát âm này trong tiếng Việt. Dưới đây là một số âm vị kép đối với tiếng nói tiếng Việt. Âm vị trước được xác định nhờ dấu “_” đặt ở trước, những âm khác là âm vị sau, danh sách đầy đủ các âm vị trong tiếng Việt được liệt kê trong phụ lục.

_a: tôi đi an pơi _ba: Tôi đi ban pơi A_: tôi đi xa pơi _be: Tôi đi ben pơi Á_: tôi đi xá pơi _Bê: Tôi đi bên pơi À_: tôi đi xà pơi _Bi: Tôi đi bin pơi Ã_: tôi đi xã pơi _Bo: Tôi đi bon pơi Ả_: tôi đi xả pơi _Bô: Tôi đi bôn pơi Ạ_: tôi đi xạ pơi _Bơ: Tôi đi bơn pơi Ác_: Tôi đi xác pơi _Bu: Tôi đi bun pơi ạc_: Tôi đi xạc pơi _Bư: Tôi đi bưn pơi ách_: Tôi đi xách pơi _ca: Tôi đi can pơi ạch:Tôi đi xạch pơi _co: Tôi đi con pơi Ai_: Tôi đi xai pơi _cô: Tôi đi côn pơi ái_: Tôi đi xái pơi _cơ: tôi đi cơn pơi ài_: tôi đi xài pơi _cu: Tôi đi cun pơi Ãi_: tôi đi xãi pơi _cư: Tôi đi cưn pơi Ải_: tôi đi xải pơi _cha: Tôi đi chan pơi Ại_: tôi đi xại pơi _che: Tôi đi chen pơi Am_:Tôi đi xam pơi _chê: Tôi đi chên pơi ám_:tôi đi xám pơi _chi: Tôi đi chin pơi

Như vậy để có thể tổng hợp tiếng nói tiếng Việt thì việc trước tiên là cần phải xây dựng một CSDL các âm vị kép đầy đủ. Hình dưới đây minh họa cho việc thu và tách âm vị kép đối với từ chon.

Việc xác định chính xác ví trí phân cách các âm vị là một trong những yếu tố quan trong quyết định đến chất lượng của tiếng nói tổng hợp. Thông thường các điểm cắt âm vị này được xác định là điểm giữa của nguyên âm đầu tiên, trong ví dụ trên chúng ta có thể thấy tín hiệu của từ chon chia thành 3 phần rõ rệt: phần đầu ứng với phụ âm “_ch” phần giữa có dạng tuần hoàn chính là nguyên âm “_o_” còn phần cuối cùng là phụ âm “n_”, do đó ta chọn điểm cắt là chính giữa nguyên âm “_o_”. Để thuận lợi cho việc ghép nối điểm cắt được chọn sẽ là điểm cực tiểu của một chu kỳ tín hiệu.

Ghép nối các âm vị

Từ cơ sở dữ liệu các âm vị kép và bảng phiên âm, các từ trong tiếng việt được tổng hợp bằng cách ghép nối các âm vị kép. Để cho âm tổng hợp đạt chất lượng tốt thì điểm ghép phải đạt được sự cân bằng về cả năng lượng và tần số cơ bản F0.

Hình sau cho thấy một điểm ghép không đạt cân bằng về năng lượng và một điểm ghép có cân bằng năng lượng tốt

Hình 4.6 – Điểm ghép không cân bằng năng lượng

Hình 4.7 – Điểm ghép cân bằng năng lượng

Bên cạnh việc cân bằng năng lượng thì việc cân bằng tần số cơ bản F0 cũng là một vấn đề quan trọng và tương đối khó thực hiện. Hình sau cho thấy một ví dụ vê việc điểm ghép không cân bằng tần số, do 2 âm vị được tách từ 2 từ khác nhau nên có thể F0 của chúng không bằng nhau, trong ví dụ trên có thể thấy rõ tần số cơ bản F0 của âm vị trước lớn hơn âm vị sau.

Hình 4.8 – Điểm ghép không cân bằng tần số

Để thực hiện việc cân bằng năng lượng và tần số cơ bản thì các âm vị kép sẽ được chia thành các khung có độ rộng bằng một chu kỳ cơ bản của âm vị đó.

Hình 4.9 – Phân khung tín hiệu

Trên cơ sở các âm vị kép đã được phân khung, việc ghép nối sử dụng phương pháp cộng xếp chồng có sử dụng cửa sổ Hamming là một trong những phương pháp hiệu quả trong việc điều chỉnh tần số cơ bản của âm vị. Phương pháp này được thực hiện nhờ việc nhân các khung với hàm cửa sổ Hamming.

Hình 4.10 – Khung Hamming

Sau khi có các khung tín hiệu cơ bản việc tổng hợp được thực hiện nhờ việc xếp chồng các khung, lấy các đỉnh cực đại làm điểm mốc để điều chỉnh tần số cơ bản.

Hình 4.11 – Cộng xếp chồng khung và điều khiển tần số cơ bản

Như vậy với phương pháp phân khung và cộng xếp chồng như trên thì vấn đề cân bằng tần số cơ bản được giải quyết tương đối dễ dàng.

Việc cân bằng năng lượng của tín hiệu cũng được thực hiện nhờ sử dụng năng lượng của 2 khung ghép của các âm vị: khung cuối cùng và khung đầu tiên của âm vị trước và sau tương ứng. Năng lượng của khung được tính như sau:

1 2 2 0 ( ) (4.4) N n Sx n = =∑

Trong đó N là độ rộng của khung, x(n) chính là tín hiệu âm thanh. Hệ số năng lượng được tính dựa trên tỉ số năng lượng của 2 khung ghép: 1

2 (4.5) (4.5) S P S =

Trong đó S1 và S2 là năng lượng của âm vị trước và sau. Sử dụng tỉ số năng lượng P làm trọng số cho phép cộng xếp chồng đối với âm vị sau, thì năng lượng của 2 khung ghép nối sẽ cân bằng, mặt khác do 2 khung ghép là khung giữa của các

nguyên âm nên chúng là các khung ổn định, nhờ đó kết quả của việc ghép nối sẽ đạt được sự cân bằng tốt về năng lượng.

Biến thiên tần số các âm vị trong tiếng Việt

Trong tổng hợp tiếng Việt một trong những đặc điểm quan trọng là thanh điệu trong của từ: bằng, huyền, sắc, hỏi, ngã, nặng. Nhiều công trình nghiên cứu trước đây đã chỉ ra được quy luật biến thiên tần số của các thanh điệu này.

Biến thiên tần số cơ bản của thanh bằng: tần số cơ bản của các từ có thanh bằng hầu như không biến đổi, nên có thể xem là tần số cơ bản giữ nguyên.

Hình 4.12 – Biến thiên tần số cơ bản của thanh bằng

Biến thiên tần số cơ bản của thanh huyền: tần số cơ bản giảm dần.

Biến thiên tần số cơ bản của thanh sắc: tần số cơ bản tăng dần.

Hình 4.14 – Biến thiên tần số của thanh sắc

Biến thiên tần số cơ bản của thanh hỏi:

Hình 4.14 – Biến thiên tần số của thanh hỏi

Biến thiên tần số cơ bản của thanh ngã:

Hình 4.15 – Biến thiên tần số của thanh ngã

Biến thiên tần số cơ bản của thanh nặng:

Như vậy để tổng hợp thanh điệu trong tiếng Việt có thể sử dụng kỹ thuật biến đổi tần số cơ bản để thu được các thanh điệu từ các âm vị kép của thanh bằng, kỹ thuật này có một ưu điểm lớn là kích thước dữ liệu nhỏ do không cần thu trước các âm vị có dấu, tuy nhiên đối với các thanh như thanh ngã thì kỹ thuật này cho kết quả không thực sự tốt do ngoài vấn đề về tần số cơ bản, các thanh điệu còn được tạo ra bởi các biến đổi về biên độ. Do đó để nâng cao chất lượng của bộ tổng hợp tiếng Việt, trong đề tài này tác giả quyết định sử dụng phương pháp tổng hợp thanh điệu thu trước. Như vậy thì ngoài việc cân bằng tần số cơ bản thì tần số cơ bản của âm vị trước cần được biến đổi để phù hợp với quy luật biến thiên tần số cơ bản của âm vị sau. Với phương pháp này, dung lượng của dữ liệu diphone sẽ tăng gần gấp 2 lần so với cách thu các âm không dấu rồi sử dụng kỹ thuật biến đổi F0 để tổng hợp dấu, tuy nhiên qua các hình 4.12 đến 4.16 chúng ta có thể thấy việc tổng hợp dấu không đơn thuần là biến thiên F0 mà còn có biến thiên biên độ, đặc biệt là âm ngã, và âm hỏi, do đó nếu sử dụng các diphone không dấu trong tổng hợp thì việc tổng hợp các âm này với chất lượng cao là rất khó khăn, điều này đã được minh chứng qua kết quả của các đề tài tổng hợp tiếng việt được thực hiện trước đó. Để khắc phục nhược điểm này chúng ta sẽ sử dụng các diphone có dấu để tổng hợp tiếng Việt, nhưng cũng cần biết rằng phương pháp này có những khó khăn nhất định:

• Khi thu âm các diphone có dấu, sẽ rất khó khăn cho người đọc để có thể giữ tần số cơ bản (tông) không thay đổi quá nhiều giữa các từ, do đó danh sách thu âm cần được lựa chọn các câu một cách cẩn thận

 Khi thu các âm vị đầu nên sử dụng từ đi kèm các vần như: an, am, en, on,…(xn hoặc xm, trong đó x là một nguyên âm đi kèm âm vị đầu).

 Khi thu các âm vị sau nên sử dụng từ bắt đầu bởi phụ âm xát như: xan, xang, xét,…như vậy quá trình phát âm phụ âm xát sẽ không ảnh hưởng nhiều đến âm vị sau.

• Vì các âm vị được thu có sẵn dấu nên sẽ xảy ra tình trạng lệch tần số cơ bản, do đó phải điều chỉnh tần số cơ bản khi ghép như đã đề cập trong kỹ thuật xếp chồng khung tín hiệu ở trên.

Một phần của tài liệu Tổng hợp tiếng nói trên T-Engine (Trang 63 - 71)

Tải bản đầy đủ (DOC)

(116 trang)
w