Chuyển đến nội dung chính

Convolution Augmented Transformer (Conformer) trong ASR và TTS

Conformer Chú ý: Mọi người nên tìm hiểu kỹ về Transformer và Multi-head Self Attention trước khi đọc bài này. Câu hỏi cho người đọc: Có cần thiết áp dụng Macron-style và Relative Position Encoding cho Conformer trong các bài toán xử lý tiếng nói hay không? ASR Conformer Trước khi đi vào phần chính, chúng ta sẽ lướt qua xem hướng tiếp cận đang cho hiệu quả cao nhất trong nhận dạng tiếng nói, RNN-Transducer và những biến thể cải tiến của nó. Mô hình chung của một Neural RNN-Transducer được biểu diễn trong hình 1. Hình 1: Neural Transducer [1] Trong đó, Predictor và Encoder có thể được xây dựng bởi nhiều kiến trúc khác nhau như RNNs, LSTM hay Transformer để đưa ra các biểu diễn trung gian của các chuỗi đầu vào. Với Predictor là biểu diễn của chuỗi văn bản (label), và Encoder là biểu diễn của chuỗi audio-frame. Cùng với Predictor và Encoder, RNN-T loss được sử dụng để cực đại hóa tổng xác suất của mọi alignment giữa audio đầu vào và văn bản đầu ra, từ đó giúp cho mô hình học được alignme

Giới thiệu về tổng hợp tiếng nói


Đây là bài viết đầu tiên của tôi trong chuỗi bài viết về tổng hợp tiếng nói. Trong chuỗi bài này tôi sẽ đi từ đơn giản đến phức tạp các vấn đề liên quan đến tổng hợp tiếng nói.

Tổng hợp tiếng nói và ứng dụng

Tổng hợp tiếng nói (TTS: Text to Speech) về bản chất là quá trình tạo tín hiệu tiếng nói từ văn bản. Một hệ thống tổng hợp tiếng nói có thể được ứng dụng trong rất nhiều bài toán khác nhau có thể lấy ví dụ như báo nói Dân trí, một sản phẩm mà tôi đã tham gia phát triển, ngoài ra các ứng dụng của trí tuệ nhân tạo như trợ lý ảo, tổng đài tự động,… đều cần mô đun đầu ra là hệ thống tổng hợp tiếng nói. Hiện nay có rất nhiều sản phẩm thuộc các chủng loại khác nhau được ứng dụng vào các mục đích khác nhau, nhưng lớn mạnh nhất phải kể đến các sản phẩm được phân phối trên Google Cloud, Amazon Web Services, Microsoft Azure. Những cloud này cho phép các bạn tích hợp hệ thống TTS của họ vào các sản phẩm cá nhân của mình. Ở Việt Nam và dành cho tiếng Việt cũng có các sản phẩm nổi bật như sản phẩm của Viettel, FPT hay Vbee.

Lịch sử phát triển

Tổng hợp tiếng nói về bản chất là quá trình tạo tín hiệu tiếng nói từ văn bản. Trong nhiều năm trở lại đây, người ta cố gắng tạo ra một hệ thống tổng hợp sao cho có độ tự nhiên cao nhất (Naturaless) và đọc dễ hiểu nhất (Intelligibility).
Một trong những nghiên cứu đầu tiên mà ta phải nói đến chính là mô hình mô phỏng hệ thống cấu âm của con người do nhà khoa học người đan mạch Christian Kratzentein phát triển, hệ thống đơn giản này có thể phát ra được âm thanh của một số nguyên âm dài như (/a/, /e/, /i/, /o/, và /u/), ngoài ra nhiều phiên bản cải tiến cũng được phát triển trong thời gian sau đó. Tuy nhiên trải qua một quá trình dài phát triển, ngay cả tới tận thế kỷ 19 các nghiên cứu tổng hợp tiếng nói vẫn còn ở mức đơn giản.
Tới đầu thế kỷ 20, khi mà có sự lớn mạnh của các hệ thống điện tử, thì các hệ thống tổng hợp có chất lượng mới được phát triển. Năm 1937, The Bell Telephone Laboratory đã giới thiệu VODER (Voice Operating Demonstator), đây có thể nói là hệ thống điện tử đầu tiên của con người có thể tổng hợp tiếng nói bằng cách phân tích các đặc trưng âm học.
Ngoài các hệ thống tổng hợp tiếng anh thì tới năm 1975 MUSA được giới thiệu với khả năng tổng hợp tiếng ấn độ. Nhưng vẫn chưa có gì gọi là tổng hợp nhiều ngôn ngữ cả, phải tới khi Bell labs công bố nghiên cứu của họ về việc tổng hợp đa ngôn ngữ dựa trên các hướng tiếp cận “Xử lý ngôn ngữ tự nhiên” năm 1997 thì lĩnh vực này mới bắt đầu được khai thác. Nhìn chung, đến thời điểm này chất lượng của các hệ thống tổng hợp vẫn còn rất tệ, phải đến đầu những năm 2000 chất lượng và độ tự nhiên mới có sự nhảy bậc khi áp dụng tổng hợp thống kê dựa trên các mô hình Markov ẩn. Gần đây những nghiên cứu về mạng nơ ron học sâu được dẫn đầu bởi Google đã cho thấy những bước tiến nổi bật khi áp dụng vào tổng hợp tiếng nói, chất lượng đã đạt đến độ rất cao và khó có thể phân biệt là người hay máy nói.

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

Hiện nay có hai hướng tiếp cận chính về tổng hợp tiếng nói: Hướng tiếp cận cổ điển, một hệ thống tổng hợp tiếng nói sẽ được phân ra làm hai phần chính gồm có phần xử lý ngôn ngữ tự nhiên và phần xử lý tổng hợp tiếng nói Hình 1. Hướng đi thứ hai là tổng hợp End to End, tức là toàn bộ quá trình từ huấn luyện hay tổng hợp chỉ cần chuẩn bị dữ liệu gồm có các tệp âm thanh và văn bản tương ứng, ngoài ra không cần nhiều kiến thức về ngôn ngữ học để xây dựng hệ thống.
Hình 1: Kiến trúc chung của các hệ thống tổng hợp tiếng nói theo hướng cổ điển.

Tổng hợp mô phỏng hệ thống phát âm

Tổng hợp mô phỏng hệ thống phát âm là các kỹ tổng hợp giọng nói dựa trên mô hình máy tính để mô phỏng các hệ thống phát âm của con người và mô phỏng quá trình tạo ra tiếng nói trên hệ thống đó. Tổng hợp dựa trên mô phỏng hệ thống phát âm hầu hết chỉ dành cho nghiên cứu. Lý do là vì mục tiêu của phương pháp này là mô phỏng quá trình tạo tiếng nói sao cho càng giống cơ chế của con người càng tốt, nên về lý thuyết có thể xem đây là phương pháp cơ bản nhất, nhưng cũng vì vậy mà phương pháp này khó thực hiện và chất lượng đầu ra thường không cao. Thời điểm hiện nay phương pháp này khó có thể được ứng dụng tại Việt Nam.

Tổng hợp tần số Formant

Tổng hợp tần số Formant là tổng hợp không sử dụng mẫu giọng thật nào khi chạy, thay vào đó tín hiệu được tạo ra bởi một mô hình tuyến âm. Mô hình này mô phỏng hiện tượng cộng hưởng của các cơ quan phát âm bằng một tập hợp các bộ lọc. Các bộ lọc này được gọi là các bộ lọc cộng hưởng Formant, chúng có thể được kết hợp song song hoặc nối tiếp hoặc cả hai. Hình hai biểu diễn mô hình tổng hợp Formant nối tiếp, trong đó đầu ra của bộ cộng hưởng này là đầu vào của bộ cộng hưởng kia:
Hình 2: Hệ thống tổng hợp Formant nối tiếp.
Nhược điểm của phương pháp này là tạo ra giọng nói không tự nhiên, nghe rất "máy". Ưu điểm nhỏ gọn và chạy nhanh.

Tổng hợp ghép nối

Tổng hợp ghép nối là phương pháp dựa trên việc ghép nối các đoạn tín hiệu tiếng nói đã được ghi âm từ trước, xem mô tả cách hoạt động trên Hình 3. Đơn vị âm phổ biến là âm vị âm tiết, bán âm tiết, âm đôi, âm ba, từ cụm tư. Do đặc tính tự nhiên của tiếng nói được ghi âm và lưu trữ trong các đơn vị âm, nên tổng hợp ghép nối là phương pháp có khả năng tổng hợp tiếng nói với mức độ dễ hiểu và tự nhiên cao. Tuy nhiên, do giọng nói tự nhiên được ghi âm thay đổi từ lần phát âm này sang lần phát âm khác, và công nghệ tự động hóa việc ghép nối các đoạn của tín hiệu thỉnh thoảng tạo những tiếng cọ sát không tự nhiên ở đoạn ghép.
Hình 3: Quá trình tổng hợp ghép nối

Có ba kiểu tổng hợp ghép nối chính:
  • Tổng hợp chọn đơn vị (Unit selection)
  • Tổng hợp âm kép (Diphone)
  • Tổng hợp chuyên biệt (Domain-specific)
