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

Mel Frequency Cepstral Coefficients

Trong bài viết về Cepstral Analysis tôi đã trình bày về các phép phân tích tín hiệu tiếng nói như biến đổi Fourier hay biến đổi sang miền cepstral. Và cũng lý giải tại sao việc biến đổi sang miền cepstral lại giúp ích cho việc trích chọn các đặc trưng của tín hiệu tiếng nói. Tuy nhiên, như vậy là chưa đủ. Để có thể thực sự áp dụng vào các bài toán thực tế như nhận dạng tiếng nói hay tổng hợp tiếng nói, ta cần phải tham số hóa các đặc trưng của tín hiệu tiếng nói. Và MFCC (Mel-frequency cepstral coefficients) là phương pháp được sử dụng phổ biến nhất, cũng như cho kết quả tốt nhất trong hầu hết các trường hợp. Bài viết này tôi sẽ đi sâu về việc làm sao để trích chọn ra đặc trưng của tín hiệu tiếng nói dựa trên phương pháp MFCC.

Vậy Mel là gì? Tại sao lại chọn Mel?

Thông thường khi phân tích một tín hiệu bất kỳ, người ta hay sử dụng biến đổi Fourier để biểu diễn tín hiệu trong miền phổ. Tuy nhiên, tai nghe con người lại không có sự nhạy cảm như nhau với mọi dải tần số, nó cảm nhận kém hơn ở những tần số cao hơn 1000hz. Do đó việc mô hình hóa tính chất này của tai người làm tăng khả năng nhận dạng của hệ thống. Một trong những cách phổ biến nhất là sử dụng thang đo mel, đây cũng là thang đo nhận thức về cao độ (pitch). Mỗi mel là một đơn vị của cao độ được xác định sao cho với các đoạn tín hiệu tiếng nói tương đương về mặt cao độ (những đường biểu diễn pitch của chúng giống nhau), thì cũng được phân tách bằng số lượng đơn vị mel như nhau [1]. Tần số mel có thể được tính từ tần số thông thường bởi công thức sau:
Công thức 1
Mối quan hệ giữa tần số mel và tần số bình thường là tuyến tính khi f<=1000hz và logarithmic khi f>1000hz. Trong quá trình trích chọn đặc trưng MFCC, các hệ số mel-cepstral được tính toán bằng cách sử dụng các bộ lọc tam giác để thu thập các thông tin ở các dải tần số khác nhau.

Phương pháp trích chọn đặc trưng MFCC

Phương pháp trích chọn đặc trưng MFCC dựa trên việc chuyển đổi dữ liệu âm thanh đầu vào từ miền phổ sang thang đo tần số mel, từ đó trích chọn ra các hệ số cepstral tương ứng. Quá trình trích chọn đặc trưng MFCC gồm bẩy bước được mô tả trong hình 1:
Hình 1: Quá trình trích chọn đặc trưng MFCC

Pre-emphasis

Do cấu trúc đặc biệt của môi trường thanh quản nên mức năng lượng của các âm hữu thanh ở tần số cao suy giảm hơn so với tần số thấp, mà ở tần số cao vẫn có nhiều thông tin về formant có giá trị cho mô hình âm học (Acoustic model). Do đó, cần thiết phải nâng mức năng lượng của tín hiệu ở tần số cao để khai thác thêm thông tin. Để làm điều này, ta cho tín hiệu tiếng nói đầu vào qua một bộ lọc có đáp ứng như sau:
Công thức 2
Trong đó 0.9 < α < 1. Hình 2 là một ví dụ thể hiện mức năng lượng của nguyên âm [aa] trước và sau khi được cho qua bộ lọc, rõ ràng rằng mức năng lượng ở các tần số cao được nâng lên đáng kể sau khi cho qua bộ lọc.
Hình 2: Nâng mức năng lượng của âm [aa], (a) là trước và (b) là sau khi nâng.

Windowing

Các tín hiệu tiếng nói thay đổi liên tục theo thời gian, thông tin theo đó cũng biến đổi nhiều và nếu trích chọn các thông tin trên toàn bộ tín hiệu thì nó sẽ thiếu ổn định, dẫn tới sự không chính xác. Do đó, để có được các đặc trưng thống kê coi như không đổi ta trích tín hiệu trong khoảng thời gian đủ ngắn bằng cách sử dụng một cửa sổ nhỏ. Thông thường cửa sổ được chọn là cửa sổ hamming, dùng cửa sổ này trượt trên toàn bộ tín hiệu để trích ra một loạt các frame, trong mỗi frame các thông tin đặc trưng được coi là tĩnh.
Cửa sổ hamming.
Ví dụ trên hình 3, ta sử dụng một cửa sổ với độ rộng 25ms (Window size) và trượt cách nhau 10ms  (Frame shift) trên tín hiệu, đầu ra cuối cùng sẽ được một loạt các frame tín hiệu có độ rộng <= 25ms.
Hình 3: Trích các frame tín hiệu bằng hàm cửa sổ.

Biến đổi DFT

Với mỗi frame tín hiệu thu được, ta chuyển sang miền tần số bằng phép biến đổi DFT (Xem bài Cepstral Analysis ). Công thức biến đổi DFT như sau:
Công thức 3

Bộ lọc Mel

Bước tiếp theo là chuyển đổi đoạn tín hiệu trong miền tần số sang thang đo mel bằng cách sử dụng công thức (1). Khi đã có biểu diễn tín hiệu trên thang đo mel, ta xem xét tới một đặc điểm quan trọng  khác là tai nghe con người thu nhận âm thanh như những bộ lọc và chỉ tập trung vào những tần số nhất định. Dựa vào đặc điểm này ta sử dụng một loạt các bộ lọc tam giác tập trung nhiều vào tần số trung tâm để tính toán các hệ số mel. Thông thường có từ 20 đến 40 bộ lọc tam giác được sử dụng, trong đó tần số trung tâm của bộ lọc này tuyến tính cách đều (Cũng cách đều pitch) trên thang đo mel, và độ rộng của mỗi bộ lọc được xác định từ tần số trung tâm của bộ lọc phía trước đến tần số trung tâm của bộ lọc phía sau (Xem biểu diễn trên hình 4). Cuối cùng cho đoạn tín hiệu đi qua các bộ lọc và tính tổng các giá trị đầu ra tương ứng, ta sẽ được một chuỗi giá trị M=(m1, m2, ..., mk), với mỗi giá trị m lấy log(|m|²) ta sẽ được các hệ số mel.
Hình 4: Các bộ lọc mel

Biến đổi DFT ngược

Trong bài Cepstral Analysis, cho thấy rằng việc biến đổi tín hiệu tiếng nói sang miền cepstral giúp giải nhân chập và qua đó có thể phân tách rõ ràng các thành phần về nguồn âm cũng như bộ lọc đại diện cho cơ quan phát âm, chính các thông tin về bộ lọc này mới là những thông tin quan trọng nhất trong việc phân tách các âm vị [1]. Vì lý do này, bước tiếp theo của quá trình trích chọn đặc trưng là biến đổi DFT ngược để tính các hệ số cepstral. Công thức tính các hệ số cepstral này như sau:
Vì mục đích cuối cùng là phân loại các âm vị trong bài toán nhận dạng tiếng nói, nên ta chỉ lấy 12 hệ số cepstral đầu tiên chứa thông tin về bộ lọc đại diện cho cơ quan phát âm, và độc lập với thông tin về nguồn âm [1].

Năng lượng và các đặc trưng động

Ngoài 12 hệ số cepstral nói trên, hệ số thứ 13 chính là năng lượng trong mỗi frame. Năng lượng tương quan với sự xác định của mỗi âm vị (ví dụ như nguyên âm thường có nhiều năng lượng hơn phụ âm tắc), do đó nó rất hữu ích trong việc nhận dạng âm vị. Năng lượng trong mỗi frame là tổng tất cả năng lượng của từng mẫu trong frame đó. Công thức tính năng lượng của tín hiệu x[n] trong một frame từ t1 đến t2 như sau:
Thêm một điều quan trọng nữa là trong mỗi đoạn tín hiệu biểu diễn một âm vị thì thông tin không phải là tĩnh khi chuyển từ frame này sang frame khác. Chẳng hạn như trong một phụ âm tắc (stop consonant) khi chuyển từ trạng thái đóng sang bật âm chứa nhiều thông tin hữu ích cho việc định danh âm vị. Vì lý do này,  ta thêm các đặc trưng động từ các hệ số cepstral để biểu diễn thông tin về sự thay đổi.
Từ 13 đặc trưng ban đầu, ta tính delta để biểu diễn tốc độ thay đổi của âm giữa các frame theo công thức:
Thông thường N được chọn là 2, chính là số frame trước và sau frame 't' hiện tại. Ct là véc tơ đặc trưng của frame hiện tại (bao gồm cả năng lượng). Tiếp theo tính thêm ΔΔC thể hiện gia tốc thay đổi của âm giữa các frame tín hiệu, công thức tính giống như trên chỉ có thay Ct bằng ΔCt.
Cuối cùng ta được một véc tơ đặc trưng MFCC có 39 đặc trưng bao gồm: 12 hệ số cepstral, 12 delta của hệ số cepstral, 12 delta-delta của hệ số cepstral, 1 năng lượng của khung tín hiệu, 1 delta năng lượng và 1 delta-delta năng lượng.

Tài liệu tham khảo

[1] Jurafsky D. and Martin J.H. (2014), Speech and language processing, Pearson.

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

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

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