Lượng tử hóa vector

Một phần của tài liệu Ứng dụng neural network vào nhận dạng tiếng nói trên kit arm cortex m3 (Trang 65 - 69)

Tín hiệu âm thanh sau khi được trích đặc trưng sẽ cho ta một chuỗi các vector đặc trưng. Tùy thuộc vào đặc tính mỗi từ mà số lượng các vector đặc trưng khác nhau. Sau

đó, chuỗi vector đặc trưng này sẽđược lượng tử hóa để chia thành M nhóm khác nhau

được gọi là codebook, và mỗi nhóm sẽđược gán nhãn từ 1 tối m. Mục đích của bước này nhằm làm giảm số lượng các quan sát cho chuỗi vector đặc trưng, từđó làm giảm số lượng tính toán cho việc huấn luyện hay nhận dạng tiếng nói.

Các đặc tính của VQ:

− Giảm thiểu không gian lưu trữ các vector đặc trưng.

− Giảm thời gian tính toán độ giống nhau giữa các vector đặc trưng. Trong nhận dạng tiếng nói, một số lượng lớn các phép tính dùng để tính sự giống nhau giữa hai vector đặc trưng. Dựa vào VQ, việc tính toán đó được giảm xuống

thông qua việc tìm sự giống nhau giữa hai cặp vector codebook trong bảng tìm kiếm.

Tuy nhiên việc lượng tử vector chắc chắn sẽ dẫn đến sai số lượng tử hóa, điều này dẫn đến thông tin đặc trưng của tiếng nói bị sai lệch. Mặc khác, việc lựa chọn kích thước của codebook cho VQ không đơn giản. Tăng kích thước sẽ giảm sai số lượng tử, nhưng sẽ tăng không gian lưu trữ các vector trong codebook và khối lượng tính toán khi thực thi chương trình cũng sẽ tăng lên. Do đó, khi cài đặt VQ, chúng ta cần xem xét đến sai số lượng tử, không gian lưu trữ và thời gian tính toán.

Biểu diễn rời rạc về mặc âm học của tiếng nói. Nhờ quá trình gán nhãn cho từng fram của từng từ, mà quá trình chọn codebook tốt nhất cho từ đó trong các hệ thống nhận dạng tiếng nói chỉ đơn thuần là dựa trên các nhãn này.

Thiết kế codebook theo phương pháp LBG [4]

Vấn đề thiết kế

Tìm hiểu về cách thiết kế VQ có thể được bắt đầu như sau. Cho một vector nguồn với các thuộc tính đã biết, cho một khoảng cách (độ sai lệch), và cho số lượng codevector, tìm một codebook (tập gồm các dấu tròn xanh lá cây) và cách phân chia (tập các dấu tròn đen) codebook phải tìm là codebook có ra khoảng cách trung bình bé nhất (Hình 3.14).

Chúng ta giả thiết rằng chuỗi huấn luyện gồm có M vector nguồn:

T = {x1, x2,…,xM}

Chuỗi huấn luyện này thu được từ một cơ sở dữ liệu khá lớn. Ví dụ như nếu nguồn là một tín hiệu tiếng nói, khi đó chuỗi huấn luyện có thể thu được bởi cơ sở dữ liệu là một vài cuộc hội thoại khá dài được ghi âm qua điện thoại. Giả thiết M có đầy đủ các thuộc tính thống kê của nguồn thu được trong việc huấn luyện chuỗi. Chúng ta cũng giả thiết rằng các vector nguồn là k chiều, ví dụ:

xm = (xm,1, xm,2, …, xm,k), m =1, 2, …, M

Cho N là số lượng codevector và biễu diễn codebook :

C = {c1, c2, …, cN}, Mỗi codebook có k chiều, ví dụ:

Sn là miền mã hoá với codevector cn và chỉ rõ việc phân chia các khoảng trống.

P = { S1, S2,…, SN},