Tổng hợp chọn đơn vị dùng một cơ sở dữ liệu lớn các giọng nói ghi âm. Trong đó, mỗi câu được tách thành các đơn vị khác nhau như: các tiếng đơn lẻ, âm tiết, từ, nhóm từ hoặc câu văn. Một bảng tra các đơn vị được lập ra dựa trên các phần đã táchvà các thông số âm học như tần số cơ bản, thời lượng, vị trí của âm tiết và các tiếng gần nó. Khi chạy các câu nói được tạo ra bằng cách xác định chuỗi đơn vị phù hợp nhất từ cơ sở dữ liệu. Quá trình này được gọi là chọn đơn vị và thường cần dùng đến cây quyết định được thực hiện. Thực tế, các hệ thống chọn đơn vị có thể tạo ra được giọng nói rất giống với người thật, tuy nhiên để đạt độ tự nhiên cao thường cần một cơ sở dữ liệu lớn chứa các đơn vị để lựa chọn.
Tổng hợp âm kép là dùng một cơ sở dữ liệu chứa tất cả các âm kép trong ngôn ngữ đang xét. Số lượng âm kép phụ thuộc vào đặc tính ghép âm học của ngôn ngữ. Trong tổng hợp âm kép chỉ có một mẫu của âm kép được chứa trong cơ sở dữ liệu, khi chạy thì lời văn được chồng lên các đơn vị này bằng kỹ thuật xử lý tín hiệu số nhờ mã tuyên đoán tuyến tính hay PSOLA. Chất lượng âm thanh tổng hợp theo cách này thường không cao bằng phương pháp chọn đơn vị nhưng tự nhiên hơn cộng hưởng tần số và ưu điểm của nó là có kích thước dữ liệu nhỏ.
Tổng hợp chuyên biệt (Domain-specific) là phương pháp ghép nối từ các đoạn văn bản đã được ghi âm để tạo ra lời nói. Phương pháp này thường được dùng cho các ứng dụng có văn bản chuyên biệt, cho một chuyên nghành, sử dụng từ vựng hạn chế như các thông báo chuyến bay hay dự báo thời tiết. Công nghệ này rất đơn giản và đã được thương mại hóa từ lâu. Mức độ tự nhiên của hệ thống này có thể rất cao vì số lượng các câu nói không nhiều và khớp với lời văn, âm điệu của giọng nói ghi âm. Tuy nhiên hệ thống kiểu này bị hạn chế bởi cơ sở dữ liệu chuyên biệt không áp dụng được cho miền dữ liệu mở.

Tổng hợp dùng tham số thống kê

Tiếp theo đây chúng ta sẽ xem xét về phương pháp tổng hợp tiếng nói đang được sử dụng rộng rãi, đó là tổng hợp dựa trên tham số thống kê. Trước đây tổng hợp thống kê thường dựa trên các mô hình Markov ẩn (HMMs), ngày nay mô hình này được thay thế bằng các mạng nơ ron học sâu để ước lượng các tham số đặc trưng âm học từ đầu vào là tham số đặc trưng ngôn ngữ học.
Hình 4: Tổng hợp tham số thống kê
Hình 4 mô tả kiến trúc phổ thông của một hệ thống tổng hợp tham số thống kê. Trong đó văn bản đầu vào sẽ được trích chọn thành các đặc trưng ngôn ngữ học bởi bộ Trích chọn đặc trưng ngôn ngữ (Linguistic Features Extraction). Sau đó các đặc trưng ngôn ngữ này đi qua bộ Parameter Generation và bộ này sẽ ước lượng được đặc trưng âm học ở đầu ra. Cuối cùng Vocoder tổng hợp tín hiệu tiếng nói từ những đặc trưng âm học này,Ngoài việc sử dụng riêng rẽ các phương pháp tổng hợp, thì trên thế giới cũng có những nghiên cứu về tổng hợp lai ghép ví dụ như lai ghép giữa tổng hợp thống kê và tổng hợp ghép nối để tận dụng những hưu điểm của hai phương pháp này.

Tổng hợp End to End

Tổng hợp End to end là phương pháp mới được phát triển trong những năm gần đây. Mục tiêu của phương pháp này là tạo ra hệ thống tổng hợp có chất lượng cao nhất mà không cần dùng đến các kiến thức chuyên gia dựa trên các mạng nơ ron học sâu. Một kiến trúc nổi bật của phương pháp này có thể kể đến Tacotron2 của Google hay FastSpeech của Microsoft. Kiến trúc chung hay được sử dụng của một hệ thống End to End gồm có hai phần chính là: Phần tạo Mel spectrogram từ chuỗi ký tự đầu vào và phần chuyển hóa Mel spectrogram thành tín hiệu tiếng nói. Hình 5 mô tả kiến trúc một hệ thống tổng hợp End to End, trong đó phần tạo Mel spectrogram gồm hai mô đun là Embedder để chuyển hóa chuỗi ký tự thành chuỗi các véc tơ biểu diễn, sau đó mô đun Sequence to Sequence sẽ ước lượng Mel spectrogram từ chuỗi véc tơ này. Cuối cùng từ Mel spectrogram được chuyển hóa thành tín hiệu tiếng nói nhờ Neural Vocoder.
Hình 5: Tổng hợp End to End

