Trong thông tin vô tuyến điện băng hẹp HF, VHF nói chung và thông tin vô tuyến điện quân sự nói riêng thì việc tiết kiệm băng thông, cải thiện chất lượng tín hiệu khi truyền là vấn đề rất quan trọng. Có rất nhiều thuật toán để xử lý số tín hiệu tiêngs nói khác nhau để giải quyết vấn đề này như là LPC, CVSD, Melp (Mixed-Excitation Linear Predictive) .
Đối với thông tin vô tuyến điện quân sự ngoài việc tiết kiệm băng thông kênh truyền còn có nhiệm vụ quan trọng nữa đó là chống tác chiến điện tử của kẻ thù, nên việc yêu cầu phải tích hợp rất nhiều dịch vụ trên một kênh truyền HF và VHF. Điều này chỉ được giải quyết khi ta nén dữ liệu số xuống một tốc độ rất thấp. Vì vậy thuật toán Melp là đáp ứng được các yêu cầu trên.
Mã dự đoán tuyến tính kết hợp với bộ kích thích (MELP) là một mã hóa tiếng nói chuẩn của Bộ Quốc Phòng và Chính Phủ Mỹ, được ứng dụng chủ yếu trong các ứng dụng quân sự và thông tin vệ tinh, âm thanh bảo mật và các thiết bị vô tuyến bảo mật. Được phát minh năm 1995 do Alan McCree (làm luận văn tốt nghiệp về xử lý tín hiệu và xử lý ảnh). Sau đó được hãng Texas Instruments đưa vào sản phẩm thương mại (chíp DSP kèm phần mềm MELP với tốc độ 2400bps). Năm 1997 đưa vào thành chuẩn quân sự Mỹ (MIL-STD-3005) và đến năm 2001 được đưa vào chuẩn NATO (STANAG 4591). Ngày nay chuẩn mã thoại MELP gồm 3 tốc độ (2400bps, 1200bps và 600bps).
23 trang |
Chia sẻ: lvbuiluyen | Lượt xem: 2700 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Môn xử lý tín hiệu nâng cao - Nghiên cứu mô hình mã hóa tiếng nói melp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Khoa Đào tạo quốc tế và Sau đại học
------------o0o-----------
TIỂU LUẬN
MÔN XỬ LÝ TÍN HIỆU NÂNG CAO
“NGHIÊN CỨU MÔ HÌNH MÃ HÓA TIẾNG NÓI MELP”
Giáo viên hướng dẫn: TS. Nguyễn Ngọc Minh
Nhóm thực hiện:
Hà Nội, tháng 5 năm 2013
MỤC LỤC
LỜI NÓI ĐẦU
Trong thông tin vô tuyến điện băng hẹp HF, VHF nói chung và thông tin vô tuyến điện quân sự nói riêng thì việc tiết kiệm băng thông, cải thiện chất lượng tín hiệu khi truyền là vấn đề rất quan trọng. Có rất nhiều thuật toán để xử lý số tín hiệu tiêngs nói khác nhau để giải quyết vấn đề này như là LPC, CVSD, Melp (Mixed-Excitation Linear Predictive) .
Đối với thông tin vô tuyến điện quân sự ngoài việc tiết kiệm băng thông kênh truyền còn có nhiệm vụ quan trọng nữa đó là chống tác chiến điện tử của kẻ thù, nên việc yêu cầu phải tích hợp rất nhiều dịch vụ trên một kênh truyền HF và VHF. Điều này chỉ được giải quyết khi ta nén dữ liệu số xuống một tốc độ rất thấp. Vì vậy thuật toán Melp là đáp ứng được các yêu cầu trên.
Mã dự đoán tuyến tính kết hợp với bộ kích thích (MELP) là một mã hóa tiếng nói chuẩn của Bộ Quốc Phòng và Chính Phủ Mỹ, được ứng dụng chủ yếu trong các ứng dụng quân sự và thông tin vệ tinh, âm thanh bảo mật và các thiết bị vô tuyến bảo mật. Được phát minh năm 1995 do Alan McCree (làm luận văn tốt nghiệp về xử lý tín hiệu và xử lý ảnh). Sau đó được hãng Texas Instruments đưa vào sản phẩm thương mại (chíp DSP kèm phần mềm MELP với tốc độ 2400bps). Năm 1997 đưa vào thành chuẩn quân sự Mỹ (MIL-STD-3005) và đến năm 2001 được đưa vào chuẩn NATO (STANAG 4591). Ngày nay chuẩn mã thoại MELP gồm 3 tốc độ (2400bps, 1200bps và 600bps).
I. Khái quát chung
Theo chuẩn MIL-STD-3005, mã MELP dựa trên mô hình tham số mã dự đoán tuyến tính (LPC - Linear Prediction Coding chủ yếu là LPC10) và có cải tiến, bổ xung thêm năm đặc trưng nữa để khắc phục các nhược điểm của mã LPC; đó là Bộ trộn kích thích, chuỗi xung ngẫu nhiên, bộ lọc phổ thích nghi tăng cường, trải phổ xung và mô hình năng lượng Fourier, Một khung dữ liệu MELP được tạo thành từ đoạn dữ liệu âm thanh trong khoảng thời gian 22.5ms, trong đó gồm 180 mẫu với tốc độ lấy mẫu là 8,000 mẫu/giây. Sau khi qua quá trình phân tích, tính toán ra các đặc trưng, đoạn dữ liệu này sẽ được mã hóa bằng 54 bit rồi truyền đi, vậy tốc độ dữ liệu (54 bit/22,5ms tương đương 2400 bit/ 1giây). Các yêu cầu về đặc tính tương tự và các tham số mã hóa cụ thể như sau:
Yêu cầu về tín hiệu tương tự: Băng thông tín hiệu tương tự từ 100Hz đến 3800Hz; Bộ biến đổi A/D lớn nhất là 16 bit (tức là có giá trị sau biến đổi nằm trong khoảng -32768 đến 32767); Độ lợi xử lý mã phải đồng đều trên cả băng thông để đảm bảo mức của tín hiệu tiếng nói đầu ra phù hợp với mức của tín hiệu tiếng nói đầu vào.
Yêu cầu các tham số mã hóa và lượng tử: Các tham số của mã MELP sau khi lượng tử hóa và được truyền đi bao gồm: chu kỳ pitch cuối cùng (P3); các giá trị âm thanh qua lọc băng thông (Vbpi, i = 1, 2, …, 5); giá trị 2 hệ số khuếch đại (G1, G2); các hệ số dự đoán tuyến tính (ai, i= 1, 2, …, 10); giá trị năng lượng Fourier và cờ ngẫu nhiên. Phạm vi, giá trị cụ thể của các tham số được cho trong bảng 1.
Bảng 1: Bảng cấp phát số bit dùng cho các tham số MELP
Tên tham số
Âm hữu thanh (bit)
Âm vô thanh (bit)
Hệ số LPC10 (LSF)
25
25
Năng lượng Fuorier
8
-
Hệ số khuếch đại (G1,G2)
8
8
Chu kỳ Pitch, Chồng âm
7
7
Bộ lọc âm (5 băng cố định)
4
-
Cờ ngẫu nhiên
1
-
Mã sửa lỗi (FEC)
-
13
Bit đồng bộ
1
1
Tổng số bit/ khung 22,5ms
54
54
II. Thủ tục mã hóa Melp
1. Mô hình mã hóa Melp
Thủ tục giải mã Melp
Hình trên là mô hình hệ thống mã hóa MELP. Chức năng của từng bộ phận trong hệ thống lần lượt được trình bày ở phần tiếp theo.
2. Lọc bỏ tần số thấp
Bước đầu tiên thực hiện mã hóa là lọc bỏ các tần số thấp, năng lượng một chiều của dữ liệu tiếng nói đầu vào. Bước này được thực hiện với một bộ lọc thông cao Chebychev 4 bậc loại II, với tần số cắt tại 60Hz và hệ số nén ngoài dải thông là 30dB. Dữ liệu tiếng nói sau lọc được đưa vào bộ đệm.
3. Bộ đệm đầu vào mẫu
Bộ đệm chứa các mẫu mới nhất của tín hiệu tiếng nói đầu vào. Trong đó có một mẫu là mẫu mới nhất trong khung hiện tại. Bộ đệm được bổ xung thêm các mẫu trước và sau mẫu này để có các mẫu cần thiết cho quá trình giải mã.
4. Tính toán phần nguyên độ cao tiếng nói (pitch)
(1)
(2)
Để tính độ cao tiếng nói, đầu tiên tín hiệu giọng nói được lọc với bộ lọc thông thấp Butterworth bậc 6 tần số cắt 1kHz. Giá trị phần nguyên của độ cao âm thanh P1 là giá trị của τ, τ = 40, 41, …, 160, để cho hàm tự tương quan chuẩn r(τ) cực đại. Hàm này được xác định bởi công thức sau:
Trong đó [τ/2 ] là giá trị nguyên lớn nhất không vượt quá τ/2.
5. Phân tích dải tần tiếng nói
Phần này của bộ mã hóa sẽ xác định tiếng nói thuộc băng tần nào trong 5 băng tần và tính cường độ tiếng nói Vbpi, i= 1, 2, 3, 4, 5, sau khi cho qua các bộ lọc Butterworth bậc 6 với các dải băng thông là 0 ÷ 500, 500 ÷ 1000, 1000 ÷ 2000, 2000 ÷ 3000, 3000 ÷ 4000 Hz.
6. Tính phần thập phân của độ cao tiếng nói
(3)
Thủ tục này dùng phương pháp nội suy để tăng độ chính xác cho độ cao tiếng nói. Đầu tiên độ cao tiếng nói được làm tròn đến giá trị nguyên gần nhất. Giả sử rằng giá trị này bằng T mẫu và hàm tự tương quan chuẩn hóa r() là một hàm liên tục và có cực đại trong khoảng T-1 và T+1 từ đó c(0,T-1) và c(0,T+1) được tính và so sánh để xác định cực đại nằm trong khoảng T-1 và T hay T và T+1. Nếu c(0,T-1) > c(0,T+1) thì cực đại nằm giữa T-1 và T thì độ cao tiếng nói T cần phải giảm đi 1. Phần thập phân ɛ được tính bằng công thức sau:
(3)
Trong đó c(m,n) được xác định ở công thức (2) ở trên. Giá trị độ cao âm thanh tính được ở phần này là: P2 = T + .
7. Cờ ngẫu nhiên
Cờ ngẫu nhiên được thiết lập bằng 1 khi Vpb1 < 0,5 và được thiết lập tới 0 trong các trường hợp khác. Giá trị của Vpb1 được xác định trong phân tích dải tần tiếng nói như ở phần 4.
8. Phân tích dự đoán tuyến tính
Một bộ phân tích dự đoán tuyến tính bậc 10 được thực hiện trên đầu vào tín hiệu tiếng nói sử dụng cửa sổ Hamming 200 mẫu ( 25 ms) tập trung xung quanh mẫu mới nhất trong khung hiện tại. Quá trình tính được thực hiện bởi thuật toán đệ qui Levinson-Durbin.
9. Tính toán tín hiệu sau lọc của dự đoán tuyến tính
Tín hiệu sau lọc của dự đoán tuyến tính được tính toán bằng cách lọc tín hiệu tiếng nói đầu vào với bộ lọc dự đoán tuyến tính có hệ số được xác định ở phần 7. Cửa sổ để tính tín hiệu sau lọc có tâm là mẫu mới nhất trong khung hiện tại và được làm đủ rộng để sử dụng cho việc tính toán độ cao âm thanh sau cùng. (ở phần 10).
10. Tính toán Peakiness
(4)
Đỉnh của tín hiệu sau lọc được tính toán trên một cửa sổ 160 mẫu có tâm là mẫu mới nhất của khung hiện hành. Giá trị đỉnh là được tính dựa trên tín hiệu sau lọc rn như công thức dưới:
Nếu giá trị đỉnh vượt quá 1,34 thì cường độ âm thanh Vpb1 được gán 1,0. Nếu giá trị đỉnh vượt qua 1,6 thì cường độ âm thanh 3 băng, Vpbi , i=1, 2, 3 được gán bằng 1,0. Peakiness chỉ được sử dụng cho mục đích trên.
11. Hoàn tất tính toán cao độ của tiếng nói
Quá trình tính toán giá trị cuối cùng của cao độ tiếng nói dựa trên tín hiệu sau lọc sau khi đã lọc thông thấp với bộ lọc thông thấp Butterworth bậc 6, tần số cắt 1kHz. Phương trình (1) cũng được sử dụng để tìm phần nguyên của cao độ của tín hiệu sau lọc dao động từ nhỏ hơn độ cao giọng nói 5 mẫu đến lớn hơn cao độ giọng nói 5 mẫu. Quá trình tính toán phần thập phân của cao độ tín hiệu sau lọc cũng được tiến hành tương tự như phần 6 để tìm ra giá trị chính xác của cao độ P3 và giá trị tương quan chuẩn tương ứng r(P3).
Nếu r(P3)≥0,6 (nghĩa là giá trị tự tương quan tính ra đủ lớn, tức tín hiệu sau lọc gần như tuần hoàn với chu kỳ P3 mẫu) thì giá trị cao độ này sẽ được coi như cao độ của tiếng nói, ta tiến hành kiểm tra xem cao độ tìm được có là bội của cao độ nào nhỏ hơn không (mục 12) với ngưỡng để so sánh là Dth (nghĩa là nếu muốn khẳng định P3 có phải là bội của cao độ nhỏ hơn P3/n nào đó, cần có r(P3/n)≥Dth.r(P3) để tìm ra giá trị cao độ cuối cùng. Nếu P3≤100 thì chọn Dth=0,75, ngược lại thì chọn Dth=0,5.
Ngược lại (tức độ tương quan không đủ lớn – tín hiệu sau lọc gần như là ngẫu nhiên không có chu kỳ), thì giá trị cao độ của tiếng nói ban đầu sẽ được chọn để tính cao độ cuối cùng. Nếu giá trị tự tương quan đã chuẩn hóa tính được nhỏ hơn 0,55 thì tiếng nói ban đầu gần như là ngẫu nhiên không có chu kỳ, ta sử dụng cao độ trung bình Pavg. Ngược lại thì giá trị này được coi như độ cao của tiếng nói, ta tiến hành kiểm tra xem cao độ này có phải là bội số của cao độ nhỏ hơn nào đó không với ngưỡng so sánh là Dth=0,9 nếu P3≤100, Dth=0,7 nếu ngược lại.
Quá trình trên có thể tính ra giá trị P3 và giá trị tự tương quan tương ứng khác với các giá trị ban đầu. Nếu giá trị tương quan tính được nhỏ hơn 0,55 thì cao độ được gán bằng giá trị cao độ trung bình.
12. Kiểm tra tính bội của cao độ
Một hàm tuần hoàn với chu kỳ T nào đó thì cũng tuần hoàn với chu kỳ 2T, 3T,… nên cao độ tính được ở bước trên có thể gấp 2 lần, 3 lần… cao độ cơ bản nào đó. Quá trình kiểm tra tính bội của cao độ nhằm tính ra cao độ cơ bản từ giá trị cao độ tính được ở trên.
13. Tính hệ số khuyếch đại
Hệ số khuyếch đại âm thanh đầu vào được tính hai lần trong mỗi frame sử dụng cửa sổ có độ rộng thay đổi theo giá trị cao độ. Độ rộng cửa sổ ở cả hai lần tính đều giống nhau và được xác định như sau: Nếu Vbp1>0,6, độ rộng cửa sổ bằng số lần P2 nhỏ nhất sao cho giá trị của nó lớn hơn 120 mẫu. Nếu độ rộng này vượt quá 320 mẫu thì nó được chia cho 2. Nếu Vbp1≤0,6, độ rộng cửa sổ là 120 mẫu. Cửa sổ thứ nhất có tâm cách 90 mẫu trước mẫu cuối cùng trong khung hiện hành. Cửa sổ thứ hai có tâm là mẫu cuối cùng của khung hiện hành. Hệ số khuyếch đại Gi ,i=1,2, là giá trị hiệu dụng của dãy tín hiệu sn tính theo thang dB theo công thức:
(6)
Trong đó L là độ rộng cửa sổ. Giá trị 0,01 được đưa vào để không bị lỗi lấy logarit của 0. Nếu hệ số khuyếch đại tính ra nhỏ hơn 0,0… thì lấy giá trị bằng 0,0. Trong quá trình tính toán, ta giả thiết rằng giá trị các mẫu tín hiệu nằm trong khoảng từ -32768 đến 32767.
14. Cập nhật cao độ trung bình
(7)
Cao độ trung bình trong một thời gian dài được cập nhật bằng thao tác làm mịn đơn giản: Nếu r(P3)>0,8 và G2>30dB thì P3 được đưa vào bộ đệm chứa 3 giá trị cao độ rõ nhất cho đến hiện tại, pi, i=1,2,3. Ngược lại thì tất cả 3 giá trị cao độ rõ nhất trong bộ đệm được thay đổi để giá trị của nó dịch dần về giá trị cao độ mặc định Pdefault=50 mẫu:
Giá trị cao độ trung bình Pavg được cập nhật bằng trung bình cộng của 3 giá trị cao độ lưu trong bộ đệm. Giá trị này được sử dụng để tính giá trị cuối cùng của cao độ trong các phần trước.
15. Lượng tử hóa các hệ số của bộ lọc dự đoán tuyến tính.
Đầu tiên, từ các hệ số của bộ lọc dự đoán tuyến tính tính ra các tần số có phổ vạch (Line Spectral Frequencies – LSFs). Tiếp đó, các tần số này được sắp xếp tăng dần bằng phương pháp nổi bọt, tức kiểm tra tất cả các cặp tần số liên tiếp, nếu có cặp nào không tăng dần thì đổi chỗ 2 tần số này. Quá trình này lặp lại cho đến khi dãy tần số theo đúng thứ tự. Sau đó, các tần số được điều chỉnh để khoảng cách nhỏ nhất giữa 2 tần số liên tiếp fi và fi+1 là di =fi+1 - fi không nhỏ hơn 50Hz như đoạn giả mã dưới đây. Ở đây giả sử các tần số có phổ vạch được tính trong thang Hz, trong các thang khác thì quá trình tính có thể hơi khác. Vectơ các tần số phổ vạch f sau đó được lượng tử hóa sử dụng phương pháp lượng tử hóa vectơ nhiều tầng. Bảng tra lượng tử hóa vectơ nhiều tầng chứa 4 tầng với số mức ở các tầng là 128,64,64,64. Vectơ sau khi lượng tử hóa f là tổng của 4vectơ ở 4 tầng. Ta cần tìm một vectơ trong bảng tra sao cho bình phương khoảng cách Ơclit giữa nó và vectơ cần lượng tử hóa là nhỏ nhất.
(8)
Trong đó, fi là tần số phổ vạch thứ i và P(fi) – nghịch đảo của năng lượng phổ của bộ lọc dự đoán tuyến tính tại tần số fi. Quá trình tính toán vectơ lượng tử là quá trình xấp xỉ dần, dùng phương pháp bình phương cực tiểu. Từ vectơ tối ưu tìm được ở mỗi tầng, tính ra vectơ sai số và ở tầng tiếp theo ta lại xấp xỉ vectơ sai số này. Vectơ tính ra ở bước này sẽ được dùng để tính các biên độ Furie (mục 19)
16. Lượng tử hóa độ cao tiếng nói
Giá trị cuối cùng của độ cao P3 được lượng tử hóa theo thang logarit cơ số 10 với bộ lượng tử hóa vô hướng 99 mức các giá trị trong phạm vi từ 20 đến 160 mẫu. Giá trị cao độ được ánh xạ đến bộ từ điển 7 bit. Từ mã có tất cả các thành phần đều bằng 0 để chỉ âm thanh là vô thanh, xảy ra khi Vbp1≤0,6. Tất cả 28 từ mã có trọng lượng Hamming bằng 1 hoặc 2 (tức có từ 1 đến 2 bit 1) không dùng để tránh lỗi.
17. Lượng tử hóa hệ số khuyếch đại
Hai hệ số khuyếch đại được lượng tử hóa như sau: Đầu tiên, G2 được lượng tử hóa sử dụng bộ lượng tử hóa vô hướng 5 bit trong khoảng 10 đến 77dB. Sau đó, G1 được lượng tử hóa thành 3 bit sử dụng thuật toán thích nghi như sau: Nếu G2 ở khung hiện tại cách G2 ở khung trước ít hơn 5dB và G1 cách trung bình cộng của G2 ở 2 khung ít hơn 3dB thì thì khung đang ở trạng thái ổn định và G1 được gán giá tri đặc biệt (tất cả các bit đều bằng 0) để ám chỉ rằng bộ giải mã chỉ cần lấy G1 bằng giá trị G2 ở khung hiện hành là được. Ngược lại thì khung hiện tại là một khung chuyển tiếp và giá trị G1 được lượng tử hóa sử dụng bộ lượng tử hóa vô hướng 7 mức các giá trị trong khoảng từ nhỏ hơn giá trị nhỏ hơn trong 2 giá trị G2 ở khung trước và khung hiện tại 6dB đến lớn hơn giá trị lớn hơn trong 2 giá trị đó 6dB.
18. Lượng tử hóa băng tần tiếng nói
Nếu Vbp1≤0,6 (tiếng nói là vô thanh) thì tất cả các cường độ tiếng nói sau khi qua lọc ở các dải băng tần còn lại Vbpi , i=2,3,4,5 được lượng tử hóa về 0. Ngược lại thì các giá trị các cường độ này được lượng tử hóa về 1 nếu giá trị của nó vượt quá 0,6 và về 0 nếu ngược lại. Nếu chỉ có Vbp5 vượt quá 0,6 thì nó cũng được lượng tử hóa về 0.
19. Tính toán biên độ Fourier và lượng tử hóa
Tiếng nói tạo ra do bộ lọc dự đoán tuyến tính gọi là tín hiệu sau lọc. Quá trình này tính 10 biên độ của 10 hài đầu tiên của cao độ của tín hiệu sau lọc này. Nó sử dụng biến đổi Furie nhanh (FFT) 512 điểm trên cửa sổ gồm 200 mẫu tín hiệu sau lọc có tâm tại mẫu cuối cùng của khung. Đầu tiên, từ vectơ các tần số phổ vạch (LSF) đã được lượng tử hóa ở trên tính ra các hệ số của bộ lọc dự đoán tuyến tính. Sau đó, tính tín hiệu sau lọc giữa tiếng nói tạo ra do bộ lọc và tiếng nói ban đầu. Tiếp đó dùng cửa sổ Hamming 200 mẫu, thêm các mẫu 0 ở các vị trí cần thiết để được 512 điểm, và tiến hành tính FFT. Cuối cùng, từ kết quả của biến đổi Furier tính ra biên độ và tìm ra các hài bằng cách xác định các điểm đỉnh của phổ.
Đỉnh của phổ được tìm bằng cách xác định điểm cực đại trong khoảng rộng 512/P^3 xung quanh điểm ước lượng của hài, trong đó P^3 là cao độ tiếng nói sau khi đã lượng tử hóa. Bề rộng của khoảng được cắt chỉ giữ lại phần nguyên. Điểm ước lượng cho tần số hài thứ i là 512i/P^3. Số lượng biên độ phải tìm không lớn hơn P^3/4, cũng không lớn hơn 10. Nếu tìm thấy ít hơn 10 hài thì các biên độ còn lại gán bằng 1,0.
(9)
10 biên độ được lượng tử hóa dùng bộ lượng tử hóa vectơ 8 bit. Việc tìm từ mã tối ưu sử dụng khoảng cách Ơclit có trọng số (bình phương tối thiểu có trọng số) với trọng số ở các tần số thấp cao hơn trọng số ở các tần số cao. Trọng số được tính như sau:
Trong đó fi=8000i/60.
Trọng số này được nhân vào hiệu bình phương của biên độ Furier ban đầu và giá trị tương ứng của bảng từ mã.
20. Sửa lỗi và đóng gói các bit thành khung
Bảng 1 ở mục I cho thấy bố trí các bit trong khung bit của bộ mã hóa MELP. Để tăng hiệu quả trên các kênh lỗi, các bit không sử dụng hết ở các khung vô thanh có thể dùng để làm mã sửa lỗi. 3 mã sửa lỗi Hamming(7,4) và một mã Hamming(8,4) được dùng. Mã (7,4) có thể sửa bất kỳ lỗi đơn nào, trong khi đó mã (8,4) còn cho phép xác định được cả lỗi kép.
III. Bộ giải mã
Dữ liệu nhận về được giải mã qua các bước sau:
Sửa lỗi và lấy ra các bit từ khung
Giảm nhiễu
Tạo kích thích hỗn hợp
Bộ lọc thích nghi tăng cường phổ
Tổng hợp bộ lọc dự đoán tuyến tính
Điều chỉnh hệ số khuyếch đại
Phân tán xung
Nội suy các tham số
Điều khiển vòng lặp tổng hợp
Lọc trước đầu ra (không bắt buộc)
Dữ liệu số đầu vào
Tín hiệu tiếng nói đầu ra.
1. Sửa lỗi và lấy ra các bit từ khung
Từ khung nhận về lấy ra các bit và từ đó khôi phục lại các tham số từ mã. Quá trình giải mã các tham số từ mã của khung hữu thanh và vô thanh là khác nhau. Đầu tiên là giải mã cao độ âm thanh, bởi vì tham số này chứa cả thông tin về hữu thanh hay vô thanh của khung. Nếu các bit mã của cao độ của âm thanh bằng 0 hết hoặc chỉ có 1 bit 1 thì khung là vô thanh. Nếu có 2 bit 1 thì khung này không xác định được, ta bỏ qua khung này (thay bằng khung trước). Ngược lại thì ta có mã của cao độ âm thanh và khung là hữu thanh.
Nếu khung là vô thanh thì ta tiến hành giải các mã sửa lỗi Hamming để tìm ra bộ tham số đúng của khung. Các tham số còn lại (không truyền đi) sẽ được gán giá trị mặc định: cao độ gắn bằng 50 mẫu, mức dao động bằng 25%, tất cả cường độ âm thanh ở các băng tần gán bằng 0, các biên độ Furier bằng 1. Nếu khung là hữu thanh, Vbp1 được gán bằng 1, độ rung gán bằng 25% nếu cờ ngẫu nhiên bằng 1, ngược lại thì độ rung gán bằng 0%. Cường độ âm thanh ở các băng tần cao gán bằng 1 nếu bit tương ứng bằng 1, ngược lại thì gán bằng 0.
2. Giảm nhiễu
Đối với tín hiệu đầu vào nhỏ, ta làm suy giảm cả hai hệ số khuyếch đại một lượng nhỏ theo quy tắc trừ đi một lũy thừa của chúng. Đây là phương án tối giản, không phụ thuộc tần số của phương pháp khử nhiễu bằng cách trơn theo kiểu trừ phổ.
Trước khi xác định hệ số suy giảm cho hệ số khuyếch đại thứ nhất, ước lượng của nhiễu nền được cập nhật như sau: Nếu G1>Gn+Gup thì Gn=Gn+Gup. Nếu G1<Gn-Gdown thì Gn=Gn-Gdown. Ngược lại thì Gn=G1, Gup=0,0337435, Gdown=0,135418, và do vậy ước lượng mức nhiễu sẽ tăng 3dB mỗi giây hoặc giảm 12dB mỗi giây, hệ số khuyếch đại sẽ được cập nhật 88,9 lần mỗi giây. Ước lượng mức nhiễu được điều chỉnh nằm trong khoảng 10 và 80. Quá trình ước lượng mức nhiễu sẽ được bỏ qua cho các khung lặp lại để tránh việc suy giảm nhiều lần. Ước lượng nhiễu nền còn được dùng khi tính toán phổ tăng cường thích nghi.
Hệ số khuyếch đại G1 sau đó được trừ đi 1 lượng Gatt tính theo dB theo công thức:
(10)
Trong đó Gn là ước lượng của nhiễu nền (theo thang dB), G1 là giá trị ban đầu của hệ số khuyếch đại. Lượng trừ đi được điều chỉnh để nằm không vượt quá 6dB nhằm tránh hiện tượng méo và rung động tín hiệu. Để đảm bảo là chỉ làm suy giảm tín hiệu đầu vào nhỏ, giá trị Gn ở công thức trên đươc giới hạn tối đa là 20dB.
Quá trình ước lượng mức nhiễu và thay đổi hệ số khuyêch đại tiếp tục lặp lại cho G2. Các quá trình này bỏ qua khi các khung lặp lại.
3. Nội suy các tham số
Tất cả các tham số tổng hợp lại được nội suy đồng bộ theo cao độ âm thanh cho mỗi chu kỳ đồng bộ của cao độ. Các tham số được nội suy bao gôm: hệ số khuyếch đại, các tần số phổ vạch (LSF), cao độ, độ dao động, các biên độ Furier, các tham số về xung và hệ số nhiễu cho bộ kích thích hỗn hợp và hệ số nghiêng cho bộ lọc thích nghi tăng cường phổ. Nếu điểm bắt đầu t0 (t0=0,1,…,179) của chu kỳ mới của cao độ nhỏ hơn 90 mẫu, hệ số khuyếch đại được tính bằng nội suy tuyến tính từ độ khuyếch đại G2p của khung trước và G1 của khung hiện tại, ngược lại thì nội suy từ G1 và G2. Thông thường, các tham số khác được nội suy tuyến tính từ giá trị ở khung trước và khung hiện tại. Tỷ lệ nội suy int cho các tham số này phụ thuộc vào điểm bắt đầu của chu kỳ mới của cao độ:
int = t0/180.
C