Nếu vector nguồn xm ở trong miền Sn, khi đó giá trị tương đương của nó (nghĩa là Q(xm)) sẽ là cn.

Q(xm) = cn, if xmSN

Độđo bình phương khoảng cách lỗi, độ lệch trung bình được tính bằng:

9stV =N1 ‖H − v H ‖ 3.1 ởđó:

‖D‖ = D + D + ⋯ + D

Như vậy, vấn đề thiết kế thuật toán này có thểđược nói ngắn gọn như sau: Cho T và N, tìm C và P sao cho Dove là nhỏ nhất.

Tiêu chuẩn tối ưu hoá

Nếu C và P là một giải pháp của vấn đề cực tiểu hoá, khi đó nó phải thỏa mãn hai tiêu chuẩn sau:

− Điều kiện của thuật toán người láng giềng gần nhất:

x = H: ‖H − = ‖ ≤ ‖H − = z‖ ∀ m = 1,2, … , J 3.2 Điều kiện này yêu cầu miền mã hoá Sn phải bao gồm tất cả các vector, các vector gần với Cn hơn bất kỳ một codevector nào khác.

− Điều kiện của trọng tâm:

= = ∑q|∈ }E

∑q|∈ } = 1,2, … , J (3.3)

Điều kiện này cho rằng codevector Cn là trung bình của tất cả các vector huấn luyện, các vector ở trong miền mã hoá Sn. Thêm vào đó có một điều chắc chắn là có ít nhất một vector huấn luyện thuộc vào mỗi miền (mẫu sốở công thức trên phải khác 0).

Thiết kế thuật toán LBG

Thuật toán LBG là thuật toán đệ quy, việc giải quyết dựa vào sự lựa chọn hai tiêu chuẩn tối ưu trên. Thuật toán yêu cầu một codebook ban đầu C(0). Đây là

codebook khởi tạo, thu được qua quá trình phân tách. Trong phương thức này, một codebook được đặt là giá trị trung bình của toàn bộ dãy huấn luyện. Codevector này

được phân tách thành hai. Thuật toán lặp được chạy với hai vector được khởi tạo cho codebook. Hai codebook sau được phân thành bốn và quá trình xử lý được lặp lại cho

đến khi thu được số lượng codebook mong muốn. Thuật toán này được tổng kết như

sau:

Thiết kế thuật toán LBG:

1. Cho T. ε>0 là số lượng nhỏ nhất có giá trị cốđịnh 2. Đặt N=1 và

=∗ =N1 H

Tính

9stV∗ =N1 ‖H − =∗‖

1. Phân tách: Cho i = 1, 2, …, N, khi đó:

=L( ) = 1 + •)=L∗ =K ( ) = 1 + •)=L∗ Đặt N = 2N 2. Lặp lại thuật toán: Đặt 9stV( ) = 9stV∗ Đặt chỉ số lặp i = 0. i. Cho m = 1, 2, …, M, Tìm giá trị nhỏ nhất : €H − =(L)€

với n = 1, 2, …, N. Với n* là chỉ số nhỏ nhất thu được. Khi đó:

v(H ) = =(L)∗

ii. Cho n = 1, 2, …,N, Cập nhật lại codevector

=(L ) =∑•(q|) ‚}(ƒ)E ∑•(q|) ‚ }(ƒ)1 iii. Đặt i = i+1 iv. Tính 9stV(L) =N1 ‖H − v(H )‖

v. Nếu 9stV(L )− 9stV(L) /9stV(L ) > •, quay lại bước (i). vi. Đặt 9stV∗ − 9stV(L) . Cho i = 1, 2, …, N, đặt

=∗ = =(L)

Với các codevector cuối.

3. Lặp lại bước 3 và 4 cho đến khi thu được số lượng codebook mong muốn.

Hình 3. 14. Minh họa lượng tử hóa vector

Một phần của tài liệu Ứng dụng neural network vào nhận dạng tiếng nói trên kit arm cortex m3 (Trang 65 - 69)

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

(78 trang)