Nhận xét

  1. Phần cây quyết định ở phương pháp tổng hợp ghép nối nó để làm gì dạ anh, em chưa hiểu lắm.

    Trả lờiXóa
    Trả lời
    1. Như lý thuyết gốc 1 âm vị được mô hình hóa bởi 1 mô hình HMM. Tuy nhiên âm vị đó lại xuất hiện ở nhiều văn bản khác nhau, context khác nhau, do đó thay vì một mô hình HMM, thì tùy theo context khác nhau sẽ dùng nhiều mô hình HMM khác nhau để mô hình hóa âm vị. Do đó dùng cây quyết định là để phân cụm các mô hình HMM này theo context.

      Xóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

Attention Mechanism

Trước khi đi sâu tìm hiểu về Attention ta sẽ xem xét một chút về mô hình S equence to S equence và lý do vì sao attention lại được áp dụng cho mô hình này. Tôi có đọc nhiều bài viết trên mạng và thấy có nhiều người cho rằng Sequence to Sequence model là một trường hợp đặc biệt của Auto-Encoder, hay là một mô hình học sâu, tuy nhiên đây là một nhầm lẫn tai hại về khái niệm. Thực tế việc sử dụng Auto-Encoder chỉ là một trong những giải pháp giải quyết các vấn đề về Sequence to Sequence, tuy nhiên thì đây là giải pháp được dùng phổ biến và hiệu quả nhất hiện nay, do đó trong bài viết này chúng ta ngầm hiểu Sequence to Sequence model cũng chính là Auto-Encoder model. Sequence to Sequence Models Sequence to Sequence models là một lớp các mô hình được đề xuất để giải quyết các lớp bài toán liên quan đến chuỗi như: Dịch máy, nhận dạng tiếng nói, tổng hợp tiếng nói,… Dịch Máy (Machine Translation): Là hệ thống tự động dịch văn bản từ ngôn ngữ nguồn sang ngôn ngữ đích. Hình 1: Ví dụ về dịch máy

Tổng hợp tiếng nói sử dụng mô hình Markov ẩn

Trong hai mươi năm trở lại đây, tổng hợp tiếng nói dựa trên mô hình Markov ẩn là một trong những hướng tiếp cận được nghiên cứu rộng rãi nhất cho đến khi các mô hình dựa trên mạng nơ ron học sâu xuất hiện. Trước khi đến với các mô hình học sâu, chúng ta cùng xem qua mô hình đã làm mưa làm gió mấy chục năm qua. Vậy mô hình Markov ẩn là gì? Hình 1: Mô hình Markov ẩn với ba trạng thái Mô hình Markov ẩn (HMM: Hidden Markov Model) là một mô hình máy trạng thái, mô hình này cho phép chúng ta xem xét đến hai thành phần là sự kiện quan sát được và các sự kiện ẩn. Ví dụ trong nhận dạng tiếng nói thì sự kiện quan sát được là các đặc trưng âm học của tiếng nói, còn sự kiện ẩn là các từ.  Một mô hình markov ẩn như biểu diễn trên hình 1 thường gồm có các thành phần chính sau:  Q = q1,q2,,,qN: Q là tập của N trạng thái A = a11,a12,,,,ann: A là ma trận chuyển trạng thái với aij là xác xuất chuyển từ trạng thái i sang trạng thái j, và ta có  O = o1,o2,,,,oT: O là một chuỗi T các qua

Convolution Augmented Transformer (Conformer) trong ASR và TTS

Conformer Chú ý: Mọi người nên tìm hiểu kỹ về Transformer và Multi-head Self Attention trước khi đọc bài này. Câu hỏi cho người đọc: Có cần thiết áp dụng Macron-style và Relative Position Encoding cho Conformer trong các bài toán xử lý tiếng nói hay không? ASR Conformer Trước khi đi vào phần chính, chúng ta sẽ lướt qua xem hướng tiếp cận đang cho hiệu quả cao nhất trong nhận dạng tiếng nói, RNN-Transducer và những biến thể cải tiến của nó. Mô hình chung của một Neural RNN-Transducer được biểu diễn trong hình 1. Hình 1: Neural Transducer [1] Trong đó, Predictor và Encoder có thể được xây dựng bởi nhiều kiến trúc khác nhau như RNNs, LSTM hay Transformer để đưa ra các biểu diễn trung gian của các chuỗi đầu vào. Với Predictor là biểu diễn của chuỗi văn bản (label), và Encoder là biểu diễn của chuỗi audio-frame. Cùng với Predictor và Encoder, RNN-T loss được sử dụng để cực đại hóa tổng xác suất của mọi alignment giữa audio đầu vào và văn bản đầu ra, từ đó giúp cho mô hình học được alignme