Công nghệ điện tử Viễn thông Thực thi thời gian thực mô hình thuật toán MELP trên bộ xử lý tín hiệu số TMS320C5509

43 584 0
Công nghệ điện tử  Viễn thông Thực thi thời gian thực mô hình thuật toán MELP trên bộ xử lý tín hiệu số TMS320C5509

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM VĂN HẬU PHẠM VĂN HẬU THỰC THI THỜI GIAN THỰC MÔ HÌNH THUẬT TOÁN MELP TRÊN BỘ XỬ LÝ TÍN HIỆU SỐ TMS320C5509 THỰC THI THỜI GIAN THỰC MÔ HÌNH THUẬT TOÁN MELP TRÊN BỘ XỬ LÝ TÍN HIỆU SỐ TMS320C5509 Ngành: Công nghệ Điện tử Viễn thông Chuyên ngành: Kỹ thuật điện tử Mã số: 60 52 02 03 LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỂN TỬ - VIỄN THÔNG LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ VIỄN THÔNG NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS TRẦN ĐỨC TÂN Hà Nội - 2014 Hà Nội - 2014 MỤC LỤC LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu riêng LỜI CAM ĐOAN Các số liệu, kết nêu luận văn MỤC LỤC trung thực chưa công bố MỤC LỤC BẢNG BIỂU công trình khác MỤC LỤC HÌNH VẼ DANH MỤC VIẾT TẮT  Tác giả Phạm Văn Hậu MỞ ĐẦU 1  Chương -  TỔNG QUAN NÉN THOẠI 4  1.1  Cấu trúc hệ thống nén thoại 4  1.2  Các thuộc tính lý tưởng nén thoại 6  1.3  Trễ nén 7  1.4  Ứng dụng mô hình nén thoại 9  Chương -  MÔ HÌNH NÉN THOẠI MELP 10  2.1  Mô hình tạo tiếng nói MELP 10  2.2  Biên độ Fourier (Fourier Manitudes) 11  2.3  Bộ lọc định hình 15  2.4  Pitch period ước lượng voice strength 17  2.5  Hoạt động mã hóa 24  2.6  Hoạt động giải mã 27  2.7  Kết chương 30  Chương -  CHIP XỬ LÝ TÍN HIỆU SỐ TMS320C55xx 32  3.1  Giới thiệu 32  3.2  Kiến trúc họ TMS32C55xx 32  3.3  Công cụ phát triển 37  3.4  Các chế độ địa TMS320C55x 42  3.5  Đường ống chế song song 44  3.6  Tập lệnh TMS320C55x 47  3.7  Lập trình hỗn hợp C Assembly 48  Chương -  CÀI ĐẶT VÀ THỬ NGHIỆM 51  4.1  Cài đặt MELP thời gian thực C5509 C5510 51  4.2  Thực cài đặt 52  4.3  Đánh giá kết 59  KẾT LUẬN 63  Kết đạt luận văn 63  MỤC LỤC BẢNG BIỂU Bảng 2-1: Sơ đồ cấp phát bit mã hóa MELP 27  Bảng 3-1: Ví dụ mã C mã hợp ngữ trình biên dịch C55x sinh 37  Bảng 3-2: Ví dụ tệp lệnh liên kết sử dụng cho mô C55x 39  Bảng 3-3: Gán loại tham số tới ghi 49  Bảng 3-4: Sử dụng trì ghi 50  Định hướng nghiên cứu 63  Bảng 4-1: Một số tệp dự án 52  TÀI LIỆU THAM KHẢO 64  Bảng 4-2: Bảng cho điểm MOS 60  PHỤ LỤC i  Bảng 4-3: Mẫu âm dùng để đánh giá 61  A.  Mô hình mã hóa dự đoán tuyến tính LPC i  Bảng 4-4: Đánh giá PESQ cài đặt C55x MELP 61  B.  Thuật toán Levinson-Durbin iii  Bảng A-1: Bảng so sánh MC độ phân giải thường gặp x  C.  Lượng tử hóa véc-tơ nhiều lớp (MSVQ) vii  MỤC LỤC HÌNH VẼ Hình 1-1: Mô hình hệ thống nén thoại Hình 1-2: Mô hình nén thoại Hình 1-3: Mô hình xác định trễ Hình 1-4: Mô tả thành phần trễ nén Hình 1-5: Đồ thị mẫu truyền bit hai chế độ liên tục (trên) gói (dưới) Hình 2-1: Mô hình tạo tiếng nói 10 Hình 2-2: Mô xử lý tín hiệu với lọc tạo xung 12 Hình 2-3: Mô hình tính toán lượng tử hóa biên độ Fourier 12 Hình 2-4: Quá trình tạo kích thích xung 14 Hình 2-5: Sơ đồ lọc tạo hình xung 16 Hình 2-6: Vị trí cửa sổ khác tương ứng với khung tín hiệu 18 Hình 2-7: Mô ước lượng Pitch period bước 19 Hình 2-8: Mô ước lượng voice strength băng thông 20 Hình 2-9: Một số tín hiệu giá trị đỉnh 22 Hình 2-10: Đỉnh chuỗi xung không gian đồng 22 Hình 2-11: Sai số dự đoán có từ sóng âm (bên trái) đo đạc đỉnh áp dụng cho sai số dự đoán (bên phải) 23 Hình 2-12: Mô hình mã hóa MELP 24 Hình 2-13: Mô hình giải mã MELP 28 DANH MỤC VIẾT TẮT Hình 2-14: Đáp ứng xung (trái) đáp ứng biên độ (phải) lọc phân tán xung 30 Từ viết tắt Hình 3-1: Sơ đồ khối CPU TMS320C55x 33 2-D Hình 3-2: Sơ đồ đơn giản hóa IU 34 AbS Analysis-by-synthesis ACELP Algebraic code-excited prediction Absolute category rating Hình 3-3: Mô hình đơn giản hóa PU 34 Hình 3-4: Bộ điều khiển luồng liệu địa C55x 35 Hình 3-5: Mô hình cấu trúc tính toán liệu 36 Hình 3-6: Công cụ Luồng phát triển phần mềm TMS320C55X 38 Hình 3-7: Phát triển phần mềm TMS320C55X với CCS 40 ACR ADPCM APCM Tiếng Anh đầy đủ Nghĩa tiếng Việt 2-Demensional Hai chiều Phân tích cách tổng hợp linear Dự đoán tuyến tính mã kích thích đại số Tỉ lệ phân loại tuyệt đối Adaptive differential pulse code Điều chế mã xung sai phân thích nghi modulation Adaptive pulse code modulation Điều chế mã xung thích nghi AR Tự hồi quy ARMA Tự hồi quy moving average Trung bình dịch chuyển tự hồi quy CCR Comparison category rating Tỉ lệ phân loại so sánh CDMA Code division multiple access Đa truy cập chia theo mã CELP Code-excited linear prediction Dự đoán tuyến tính mã kích thích Hình 4-4: Tệp Vn_M gốc qua xử lý C55x MELP 62 CS-ACELP Conjugate structure algebraic code- Dự đoán tuyến tính mã kích thích đại số excited linear prediction cấu trúc liên hợp Hình 4-5: Tệp Vn_F gốc (và qua xử lý C55x MELP 62 DC Direct current DCR Degradation category rating Tỉ lệ phân loại suy giảm DFT Discrete Fourier transform Biến đổi Fourier rời rạc DPCM Differential pulse code modulation Điều chế mã xung sai phân DSP Digital signal processing/processor Xử lý tín hiệu số DTAD Digital telephone answering device Thiết bị trả lời thoại số DTFT Discrete time Fourier transform Biến đổi Fourier thời gian rời rạc DTMF Dual-tone multifrequency Âm kép đa tần EFR Enhanced full rate Tăng cường đầy đủ tỉ lệ FFT Fast Fourier transform Biến đổi Fourier nhanh FIR Finite impulse response Đáp ứng xung hữu hạn FM Frequency modulation Điều tần FS Federal Standard Chuẩn liên bang GLA Generalized Lloyd algorithm Thuật toán Generalized Lloyd IDFT Inverse discrete Fourier transform Biến đổi Fourier rời rạc nghịch đảo IIR Infinite impulse response Đáp ứng xung vô hạn LD-CELP Low-delay prediction LMS Least mean square Hình 3-8: Ví dụ lệnh hợp ngữ TMS320C55X 41 Hình 3-9: Sơ đồ hoạt động đường ống C55x 46 Hình 4-1: Mô hình hệ thống cho phát triển mô hình MELP 51 Hình 4-2: Mô hình triển khai thời gian thực trực tuyến 52 Hình 4-3: Mô hình tổng quát phương pháp đo phổ biến 60 Tự hồi quy Dòng chiều code-excited linear Dự đoán tuyến tính mã kích thích trễ thấp Bình phương trung bình tối thiểu LP Linear prediction LPC Linear prediction coding/coefficient Mã hóa dự đoán tuyến tính MỞ ĐẦU Dự đoán tuyến tính MA Moving average Trung bình dịch chuyển MNB Measuring normalizing block Khối chuẩn hóa đo đạc MP–MLQ MSE Multipulse–maximum quantization Mean square error Sai số bình phương trung bình MSVQ Multistage vector quantization Lượng tử hóa vector đa lớp PCM Pulse code modulation Điều chế mã xung Hiện nay, nén liệu âm nói chung nén liệu tiếng nói nói riêng nhà khoa học, công nghệ giới quan tâm nghiên cứu, kết đạt được ứng dụng nhiều lĩnh vực truyền thông giải trí Đặc biệt, điều kiện công nghệ thông tin, truyền thông phát triển mạnh vấn đề xử lý âm thanh, tiếng nói nghiên cứu ứng dụng rộng rãi PESQ Perceptual evaluation of speech Đánh giá cảm nhận chất lượng thoại quality Perceptual speech quality measure Đo đạc chất lượng thoại PSQM likelihood Chuẩn hóa dạng tối đại đa xung PVQ Predictive vector quantization QCELP Qualcomm prediction code-excited Lượng tử hóa vec-tơ dự đoán linear Dự đoán tuyến tính kích thích mã Qualcomm RC Reflection coefficient Hệ số phản xạ RV Random variable Biến ngẫu nhiên SD Spectral distortion Sự biến dạng phổ SNR Signal to noise ratio Tỉ lệ tín hiệu nhiễu SPG Segmental prediction gain SSE Sum of squared error Tổng sai số bình phương SSNR Segmental signal to noise ratio Tỉ lệ tính hiệu phân đoạn nhiễu TDMA Time division multiple access Đa truy cập phân chia thời gian TI Texas Instruments VoIP Voice over internet protocol Truyền âm qua giao thức internet VQ Vector quantization Lượng tử hóa véc-tơ VSELP Vector sum prediction excited linear Dự đoán tuyến tính kích thích tổng vectơ Lý chọn đề tài Đã có nhiều thuật toán mô hình xử lý tiếng nói nghiên cứu sử dụng, đó, mô hình dự đoán tuyến tính (LPC) phần thiếu hầu hết tất giải thuật mã hóa thoại đại ngày Ý tưởng mẫu thoại xấp xỉ kết hợp tuyến tính mẫu khứ Trong khung tín hiệu, trọng số dùng để tính toán kết hợp tuyến tính tìm cách tối thiểu hóa bình phương trung bình sai số dự đoán; trọng số tổng hợp, hệ số dự đoán tuyến tính dùng đại diện cho khung cụ thể Mô hình MELP (dự đoán tuyến tính kích thích hỗn hợp) thiết kế để vượt qua số hạn chế mô hình LPC, sử dụng mô hình tạo tiếng nói phức tạp hơn, với thông số bổ xung để cải thiện độ xác MELP bắt đầu phát triển McCree từ năm 1995, tích hợp nhiều nghiên cứu tiến vào thời điểm đó, bao gồm lượng tử hóa vec-tơ, tổng hợp tiếng nói cải tiến từ mô hình LPC Hiệu MELP chứng minh thực tế NATO Mỹ chấp nhận sử dụng nhiều thiết bị quân Tuy nhiên Việt Nam MELP chưa ý nghiên cứu, phát triển tính ứng dụng hẹp: chủ yếu lĩnh vực quân Xuất phát từ lý mà chọn đề tài: “Thực thi thời gian thực mô hình thuật toán MELP xử lý tín hiệu số TMS320C5509” Mục tiêu nhiệm vụ nghiên cứu Mục tiêu luận văn triển khai thời gian thực thuật toán nén thoại MELP xử lý tín hiệu số TMS320C55xx, với nội dung sau: - Phân tích tổng quan nén thoại - Mô hình nén thoại MELP - Phân tích, nghiên cứu xử lý tín hiệu số TMS320C55X - Phân tích, xây dựng, triển khai thực thi thời gian thực mô hình MELP xử lý tín hiệu số TMS320C5509, đề xuất cải tiến MELP đánh giá kết thử nghiệm Đối tượng phạm vi nghiên cứu + Đối tượng nghiên cứu - Tìm hiểu tổng quan nén thoại thuật toán MELP, - Nghiên cứu xử lý tín hiệu số TMS320C55xx + Phạm vi nghiên cứu - Các vấn đề nén liệu tiếng nói - Ứng dụng thuật toán MELP xử lý tín hiệu số TMS320C5509 Phương pháp nghiên cứu + Phương pháp nghiên cứu lý thuyết - Nghiên cứu tài liệu, ngôn ngữ công nghệ liên quan - Tổng hợp tài liệu - Phân tích thiết kế hệ thống + Phương pháp nghiên cứu thực nghiệm - Thiết kế triển khai thuật toán chip TMS320C5509 - Đánh giá kết đạt được, đề xuất phương án mở rộng kết nghiên cứu Kết dự kiến Phân tích, thiết kế hệ thống triển khai hoàn chỉnh thuật toán MELP chip TMS320C5509 Ý nghĩa khoa học thực tiễn luận văn + Về mặt lý thuyết - Tìm hiểu tổng quan nén thoại thuật toán MELP - Đề xuất khả triển khai thuật toán MELP xử lý tín hiệu số + Về mặt thực tiễn - Ứng dụng công cụ, ngôn ngữ hỗ trợ để triển khai, cài đặt thuật toán MELP xử lý tín hiệu số TMS320C5509 - Kết luận văn áp dụng cho ứng dụng thực tiễn, đặc biệt lĩnh vực quân Đặt tên đề tài “THỰC THI THỜI GIAN THỰC MÔ HÌNH THUẬT TOÁN MELP TRÊN BỘ XỬ LÝ TÍN HIỆU SỐ TMS320C5509” Bố cục luận văn Nội dung luận văn chia thành chương sau: Chương 1: Tổng quan nén thoại Chương 2: Mô hình nén thoại MELP Chương 3: Chip xử lý tín hiệu số TMS320C55x Chương 4: Cài đặt thử nghiệm Phụ Lục: Mô hình LPC Lượng tử hóa véc-tơ nhiều lớp Chương - TỔNG QUAN NÉN THOẠI [4] Nén thoại hay mã thoại, trình phân tích sau tái tạo lại tín hiệu tiếng nói yêu cầu: sử dụng bít tốt mà không làm giảm chất lượng tiếng nói Do bùng nổ viễn thông, nên nén thoại ngày nghiên cứu ứng dụng rộng rãi Kỹ thuật vi điện tử xử lý khả trình giá rẻ góp phần thúc đẩy trợ giúp phát triển, chuyển giao công nghệ nhanh chóng từ nghiên cứu đến thực tiễn Nén thoại thực nhiều bước đặc tả thuật toán.Thuật toán tập lệnh, cung cấp bước tính toán cần thiết để thực công việc cụ thể Máy tính vi xử lý thực lệnh để hoàn thành nhiệm vụ mã hóa, giải mã Các lệnh chuyển đổi sang cấu trúc mạch số, thực tính toán trực tiếp phần cứng: FPGA, CPLD… 1.1 Cấu trúc hệ thống nén thoại đổi mẫu tương tự sang tín hiệu số, ta sử dụng lượng tử hóa chuẩn trì chất lượng thoại nhiều bits/mẫu Việc sử dụng 16 bits/mẫu cung cấp chất lượng thoại cao Thông thường, sử dụng tham số cho tín hiệu thoại số sau: Tần số lấy mẫu: kHz Số lượng bit mẫu: 16 Khi đó, bit-rate = * 16 = 128 kbps Giá trị bit-rate gọi bit-rate đầu vào, giá trị mà mã hóa nguồn cố gắng giảm xuống Đầu mã hóa nguồn biểu diễn tín hiệu thoại số mã hóa có bit-rate thấp đầu vào nhiều tốt Dữ liệu thoại số mã hóa xử lý tiếp qua mã hóa kênh, cung cấp khả chống sai cho dòng bit trước truyền lên kênh truyền tải (bị ảnh hưởng từ nhiều nguồn nhiễu) Trong hình 1-1, mã hóa nguồn mã hóa kênh tách biệt với ta phối hợp trình bước Quá trình giải mã kênh xử lý liệu chống sai số để lấy lại liệu mã hóa, truyền sang giải mã nguồn để tạo tín hiệu thoại số đầu với bit-rate ban đầu Tín hiệu thoại số đầu chuyển đổi sang dạng tín hiệu tương tự thông qua chuyển đổi số-tương tự Tín hiệu vào (128kbps) Mã hóa Giải mã Dòng bit mã hóa ( cm_max[cm_index]) cm_max[cm_index] = temp; /* Check for saturations */ temp = saturation - prev_saturation; if (temp > 0) { sat_cnt[cm_index] += temp; printf("%d saturations in frame %d, index %d\n", (int) temp, (int) frame, (int) cm_index); } /* Increment index and previous value */ cm_index++; prev_complexity = complexity; prev_saturation = saturation; /* Check overall total complexity */ if (complexity > max_complexity) 54 max_complexity = complexity; return(0); } Tệp dsp_sub.c chứa hàm dùng chung cho dự án, bao gồm số hàm envelope()dùng để tính toán thời gian đóng gói tín hiệu, hàm pack_code()/unpack_code()dùng cho đóng gói/bung gói mã bit lên/từ kênh truyền, hàm median() tính giá trị trung vị, hàm peakiness() ước lượng đỉnh tín hiệu đầu vào, hàm readdbl()/writedbl() dùng để đọc/ghi khối liệu vào/ra, hàm iir_2nd_*() cài đặt lọc IIR bậc void pack_code(Shortword code, UShortword **p_ch_beg,Shortword *p_ch_bit, Shortword numbits, Shortword wsize) { Shortword i,ch_bit; UShortword *ch_word; ch_bit = *p_ch_bit; ch_word = *p_ch_beg; for (i = 0; i < numbits; i++) { /* Mask in bit from code to channel word */ if (ch_bit == 0) *ch_word = (UShortword)(shr((Shortword)(code & (shl(1,i))),i)); else *ch_word |= (UShortword)(shl((shr((Shortword)(code & (shl(1,i))),i)),ch_bit)); /* Check for full channel word */ ch_bit = add(ch_bit,1); if (ch_bit >= wsize) { ch_bit = 0; (*p_ch_beg)++ ; ch_word++ ; } } /* Save updated bit counter */ *p_ch_bit = ch_bit; } Tệp mat_lib.c chứa hàm thao tác ma trận véc-tơ, bao gồm số hàm v_add() thực phép cộng, trừ, nhân hai véc-tơ 16 bit, 32 bit; chép nội dung véc-tơ 16 bit, 32 bit // Hàm cộng hai véc-tơ 16 bit :) Shortword *v_add(Shortword *vec1,Shortword *vec2,Shortword n) { Shortword i; 55 #if(USE_TMS320) for(i=0; i < n; i++) vec1[i] = _sadd(vec1[i],vec2[i]); return(vec1); #else for(i=0; i < n; i++) vec1[i] = add(vec1[i],vec2[i]); return(vec1); #endif } // Tệp pit.h pit_lib.c chứa hàm xử lý pitch như: hàm double_chk() kiểm tra trùng lặp đồng thời tìm kiếm pitch ngắn, hàm f_pitch_scale() khuếch đại đệm tín hiệu pitch để có độ xác tốt nhất, hàm find_pitch() để tìm kiếm pitch, hàm frac_pch() xác định giá trị pitch phân đoạn, hàm pitch_ana()phân tích tìm kiếm ứng viên pitch 4.2.2 Các tệp MELP Tệp melp.h chứa cấu trúc tham số MELP khai báo nguyên mẫu hàm sử dụng cho MELP Cấu trúc tham số định nghĩa sau: struct melp_param { /* MELP parameters */ Shortword pitch; /* Q7 */ Shortword lsf[LPC_ORD+1]; /* Q15 */ Shortword gain[NUM_GAINFR]; /* Q8 */ Shortword jitter; /* Q15 */ Shortword bpvc[NUM_BANDS]; /* Q14 */ Shortword pitch_index; Shortword lsf_index[LPC_ORD]; Shortword jit_index; Shortword bpvc_index; Shortword gain_index[NUM_GAINFR]; UShortword *chptr; Shortword chbit; Shortword uv_flag; Shortword fs_mag[NUM_HARM]; /* Q13 */ Shortword *fsvq_index; Shortword *msvq_index; Shortword msvq_stages; Shortword *msvq_bits; Shortword *msvq_levels; }; Các tệp melp_ana.c, melp_sub.c,melp_chn.c, melp_syn.c chứa hàm để thực thi mô hình MELP bao gồm: hàm melp_ana()và melp_ana_init() để phân tích MELP với đầu vào tín hiệu âm vào, đầu cấu trúc tham số 56 MELP; hàm melp_chn_write() melp_chn_read() dùng để ghi đọc dòng bit thuật toán MELP, với đầu vào cấu trúc tham số MELP đầu cấu trúc tham số cập nhật; void melp_chn_write(struct melp_param *par) { Shortword i, bit_cntr; UShortword *bit_ptr; /* FEC: code additional information in redundant indeces */ fec_code(par); /* Fill bit buffer */ bit_ptr = bit_buffer; bit_cntr = 0; pack_code(par->gain_index[1],&bit_ptr,&bit_cntr,5,1); /* Toggle and write sync bit */ if (sync_bit) sync_bit = 0; else sync_bit = 1; pack_code(sync_bit,&bit_ptr,&bit_cntr,1,1); pack_code(par->gain_index[0],&bit_ptr,&bit_cntr,3,1); pack_code(par->pitch_index,&bit_ptr,&bit_cntr,PIT_BITS,1); pack_code(par->jit_index,&bit_ptr,&bit_cntr,1,1); pack_code(par->bpvc_index,&bit_ptr,&bit_cntr,NUM_BANDS-1,1); for (i = 0; i < par->msvq_stages; i++) pack_code(par->msvq_index[i],&bit_ptr,&bit_cntr,par->msvq_bits[i],1); pack_code(par->fsvq_index[0],&bit_ptr,&bit_cntr, FS_BITS,1); /* Write channel output buffer */ for (i = 0; i < NUM_CH_BITS; i++) { pack_code(bit_buffer[bit_order[i]],&par->chptr,&par->chbit, 1,CHWORDSIZE); if (i == 0) *(par->chptr) |= (UShortword)0x8000; /* set beginning of frame bit */ } } Các hàm bpvc_ana() bpvc_ana_init() dùng để phân tích băng thông với đầu vào tín hiệu âm vào ước lượng pitch ban đầu, với đầu định băng thông ước lượng pitch khung 57 4.2.3 Tệp Tệp dsk_app.c chứa hàm main() số hàm điều khiển để chạy mạch TMS320C55X DSK hàm khởi tạo ngắt, hàm khởi tạo DMA Hàm initMcbsp() dùng để khởi tạo McBSP để truyền liệu codec void initMcbsp( ) { /* Open the codec data McBSP */ #if (USE_DSK5509A) hMcbsp = MCBSP_open( MCBSP_PORT0, MCBSP_OPEN_RESET ); #else hMcbsp = MCBSP_open( MCBSP_PORT1, MCBSP_OPEN_RESET ); #endif /* Configure the codec to match the AIC23 data format */ MCBSP_config( hMcbsp, &mcbspCfg0 ); /* Clear any garbage from the codec data port */ if ( MCBSP_rrdy( hMcbsp ) ) MCBSP_read16( hMcbsp ); /* Start the McBSP running */ MCBSP_start( hMcbsp, MCBSP_XMIT_START | MCBSP_RCV_START | MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC, 220 ); } Hàm initIrq() dùng để khởi tạo cho phép DMA nhận ngắt sử dụng CSL Hàm dịch vụ ngắt cho ngắt hwiDma() Việc gắn ID kiện với ngắt kênh DMA cho phép mã mô tả kiện logic ánh xạ tới kiện vật lý thực thời gian chạy Điều giúp cải thiện tính khả chuyển mã void initIrq( void ) { eventIdRcv = DMA_getEventId( hDmaRcv ); eventIdXmt = DMA_getEventId( hDmaXmt ); /* Clear any pending receive channel interrupts ( IFR ) */ IRQ_clear( eventIdRcv ); IRQ_clear( eventIdXmt ); Hàm gain_ana() dùng để phân tích mức gain cho tín hiệu đầu vào với đầu vào tín hiệu vào, giá trị pitch, độ dài cửa sổ tối đa tối thiểu, trả lại giá trị gain tính đơn vị dB Hàm q_gain() q_gain_dec() dùng để lượng tử hóa giải mã hai toán hạng gain sử dụng mã hóa tiệm cận sai phân Hàm melp_syn()và melp_syn_init()dùng để tổng hợp tiếng nói MELP, sử dụng tham số cho khung tổng hợp thành tiếng nói đầu /* Enable receive DMA interrupt ( IMR ) */ IRQ_enable( eventIdRcv ); IRQ_enable( eventIdXmt ); /* Make sure global interrupts are enabled */ IRQ_globalEnable( ); } 58 Các hàm setDmaSrc() setDmaDst() dùng để thiết lập địa nguồn đích DMA Hàm initDma() dùng để khởi tạo trình điều khiển DMA Hàm dmaHwiRcv() hàm dịch vụ ngắt cho việc nhận DMA Nó gọi khung hoàn chỉnh liệu nhận đủ từ codec sẵn sàng nhớ Hàm dmaHwiXmt() hàm dịch vụ ngắt cho việc truyền DMA Nó gọi khung hoàn chỉnh liệu truyền hết cho codec void dmaHwiRcv( void ) { Int16 bufin = gRcvBuf; /* Set DMA destination to next buffer */ if ( ++gRcvBuf >= BUFFERS ) gRcvBuf = 0; setDmaDst( hDmaRcv, gRcvBuf ); /* Restart DMA */ DMA_start( hDmaRcv ); /* Notify processBufferSwi( ) that there is data to process */ SWI_or( &processBufferSwi, bufin ); /* Read DMA status register to clear it so new interrupts will be seen */ DMA_RGETH( hDmaRcv, DMACSR ); } Hàm main() thực khởi tạo ứng dụng truyền liệu #if (WORK_ONLINE) // global variables for fixed-point library int saturation = 0; void main( ) { //MELP melp_ana_init(); melp_syn_init(); melp_par.chptr = chbuf; melp_par.chbit = 0; #if (!USE_DYNMEM) //Scratch memory management scrpointer = scrbuf; scrmem_depth = scrbuf; #endif #if USE_DSK5509A /* Initialize the board support library, must be called first */ 59 DSK5509_init( ); // Initialize LEDs and DIP switches DSK5509_LED_init(); DSK5509_DIP_init(); DSK5509_LED_off(0); /* Enable codec data path */ DSK5509_rset( DSK5509_MISC, ); /* Configure the codec */ AIC23_setParams( &config ); #else /* Initialize CSL library - This is REQUIRED !!! */ CSL_init(); GPIO_pinDirection(GPIO_PIN7, GPIO_OUTPUT); flag = 0; GPIO_pinWrite(GPIO_PIN7, flag); GPIO_pinDirection(GPIO_PIN6, GPIO_OUTPUT); #endif //Reference clock is 12 Mhz PLL_setFreq (12, 1); //144 Mhz /* Clear buffers */ memset( ( void * )gBuffer, 0, BUFFSIZE * BUFFERS ); /* Disable global interrupts during setup */ IRQ_globalDisable( ); /* Initialize the EDMA controller */ initDma( ); /* Initialize McBSP0 for audio transfers */ initMcbsp( ); /* Initialize interrupts */ initIrq( ); /* Re-enable global interrupts */ IRQ_globalEnable( ); } #endif 4.3 Đánh giá kết Có số phương pháp đánh giá chất lượng mô hình nén tiếng nói Đó phương pháp khách quan với tham gia người (như phương pháp chấm điểm trung bình MOS), phương pháp khách quan tham gia người (ví dụ phương pháp đánh giá cảm quan chất lượng thoại PESQ) Một phương pháp đo chủ quan sử dụng phổ biến Chấm điểm trung bình MOS, có người nghe (thính giả) huấn luyện có kinh nghiệm đánh giá tín hiệu thoại theo thang điểm từ tới bảng 4-2 Điểm cuối tín hiệu tính giá trị trung bình tất thính giả 60 61 Bảng 4-2: Bảng cho điểm MOS Điểm Chất lượng thoại Xuất sắc Mức độ biến dạng Không nhận thấy Tốt Cảm nhận được, không gây phiền Khá Cảm nhận khó chịu Trung bình Khó chịu không phản đối Kém Rất khó chịu phản đối Mặc dù phương pháp đo chủ quan đáng tin cậy chúng tốt nhiều thời gian cần thính giả phải huấn luyện Vì thế, người ta thường dùng phương pháp khách quan Một điểm hạn chế phép đo khách quan cần phải có tiếng nói rõ ban đầu để làm tham chiếu so sánh, hạn chế việc hiểu biết cảm nhận âm người, đặc biệt điều kiện có nhiễu Tuy thế, phương pháp khách quan có nhiều hữu ích có tương quan tốt so với phương pháp chủ quan MOS Trong chương này, phương pháp khách quan đánh giá cảm nhận chất lượng thoại PESQ lựa chọn để đánh giá hiệu mô hình nén thoại MELP PESQ thiết kế trực tiếp để truy cập vào chất lượng tiếng nói nhận đường truyền Phép đo chấm điểm tương tự MOS, cho kết từ tới 4.5, điểm cao chất lượng tốt Việt sử dụng để đánh giá cài đặt MELP C55x Hơn nữa, chưa có sở liệu âm tiếng Việt để đánh giá thuật toán xử lý tiếng nói chung mã hóa nói riêng, có sở liệu tiếng Anh khác tiêu chuẩn hóa, đủ lớn sử dụng rộng rãi AURORA, TIMIT, ITU P50 Do đó, tác giả cộng phải tự ghi lại số câu tiếng Việt chỗ dùng làm liệu kiểm tra Tuy nhiên, để so sánh hiệu suất C55x MELP với số sản phẩm MELP khác thị trường (MELP Sinalogic [5] Vocal [6]), số mẫu tiếng Anh lấy trực tiếp từ trang web họ; bao gồm tệp âm gốc tệp âm xử lý Cụ thể, câu tỷ lệ lấy mẫu 8000 mẫu/giây lượng tử hóa 16bit đưa vào đánh giá (xem bảng 4-3), ngoại trừ Vn_M.wav Vn_F.wav ngắn, tập tin lại đủ dài để bao gồm âm khác Bảng 4-3: Mẫu âm dùng để đánh giá Thứ tự Tên tệp Eng_M.wav [5] Eng_F.wav [5] Vn_M.wav Vn_F.wav Vov1.wav reference_64p0k.wav [6] Ngôn ngữ Tiếng Anh Tiếng Anh Tiếng Việt Tiếng Việt Tiếng Việt Tiếng Anh Nam/nữ Nam Nữ Nam Female Female Cả hai Nhiễu SNR Tín hiệu thoại rõ Hình 4-3: Mã hóa Mô kênh Giải mã Đo đạc chất lượng MOS, PESQ Tham khảo Mô hình tổng quát phương pháp đo phổ biến Hình 4-3 cho thấy mô hình tổng quát phương pháp đo phổ biến; nhiên, thí nghiệm tiến hành mà nhiễu (và sau SNR) kênh giả thiết lý tưởng (khối đường nét đứt hình 4-3 không xem xét) Do vectơ thử nghiệm để đánh giá cài đặt MELP khó để có công khai, thời gian hạn chế, nên có số mẫu tiếng Anh tiếng Bảng 4-4 cho thấy so sánh điểm PESQ cài đặt C55x MELP sản phẩm thương mại khác Bảng 4-4: Đánh giá PESQ cài đặt C55x MELP Thứ tự Tên tệp Eng_M.wav 2.641 Sản phẩm thương mại 2.666 [13] Eng_F.wav 2.384 2.445 [13] Vn_M.wav 2.631 - Vn_F.wav 2.267 - Vov1.wav 2.713 - reference_64p0k.wav 3.106 2.970 (*) C55x MELP (*): Tính điểm công cụ ITU P.862 63 62 Hình 4-4 4-5 cho thấy hình phổ tệp Vn_M.wav (câu nam giới nói “nào sẵn sàng chưa niên”) Vn_F.wav (câu nữ giới nói “vậy giải thích họ có lý”), tệp gốc qua xử lý C55x MELP tương ứng Vn_M gốc Vn_M original speech MELP processed Vn_M speech 0.4 0.2 0.2 0 -0.2 -0.2 -0.4 5000 10000 Hình 4-4: 15000 -0.4 Chương luận văn mô tả triển khai cài đặt thời gian thực MELP mạch xử lý tín hiệu số TMS320C5509A DSK với chương trình viết Code composer studio 3.3 5000 10000 15000 Tệp Vn_M gốc qua xử lý C55x MELP Vn_F gốc Kết đạt luận văn Luận văn thực nghiên cứu lý thuyết mô hình nén thoại xử lý tiếng nói, đặc biệt sâu vào mô hình MELP, từ triển khai cài đặt thời gian thực mô hình MELP chip TMS320C55X DSP Vn_M qua C55x MELP 0.4 KẾT LUẬN Vn_F xử lý qua C55x MELP Vn_F original speech Các kết thử nghiệm cho thấy triển khai thời gian thực hoạt động hiệu cho kết so sánh với số sản phẩm MELP thương mại: C55x MELP có khả tạo tiếng nói có chất lượng tốt, songcông thời gian thực với hiệu cao tốc độ 2400bps Kết nghiên cứu triển khai thời gian thực MELP TMS320VC55x tổng hợp thành báo khoa học đăng Tạp chí Nghiên cứu KH &CN quân sự, số 02-2014 [1] 0.4 0.2 -0.2 -0.4 Định hướng nghiên cứu 0.5 Hình 4-5: 1.5 Tệp Vn_F gốc (và qua xử lý C55x MELP Thông qua thực nghiệm, ta thấy rằngC55x MELP thực nhiều cho kết gần giống với sản phẩm MELP thị trường với tệp âm đầu vào cho trước Cụ thể, C55x MELP làm việc tốt so với Vocal tồi Signalogic, khác biệt không đáng kể, khoảng 0.1 điểm PESQ Thực thêm thí nghiệm chuyên sâu với tập hợp tiếng nói khác khẳng định chất lượng cài đặt C55x MELP dựa điểm số PESQ đánh giá nghe trực tiếp Với cấu hình thời gian thực trực tuyến minh họa hình 4-2, hệ thống hoạt động ổn định, cho kết âm có chất lượng mong đợi Tức là, hệ thống có khả làm việc chế độ song công đầy đủ: mã hóa giải mã phải thực đồng thời Bên cạnh kết đạt được, số vấn đề cần giải sâu Thứ nhất, ta cần có sở liệu tiếng nói lớn để thử nghiệm, đặc biệt sở liệu tiếng Việt, để chứng minh rõ ràng hiệu cài đặt Thứ hai, luận văn đánh giá kết so sánh C55x MELP với sản phẩm thương mại khác dựa chất lượng tiếng nói, vấn đề khác độ phức tạp (trên tảng phần cứng) tiêu hao tài nguyên cần nghiên cứu sâu Thứ ba, việc tinh chỉnh tối ưu cài đặt cần thiết để chứng minh chất lượng tiếng nói, tăng cường hiệu giảm thiểu tiêu hao tài nguyên dẫn tới cài đặt nhiều MELP chip DSP Một hướng nghiên cứu khác khai thác thuật toán MELP nâng cao (MELPe, NATO STANAG-4591) cho tốc độ liệu thấp (không 2400bps mà hỗ trợ 1200bps, 600bps) cho chất lượng thoại tốt 64 i TÀI LIỆU THAM KHẢO Bài báo liên quan Phạm Văn Hậu, Đinh Văn Ngọc, Nguyễn Anh Đức, Thái Trung Kiên (2014), Real-time Implemetation of MELP vocoder on TI fixed-point TMS320C55X DSP, Tạp chí Nghiên cứu KH&CN Quân sự, 02-2014, p715 Tài liệu tham khảo Sen M Kou, Bob H Lee (2001), Real-Time Digital Signal Processing – Implementations, Aplications and Experiments with the TMS320C55X, A JOHN WILEY & SONS, INC., PUBLICATION, p35-75 USDoD,MIL-STD-3005,Department of Defense Telecommunications Systems Standard, 1999 Wai C Chu (2003), Speech coding algorithms – Foundation and evolution of standardized coders, A JOHN WILEY & SONS, INC., PUBLICATION, chapter 1,9,17, pp 1-32, 264-268, 454-485 MELP product provided by Signalogic http://www.signalogic.com/index.pl?page=codec_samples MELP product provided by Vocal http://www.vocal.com/audio-examples/ PHỤ LỤC A Mô hình mã hóa dự đoán tuyến tính LPC Hệ số lọc Công-tắc chuyển có âm/không âm Pitch Period Bộ tạo chuỗi xung Tạo nhiễu trắng Lọc tổng hợp Voicing Hình A-1: Tiếng nói Gain Mô hình tạo tiếng nói LPC [4] LPC dựa mô hình đơn giản hóa để tạo tiếng nói, mô tả hình A-1 Mô hình xuất phát từ quan sát tính chất tín hiệu tiếng nói nỗ lực để mô chế tạo tiếng nói người Những kết hợp quản, hình môi thể lọc tổng hợp Tín hiệu đầu vào lọc tín hiệu kích thích mô hình hóa chuỗi xung (tiếng nói có âm) nhiễu ngẫu nhiên (tiếng không âm) Do đó, tùy vào trạng thái tín hiệu có âm hay không âm, công tắc chuyển thiết lập để lựa chọn đầu vào phù hợp Mức lượng đầu điều khiển tham số gain Các mẫu tiếng nói tách thành khung rời nhau, với độ dài khung đủ lớn thuộc tính tín hiệu gần không đổi Trong khung, tham số mô hình ước lượng từ mẫu tín hiệu, bao gồm: - Voicing: xác định xem khung tiếng nói có âm hay không âm Gain: liên quan chủ yếu đến mức lượng khung Hệ số lọc: đặc tả đáp ứng lọc tổng hợp Pitch period: khung có âm, khoảng thời gian xung kích thích liên tiếp Quá trình ước lượng tham số lặp lặp lại khung tạo thành thông tin đại diện cho khung Như thế, thay phải truyền mẫu PCM, ta cần truyền tham số mô hình Nhờ việc xếp cẩn thận bit cho tham số để giảm thiểu biến dạng ta có tỉ lệ nén cao ii Việc ước lượng tham số trách nhiệm mã hóa Bộ giải mã nhận tham số sử dụng mô hình tạo tiếng nói để tổng hợp tiếng nói Mô hình hoạt động mà dạng sóng đầu hoàn toàn khác so với tín hiệu ban đầu? Trên thực tế, dạng sóng đầu sử dụng tập hợp tham số điều kiện lọc ban đầu khác nhiễu trắng tạo ngẫu nhiên Mật độ phổ tiếng nói ban đầu lọc tổng hợp thu giữ lại, mật độ phổ tiếng nói tổng hợp gần với gốc nhờ vào phổ phẳng kích thích đầu vào Cách tiếp cận loại bỏ hết thông tin pha dạng sóng ban đầu mà giữ lại biên độ phổ tần số Âm đầu tổng hợp nghe giống gốc, người nghe, pha có phạm vi tương đối thấp so với thông tin biên độ Dự đoán tuyến tính phương pháp thực hành ước lượng phổ, mật độ phổ giữ lại thông qua hệ số, hệ số sử dụng để tạo thành lọc tổng hợp Bộ lọc tổng hợp tạo hình phổ phẳng nhiễu đầu vào, để tạo mô phổ ban đầu Điều kích thích nhiễu trường hợp không âm, nhiên, trường hợp có tiếng, đầu vào chuỗi xung, chuỗi xung cách đều, điều lại vi phạm giả thiết mô hình tự hồi quy Trong mô hình tự hồi quy, tín hiệu kích thích có phổ phẳng, điều thỏa mãn nhiễu trắng xung đơn lẻ Đối với chuỗi xung, phổ tương ứng phẳng khoảng cách xung đủ lớn Sự vi phạm mô hình Tự hồi quy tín hiệu có âm hạn chế mô hình LPC Chuỗi xung cho kích thích cho công thức:    [ n - iT ] i   1, với  [n]   0, n0 n0 T chu kì, số dương Sử dụng chuỗi xung tuần hoàn để tạo dạng sóng đầu tuần hoàn, tín hiệu đầu có mật độ phổ gần giống với tín hiệu có âm Do hệ số lọc tổng hợp phải lượng tử hóa truyền đi, nên có số tính toán để trì bit-rate thấp Sử dụng dự đoán bậc 10 nói chung đủ để thu toàn phổ cần thiết Bậc dự đoán dùng cho khung không âm Đối với khung có âm ta cần sử dụng bậc cao tùy thuộc vào tương quan mẫu khác Mô hình LPC giải vấn đề cách sử dụng đầu vào chuỗi xung: chu kì kích thích đầu vào phù hợp với giá trị Pitch period ban đầu, chu kì tiếng iii nói tổng hợp với mật độ phổ tương tự gốc Theo cách này, ta tránh dự đoán bậc cao, đảm bảo mục tiêu bit-rate thấp B Thuật toán Levinson-Durbin [4] Phương trình vi phân tối ưu LPC xác định sau: M  a R [i - k ]  - R [ k ] , i 1 i s s k = 1,2, ,M Dưới dạng ma trận, ta có phương trình sau, gọi phương trình chuẩn: R s a = -rs Trong đó: Rs [1] Rs [M-1]   Rs [0]  R [1]  R [0] R s s s [M-2]  Rs       Rs [0]   Rs [ M -1] Rs [ M - 2] a   a1 a2 rs   R s [1] a M  T R s [2] R s [M ] T Giả thiết nghịch đảo ma trận tương quan Rs tồn tại, véc-tơ LPC tối ưu là: a = -Rs-1rs Phương trình cho phép ta tìm LPC ta biết giá trị tự tương quan s[n] (tính hiệu Tự hồi quy), với l = 0,1,2, ,M Phương trình chuẩn hóa giải cách tìm ma trận nghịch đảo Rs Nói chung, việc nghịch đảo ma trận tính toán tương đối dễ, có nhiều thuật toán để giải phương trình này, dựa vào ưu điểm cấu trúc đặc biệt ma trận tương quan Phần phụ lục giới thiệu thuật toán Levinson-Durbin, thuật toán tốt phù hợp cho cài đặt thực tế Xét phương trình dạng ma trận: R[1] R[M]     J   R[0]  R[1] R[0] R[M-1]  a1                   R[0]   aM     R[ M ] R[ M ] iv v Với mục tiêu xác định nghiệm cho LPC: ai, i=1,2, ,M biết giá trị tự tương quan R[i] J giá trị sai số dự đoán bình phương trung bình tối thiểu phương sai nhiễu trắng đầu vào tổng hợp trình AR Trong thực hành, giá trị tự tương quan ước lượng từ mẫu tín hiệu J thường chưa biết; nhiên thuật toán Levison-Durbin giải vấn đề tốt Đây trường hợp chiều với a1 = Do a1 = nên điều kiện lý tưởng đạt được, hạng tử  xuất vế phải để cân phương Thuật toán Levinson-Durbin tìm kiếm nghiệm cho dự đoán bậc M từ dự đoán bậc M-1 Đây trình lặp đệ quy với nghiệm dự đoán bậc tìm thấy từ đầu, dừng lặp chạm đến bậc mong muốn Thuật toán dựa hai tính chất ma trận tương quan: Dự đoán bậc - Ma trận tương quan với kích thước cho trước chứa khối ma trận tương quan bậc thấp - Thứ hai, R[M]   a0   b0   R[0] R[1]  R[1] R[0] R[M-1]  a1   b1                R[0]  aM  bM   R[ M ] R[ M ] Thì: R[1] R[M]   aM   bM   R[0]  R[1] R[0] R[M-1]  aM 11  bM 1                R[0]   a0   b0   R[ M ] R[ M ] Tức là, ma trận tương quan bất biến với thay đổi cột hàng Tính chất suy trực tiếp từ định lý ma trận tương quan Toeplitz Một ma trận vuông Toeplitz phần tử đường chéo nhau, phần tử đường chéo song song với đường chéo Dự đoán bậc không Xét phương trình R  0  J Đối với bậc không, dự đoán luôn 0; sai số dự đoán với tín hiệu Mở rộng phương trình thành chiều ta có:  R[0] R[1]  1   J   R[1] R[0] 0      ,     0 trình,   R 1 Từ tính chất thứ hai ma trận tương quan, ta có:  R[0] R[1]  0      R[1] R[0] 1    J       Ta cần giải phương trình  R[0] R[1]     J1   R[1] R[0] a(1)          Với a1(1) LPC dự đoán, số kí hiệu bậc dự đoán J1 giá trị sai số dự đoán bình phương trung bình tối thiểu có từ dự đoán bậc Như ta cần tìm hai giá trị Xét nghiệm có dạng:   1  0  a (1)      k1 1  ,       với k1 số Nhân hai vế với ma trận tương quan, ta có:  R[0] R[1]     R[0] R[1]  1   R[0] R[1]  0  R[1] R[0]  a (1)    R[1] R[0] 0  k1  R[1] R[0] 1           Thế hai phương trình dự đoán bậc vào, ta có: 0   J1   J         k1  J     0  0 Suy ra: k1   R[1]  J0 J0 Vậy ta có: a1(1)   k1 , J1  J0 (1  k12 ) Như vậy, dự đoán bậc hoàn thành Tham số k1 gọi hệ số phản chiếu (RC), suy từ bước dự đoán bậc Tương tự, ta mở rộng ba chiều sau:  R[0] R[1] R[2]    J1   R[0] R[1] R[2]    1   R[1] R[0] R[1]  a (1)      R[1] R[0] R[1]  a (1)                R[2] R[1] R[0]    J1   R[2] R[1] R[0]    1  vi Với 1 vii phần tử thêm vào để cân phương trình: a3(3)   k3 1  R[2]  a1(1) R[1] a2(3)  a2(2)  k3a1(2) Dự đoán bậc hai a1(3)  a1(2)  k3a2(2) Ta cần giải phương trình  R[0] R[1] R[2]    J   R[1] R[0] R[1] a(2)          (2)  R[2] R[1] R[0] a2    Giá trị chưa biết a1(2) , a2(2) giá trị sai số dự đoán bình phương trung bình tối thiểu J2 Nghiệm phương trình có dạng:       a(2)   a(1)   k a(1)        , với k2 RC a2(2)      J  J (1  k32 ) Thủ tục lặp lặp lại gặp bậc mong muốn Thuật toán Levinson-Durbin tóm tắt sau Đầu vào thuật toán hệ số tự tương quan R[l], đầu tham số LPC RC + Khởi tạo: l=0, ta có: R  0  J + Bước lặp: Đối với giá trị l = 0,1,2, , M - Bước 1: Tính RC thứ l: al( l )   kl ai(l )  ai(l 1)  kl al(l i 1) , k2   R[2]  a1(1) R[1]  J1 i = 1,2,3, , l – Dừng lại l = M - Bước 3: Tính toán sai số dự đoán bình phương trung bình tối thiểu liên quan đến nghiệm bậc l: Jl  Jl 1 (1  kl2 ) Cuối cùng, ta có giá trị cần tìm là: a2(2)  k2 Đặt l = l + 1, quay lại Bước a1(2)  a1(1)  k2a1(1) Giá trị LPC cuối là:  ai( M ) , J2  J1(1  k22 ) Dự đoán bậc ba Nghiệm dự đoán bậc ba có dạng:       a(3)  a (2)   (2)        k a2  a2(3)  a2(2)  a1(2)   (3)        a3    Thực tương tự bậc 2, ta có giá trị cần tìm là: k3   R[3]  a1( 2) R[2]  a2( 2) R[1] J2 l 1   R[l ]   ai(l 1) R[l - i]   J l 1  i 1  - Bước 2: Tính toán LPC dự đoán bậc l: Nhân hai vế với ma trận tương quan, biến đổi phương trình bậc 1, ta có:  J   J1   1     k            1   J1  kl  C i  1,2, , M Lượng tử hóa véc-tơ nhiều lớp (MSVQ) [4] Lượng tử hóa véc tơ (VQ): lượng tử véc-tơ Q với số chiều M kích thước N ánh xạ từ véc-tơ x không gian Ơ-cơ-lit M chiều RM vào tập hợp hữu hạn Y chứa N đầu điểm M chiều, gọi codevector codeword: Q : RM  Y , x   x1 , x2 , , x M  ,  y1 , y2 , , yN   Y , y i   yi1 , y i , , y iM  , T T i 1,2, , N Y gọi codebook lượng tử hóa Q ( x )  yi , i  1, , , N Độ phân giải (resolution): Độ phân giải lượng tử hóa véc-tơ xác định là: viii r lgN ix x Đây số bit cần thiết để xác định codeword Tính toán khoảng cách y(1) i1 Mã hóa giải mã: Một lượng tử hóa véc-tơ bao gồm hai thành phần: mã hóa giải mã Mã hóa E ánh xạ từ RM vào tập số I = {1,2, ,N}, giải mã D ánh xạ từ tập số I vào tập tái tạo Y Công việc mã hóa nhận dạng vùng mà véc-tơ đầu vào nằm Giải mã đơn giản tìm kiếm bảng để xác định codebook Hoạt động tổng quát lượng tử hóa véc-tơ mô tả qua phương trình sau: y Q( x )  x D = E{ d(X,Q(X))} = D2 i2 DK iK i1 D1 i2 D2 iK DK  RM D = E{ d(X,Q(X))} =  d(xk,Q(xk))pX(xk) k Người ta thường sử dụng phép đo khoảng cách Ơ-cơ-lít hai véc-tơ: M   ( xi  xˆi ) i 1 Cài đặt VQ: Cài đặt lượng tử hóa véc-tơ cần phải tính chi phí không gian (bộ nhớ cần thiết cho codebook – chi phí nhớ) thời gian (các hoạt động cần thiết cho tìm kiếm codeword tốt – chi phí tính toán) Để giảm thiểu chi phí cài đặt, vài cấu trúc đưa nhằm giảm chi phí không gian thời gian, hai Phụ lục giới thiệu sơ lược lược đồ cấu trúc cài đặt, gọi lượng tử hóa véc-tơ nhiều lớp, giúp tiết kiệm chi phí không gian thời gian Trong thực tế, tiết kiệm chi phí thường làm giảm hiệu hoạt động ứng dụng y(1) i1 y(2) d(x,Q(x))fX(x)dx Nếu véc-tơ đầu vào có phân bố rời rạc, hàm khối lượng xác suất pX(x) sử dụng thay thế: i1 Q( x )  x Gọi X véc-tơ ngẫu nhiên phân bố liên tục không gian RM với hàm mật độ xác suất fX(x), giá trị khoảng cách tính theo công thức: d ( x , xˆ )  x  xˆ i2 K Khoảng cách phép đo sai lệch: Một khoảng cách phép đo biến dạng giá trị không âm d(x,Q(x)) liên quan đến trình lượng tử hóa véc-tơ đầu vào x thành véc-tơ kết Q(x): D1 (2) y(K) i xˆ  Q ( x )  D ( E ( x ) )  y i 0, d ( x, Q( x))    0, Cực tiểu hóa Hình A-2: i2 Q(x) y(K) i K Mã hóa (trên) giải mã (dưới) MSVQ Hình vẽ A-2 mô tả sơ đồ mã hóa giải mã cho MSVQ với K lớp Trong giai đoạn mã hóa, véc-tơ đầu vào x so sánh với: xˆ  yi(1)  yi(22 )   yi(KK ) Trong đó, yi(l ) codevector thứ i từ codebook lớp thứ l Tức là, codebook Y1 có kích thước N1 chấp nhận codevector y i(1) , codebook Y2 có kích thước N2 chấp nhận codevector yi(2) Tất codevector có số chiều với véc-tơ đầu vào Bộ giải mã từ D1 tới DK lớp khác tạo codevector sử dụng số đầu vào.Bằng cách lựa chọn số khác nhau, mã hóa cố gắng cực tiểu hóa khoảng cách x xˆ Tập hợp số i1, i2 , , iK  dùng để cực tiểu hóa truyền tới mã hóa MSVQ, codevectors từ lớp khác tổng hợp lại thành lượng tử hóa đầu vào Với MSVQ K lớp với codebook kích thước N1, N2, , NK Độ phân giải lớp là: x xi r1  lg N1, r2  lg N2 , , rK  lg NK tiếp tục tìm số tối ưu bước Tìm kiếm theo phương pháp tổng quát tìm kiếm tuần tự, khác sang bước ta truyền tập số Và độ phân giải chung là: K K  K  r   rl   lg Nl  lg   Nl  , l 1 l 1  l 1  (bits) Giả thiết ô nhớ cần thiết để lưu codevector chi phí nhớ (MC- memory cost) cho MSVQ K lớp là: K K l 1 l 1 MC   N l   Độ phức tạp tính toán (CC) Đối với tìm kiếm toàn bộ, ta cần tính tất khoảng cách tất lớp: K CC  N N N K   N i rl i 1 Đối với tìm kiếm tuần tự, bước tìm kiếm số, số lượng tính toán là: Như thế, ta cần MC ô nhớ để lưu trữ toàn codebook Bảng A-1: Bảng so sánh MC độ phân giải thường gặp Độ phân giải(bits) VQ MSVQ lớp K CC  N  N   N K   N i MSVQ lớp 64 16 (3,3) 12 (2,2,2) 256 32 (4,4) 20 (2,3,3) 10 1024 64 (5,5) 32 (3,3,4) 15 32768 384 (7,8) 96 (5,5,5) 20 1048576 2048 (10,10) 320 (6,7,7) Bảng A-1 cho thấy so sánh kết MC độ phân giải thường gặp Cột thứ giá trị phân giải (tính bits), cột thứ hai giá trị MC VQ không ràng buộc, tính 2r, cột thứ ba thứ tư MSVQ lớp lớp tương ứng Giá trị ngoặc giá trị r1, r2 r3: r = r1+r2+r3 Quan sát từ bảng ta thấy giá trị MC cho MSVQ thấp, đặc biệt độ phân giải tăng lên Chẳng hạn, độ phân giải r = 10, VQ không ràng buộc dùng tới 16 lần khối lượng nhớ cần cho MSVQ lớp Khi số lượng lớp MSVQ tăng lên cần nhớ Nói chung, hệ thống chi phí cao cần nhiều nhớ cung cấp hiệu tốt Thủ tục tìm kiếm: MSVQ K lớp với codebook kích thước N1, N2, , NK Công việc mã hóa tìm kiếm số tốt tạo thành véc-tơ i = [i1, i2, , iK] để cực tiểu hóa sai số lượng tử hóa Có nhiều kĩ thuật tìm kiếm khác dẫn đến thủ tục thiết kế, độ phức tạp tính toán, hiệu tổng quát khác Việc tìm kiếm số tối ưu đòi hỏi phải tìm kiếm toàn (vét cạn) tất tập số Thực tế người ta thường sử dụng kĩ thuật tìm nghiệm tối ưu cục nhằm giảm độ phức tạp tính toán Tìm kiếm tuần tự, bước tiến hành tìm số tối ưu, sau cố định số tìm được, i 1 Đối với tìm kiếm theo cây, nói chung số lượng tính toán khoảng cách là: C C  N  m in ( N , M a ) N  m i n ( m i n ( N , M a ) N , M a ) N  Ở lớp thứ nhất, N1 số tính toán khoảng cách cần thiết để xác định codevector Ma Ở lớp thứ hai, N2 số tính toán khoảng cách cần thiết cho Ma N1 (tùy xem giá trị nhỏ hơn) Thiết kế codebook Thiết kế codebook dựa phép đo khoảng cách bình phương Ơ-cơ-lít nhằm cực tiểu hóa tổng khoảng cách: D   ( x k  xˆ k ) T W k ( x k  xˆ k ) , k Trong đó, Wk ma trận trọng số đường chéo liên kết với xk Mở rộng phương trình này, ta có:   ( xk  Bk y )T Wk ( xk  Bk y ) D k     xkTWk xk  y T  BkTWk xk  y T   BkTWk Bk  y k k  k  Đặt: v   BkT Wk xk , k Q   BkT Wk Bk , k Do   xkT Wk xk k xii Ta có: D  Do  yT v  yT Qy Để cực tiểu hóa D, người ta tiến hành sai phân phương trình để tìm y(l) 1 đưa kết 0, dẫn tới: v(l )  Q(l ) y (l ) hay y (l )  Q(l )  v(l ) Các nghiên cứu Q(l) ma trận đường chéo với phần tử đường chéo khác 0, nghịch đảo tồn dễ tìm [...]... mô tả triển khai cài đặt thời gian thực MELP trên mạch xử lý tín hiệu số TMS320C5509A DSK với chương trình được viết trên Code composer studio 3.3 0 5000 10000 15000 Tệp Vn_M gốc và qua xử lý của C55x MELP Vn_F gốc Kết quả đạt được của luận văn Luận văn này đã thực hiện nghiên cứu lý thuyết về mô hình nén thoại trong xử lý tiếng nói, đặc biệt đi sâu vào mô hình MELP, từ đó triển khai cài đặt thời gian. .. của các tín hiệu âm thanh 32 Chương 3 - 33 CHIP XỬ LÝ TÍN HIỆU SỐ TMS320C55xx 3.1 Giới thi u [2] Các bộ xử lý tín hiệu số với kiến trúc và lệnh được thi t kế đặc biệt cho các ứng dụng DSP đã được phát triển bởi các hãng Texas Instruments, Motorola, Lucent Technologies, Analog Devices Các bộ xử lý DSP đã được sử dụng rộng rãi trong nhiều lĩnh vực như viễn thông, xử lý tiếng nói, xử lý ảnh, thi t bị... tệp melp_ ana.c, melp_ sub.c ,melp_ chn.c, melp_ syn.c chứa hàm chính để thực thi mô hình MELP bao gồm: hàm melp_ ana()và melp_ ana_init() để phân tích MELP với đầu vào là tín hiệu âm thanh vào, đầu ra là cấu trúc tham số 56 MELP; hàm melp_ chn_write() và melp_ chn_read() dùng để ghi và đọc dòng bit của thuật toán MELP, với đầu vào là cấu trúc tham số MELP và đầu ra là cấu trúc tham số đã được cập nhật; void melp_ chn_write(struct... và bổ sung thêm 1 bộ lọc hậu kì Các thử nghiệm ở đây chỉ sử dụng mô hình MELP theo chuẩn MIL-STD-3005 4.1 Cài đặt MELP thời gian thực trên C5509 và C5510 [1] Mô hình hệ thống được sử dụng để phát triển MELP và mô hình thời gian thực được thể hiện trên hình 4-1 và 4-2 tương ứng sau đây: Môi trường phát triển CCS - Phân tích hiệu năng (MIPS, CPU, thời gian tiêu thụ) - Điều chỉnh thuật toán, đánh giá chất... đặt thời gian thực mô hình MELP trên chip TMS320C55X DSP Vn_M đã qua C55x MELP 0.4 KẾT LUẬN Vn_F xử lý qua C55x MELP Vn_F original speech Các kết quả thử nghiệm cho thấy triển khai thời gian thực này đã hoạt động hiệu quả và cho kết quả có thể so sánh được với một số sản phẩm MELP thương mại: C55x MELP có khả năng tạo ra tiếng nói có chất lượng tốt, songcông trong thời gian thực với hiệu năng cao ở... hợp các quyết định trên miền tần số Tuy nhiên, khi mô hình này không còn phù hợp với tín hiệu đầu vào, chất lượng tín hiệu đầu ra đã giảm đáng kể, đặc biệt khi có âm nhạc hay tiếng ồn trộn lẫn với tín hiệu tiếng nói Trong khi đó, mô hình MELP hoạt động khá tốt đối với một số loại tín hiệu không phải tiếng nói Chất lượng của nó chủ yếu là do sự mạnh mẽ và tính linh hoạt của các mô hình cơ bản, cho phép... hình [4] Mô hình MELP sử dụng hai bộ lọc tạo hình (hình 2-1) để trộn kích thích xung với kích thích nhiễu nhằm tạo nên tín hiệu kích thích hỗn hợp Phản hồi của các bộ lọc này được điều khiển bởi tập hợp các tham số gọi là voice strength, các tham số này được ước lượng từ tín hiệu đầu vào Các bộ lọc này quyết định số lượng xung và số lượng nhiễu trong pha kích thích ở các tần số khác nhau Trong FS MELP, ... hằng số 0.994, chúng được lượng tử hóa và được dùng để tính toán tín hiệu sai số dự đoán 2.4.8 Xác định Peakness Peakness của tín hiệu sai số dự đoán được tính toán thông qua cửa sổ 160mẫu đặt giữa mẫu cuối của khung hiện tại Giá trị Peakness được tính bởi công thức: Pitch period T(1) Bộ lọc phân tích thứ 2,3,4,5 [2.14] 2.4.7 Phân tích LP và sai số dự đoán vs1  0.5 nÕu v s  m a x ( r1 , r2 ) Mô phỏng... vi hữu ích như bộ codec (TLV320AIC23B) 4 cổng 3.5mm, các công tắc, đèn led, và SDRAM được tăng cường melp_ sync.c Chứa các hàm tổng hợp MELP, chịu trách nhiệm nhận các tham số mới của một khung thoại và tổng hợp ra tiếng nói Đường vào Mã hóa MELP Nguồn âm Giải mã MELP Đường ra Tai nghe Mô hình triển khai thời gian thực trực tuyến 4.2 Thực hiện cài đặt Thuật toán MELP được viết với trên công cụ Code composer... băng thông Hình 2-8 cho thấy hệ thống sử dụng để ước lượng voice strength cho 4 dải băng tần còn lại, bao gồm các bước như sau: + Tính toán r1  r[T(1) ] , với r[.] là tự tương quan chuẩn hóa tính toán ở công thức [2.11], và T(1) là Pitch period thực bước 1 Tín hiệu được sử dụng để tính toán tự tương quan chính là đầu ra từ bộ lọc băng tần tương ứng + Tính toán r2  r[T (1) ] Ở thời điểm này, tín hiệu

Ngày đăng: 04/08/2016, 15:36

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan