nhận dạng tiếng nói dùng giải thuật trích đặc trưng mfcc và lượng tử vector trên kit dsktms320c6713 của ti

111 577 1
nhận dạng tiếng nói dùng giải thuật trích đặc trưng mfcc và lượng tử vector trên kit dsktms320c6713 của ti

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ HUỲNH LÂM ĐỒNG NHẬN DẠNG TIẾNG NÓI DÙNG GIẢI THUẬT TRÍCH ĐẶC TRƯNG MFCC VÀ LƯỢNG TỬ VECTOR TRÊN KIT DSKTMS320C6713 CỦA TI NGÀNH: KỸ THUẬT ĐIỆN TỬ - 605270 S KC 0 Tp Hồ Chí Minh, tháng 09 năm 2013 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ HUỲNH LÂM ĐỒNG NHẬN DẠNG TIẾNG NÓI DÙNG GIẢI THUẬT TRÍCH ĐẶC TRƯNG MFCC VÀ LƯỢNG TỬ VECTOR TRÊN KIT DSKTMS320C6713 CỦA TI NGÀNH: KỸ THUẬT ĐIỆN TỬ - 60520203 Hướng dẫn khoa học: TS HOÀNG TRANG Tp Hồ Chí Minh, tháng 09/2013 LÝ LỊCH KHOA HỌC I LÝ LỊCH SƠ LƯỢC: Họ & tên: Huỳnh Lâm Đồng Giới tính: nam Ngày, tháng, năm sinh: 31/07/1987 Nơi sinh: TP HCM Quê quán: Lâm Đồng Dân tộc: Kinh Chỗ riêng địa liên lạc: 230/4/10 Phan Văn Tri /̣ P12/ Q.Gò Vấp/TP HCM Điện thoại quan: Điện thoại nhà riêng: 0838415874 Fax: E-mail: huynhlamdong@gmail.com II QUÁ TRÌNH ĐÀO TẠO: Trung học chuyên nghiệp: Hệ đào tạo: Nơi học (trường, thành phố): Ngành học: Thời gian đào tạo từ ……/…… đến ……/ …… Đại học: Hệ đào tạo: Chính quy Thời gian đào tạo từ 09/2005 đến 12/2010 Nơi học (trường, thành phố): ĐH Sư Phạm Kỹ Thuật TP HCM Ngành học: Công nghệ điện tử viễn thông Tên đồ án, luận án môn thi tốt nghiệp: Wimax tiêu chuẩn kỹ thuật ứng dụng Wimax Ngày & nơi bảo vệ đồ án, luận án thi tốt nghiệp: Tháng 10/2010, ĐH SPKT Người hướng dẫn: Lê Ngọc Hồ Nguyên III QUÁ TRÌNH CÔNG TÁC CHUYÊN MÔN KỂ TỪ KHI TỐT NGHIỆP ĐẠI HỌC: Thời gian 2010 đến 08/2013 Nơi công tác Công việc đảm nhiệm Công ty Thông Tin Điện Tử Z755 i Trợ lý kỹ thuật LỜI CAM ĐOAN Tôi cam đoan công trình nghiên cứu Các số liệu, kết nêu luận văn trung thực chưa công bố công trình khác Tp Hồ Chí Minh, ngày 20 tháng năm 2013 (Ký tên ghi rõ họ tên) Huỳnh Lâm Đồng ii LỜI CẢM ƠN Em xin chân thành cảm ơn thầy Hoàng Trang tận tình hướng dẫn em việc thực luận văn Thầy giành quan tâm, thời gian chia sẻ gần gũi để giúp em hiểu giải khó khăn trình thực đề tài nhận dạng tiếng nói Thầy cung câp tài liệu định hướng để em hoàn thành luận văn sớm Em xin chân thành cảm ơn khoa Điện – Điện tử đặc biệt môn Điện tử tạo điều kiện để em có thể thực đề tài Mình xin cảm ơn bạn lớp cao ho ̣c Điê ̣n – Điê ̣n Các bạn chia sẻ kinh nghiệm hiểu biết với mình gặp khó khăn khúc mắc chưa thể giải Cuối với tấ t cả tấ m lòng xin cảm ơn gia đình quan tâm, chia sẻ động viên để hoàn thành chương trình học cách tốt iii TÓM TẮT LUẬN VĂN Trong nhiều thập niên gần đây, việc điều khiển thông qua nhận dạng tiếng nói tự động (ASR) nhận quan tâm lớn thông qua nhiều ứng dụng Có nhiều giải thuật đưa trình trích đặc trưng, huấn luyện nhận dạng Thuật toán nhận dạng tiếng nói thông qua trình trích đặc trưng hệ số MFCC (Mel frequency cepstrum coefficient) xây dựng Codebook phương pháp lượng tử vector hai phương pháp đặt tảng cho thuật toán nhận dạng tiếng nói khác chúng sử dụng cách rộng rãi nhiều ứng dụng Trong luận văn này, đánh giá thuật toán nêu thông qua việc xây dựng chương trình nhúng KIT DSP, mà cụ thể KIT DSKTMS320C6713 với tảng xử lý TMS320C6000 Nội dung luận văn chia thành hai phần chính: phần đầu luận văn trình bày nội dung thuật toán trích đặc trưng MFCC lượng tử vector nhận dạng tiếng nói Đồng thời, xây dựng phần mềm MATLAB mô giải thuật để có hình dung khái quát trình nhận dạng Phần thứ hai luận văn xây dựng chương trình nhúng KIT DSKTMS320C6713 Chương trình nhúng gồm có hai phần: huấn luyện nhận dạng Trong hai phần, tiếng nói ghi âm xử lý trực tiếp thông qua IC CODEC mã hóa âm AIC2381, liệu số hóa 16bit chuẩn bị cho trình huấn luyện nhận dạng Ngoài để đẩy nhanh trình tính toán đánh giá, liệu tiếng nói lưu thành file header CCS KIT DSP lấy liệu trực tiếp từ file trình tính toán Quá trình đánh giá thực thông qua việc thay đổi trực tiếp thông số file liệu Bộ xử lý DSP C6713 với kiến trúc tập lệnh VLIW khả xử lý dấu chấm động floating-point; việc đảm bảo độ xác cao cho phép tính Phạm vi giá trị phép tính mở rộng phạm vi Single (32bit) double (64bit) Các liệu trình tính toán bao gồm codebook huấn luyện mẫu âm cần nhận dạng lưu nhớ SDRAM 16MB Số lượng từ vựng cần nhận dạng phụ thuộc vào iv dung luợng nhớ Bộ nhớ mở rộng thông qua giao tiếp nhớ mở rộng bên EMIF Quá trình huấn luyện sử dụng liệu tiếng nói ghi âm trực tiếp KIT từ file liệu lưu sẵn Dữ liệu xử lý trích đặc trưng MFCC thành tập hệ số cho từ cần huấn luyện Thông qua giải thuật lượng tử vector xây dựng codebook cho từ cần huấn luyện dựa hệ số MFCC Trong trình nhận dạng liệu tiếng nói ghi âm trực tiếp KIT từ file liệu lưu sẵn Dữ liệu xử lý trích đặc trưng MFCC thành tập hệ số cho từ cần nhận dạng Khoảng cách Euclide tính toán tập hệ số so với tập huấn luyện gồm codebook lưu phần Khoảng cách Euclide nhỏ xác định mẫu tiếng nói cần nhận dạng Đánh giá thuật toán nhận dạng dựa kết nhận dạng tập liệu từ số đếm từ đến mười và từ “trái, phải, trên, dưới, trước, sau” Mỗi từ đánh giá 100 lần Thuật toán đánh giá sở điều chỉnh thông số trình huấn luyện nhận dạng: kích thước frame âm thanh, khoảng chồng lấn frame, kích thước codebook Để tăng tính xác, khách quan trình đánh giá liệu phần huấn luyện nhận dạng lấy mẫu theo phương pháp từ ghi âm, xử lý, tính toán sai số iv ABSTRACT In recent decades , the control through automatic speech recognition ( ASR ) received great attention by many applications There are many algorithms given in the quote process characteristics , training and recognition Speech recognition algorithm through characteristic coefficients extracted MFCC ( Mel frequency cepstrum coefficient ) and the construction of codebook by vector quantization methods are based two methods for speech recognition algorithms and their other been widely used in many applications In this essay , I will evaluate the above algorithms through building programs on embedded DSP KIT , KIT DSKTMS320C6713 in particular with a platform TMS320C6000 processor The contents of the thesis is divided into two main parts : the first part of the paper presents algorithms extract the contents of MFCC features and vector quantization in speech recognition At the same time , building simulation software MATLAB algorithms to visualize an overview of the identification process The second part of the thesis will build on KIT DSKTMS320C6713 embedded programs Embedded program consists of two parts : training and recognition In both sections , the voices were recorded and processed directly through IC AIC2381 audio codec , 16bit digitized data prepared for the training and recognition In addition to accelerating the calculation and assessment , the voice data is stored in the file header on the CCS KIT DSP will retrieve data directly from the file in the calculation process The evaluation process can be done through changing the parameters directly on the data file C6713 DSP processor with VLIW instruction set architecture and the ability to handle floating point floating-point , this ensures high precision calculations Scope value calculations can be extended within single ( 32-bit ) or double ( 64bit ) The data in the calculation process includes trained codebook and to recognize sound patterns that are stored on 16MB SDRAM memory The number of iv required vocabulary recognition depends on the memory capacity The memory can be expanded via memory interface EMIF external expansion Training process using voice data is recorded directly in the KIT or from stored data files Data processing extract MFCC features into a set of coefficients for each word training Through the algorithm for vector quantization codebook built from need -based training MFCC coefficients In the process of identifying the voice data is recorded directly on the KIT or from stored data files Data processing extract MFCC features into a set of coefficients for each word to be recognized Euclidean distance is computed on the set of coefficients from the training set consists of codebook has stored in the previous section Smallest Euclidean distance to determine the required sample voice recognition Rating recognition algorithm based on the recognition results from the data set the count from one to ten and and the words " trái (left) , phải (right), (top) , (bottom) , trước (front), sau (back)" Each word is evaluated 100 times The algorithm is evaluated on the basis of adjusting the parameters of the training process and identity : the frame size of audio , some overlap between the frames , the codebook size To increase the accuracy and objectivity of the assessment process , the data in both the training and recognition is sampled by the same method of recording , processing , calculation errors iv MỤC LỤC Trang tựa Quyết định giao đề tài Lý lịch cá nhân Lời cam đoan Cảm tạ Tóm tắt Mục lục Danh sách chữ viết tắt Danh sách hình Danh sách bảng Chƣơng TỔNG QUAN 1.1 Giới thiêụ 1.2 Tình hình nghiên cƣ́u và ngoài nƣớc 1.3 Tính cấp thiết đề tài 1.4 Mục tiêu nghiên cứu luận văn 1.5 Nhiêm ̣ vu ̣ luâ ̣n văn 1.6 Đối tƣợng phạm vi 1.7 Cấu trúc luận văn Chƣơng CƠ SỞ LÝ THUYẾT 2.1 Tín hiệu tiếng nói 2.2 Phân loa ̣i các phƣơng pháp nhâ ̣n da ̣ng âm 2.2.1 Phương pháp ngữ âm 2.2.2 Phương pháp nhâ ̣n da ̣ng mẫu 2.2.3 Phương pháp trí thông minh nhân ta ̣o 2.2.4 Mạng noron và ứng dụng nhận dạng âm 2.3 Thuâ ̣t toán trích đă ̣c trƣng MFCC 2.3.1 Frame Blocking 2.3.2 Trích đặc trưng MFCC (Mel-scale Frequency Cepstral Coefficient) 2.3.2.1 Windowing 2.3.2.2 Phân tích phổ FFT 2.3.2.3 Mel frequency filter Bank 2.3.2.4 Phân tích cepstral 2.4 Lƣơ ̣ng tƣ̉ vector VQ Chƣơng THƢ̣C HIỆN HỆ THỐNG NHẬN DẠNG TIẾNG NÓI TRÊN MATLAB v TRANG i ii iii iv v vi vii viii 1 5 6 8 12 12 13 14 15 16 16 20 22 23 25 28 34 39 Bảng 8:Kết nhận dạng mô hình Codebook gồm 16 codeword, 256 mẫu frame, chồng lấn 156 mẫu, số lượng từ vựng từ có tỉ lệ nhận dạng trung bình 96% 1 94 100 96 5 100 4 92 94 Bảng mô tả kết mô hình nhận dạng tiếng nói sử dụng thuật toán trích đặc trưng MFCC lượng tử vector VQ với kích thước Codebook gồm 16 codeword, 256 mẫu frame âm thanh, chồng lấn 156 mẫu, với số lượng từ vựng nhỏ gồm từ (số đến 6) Mô hình xây dựng Kit DSK TMS320C6713 Hàng dọc từ dùng để nhận dạng, số kết nhận dạng thể đường chéo, hàng ngang thể số lần nhận dạng sai Kết nhận dạng đạt tỉ lệ trung bình 96% 81 Chƣơng 5: KẾT LUẬN Dựa kết nhận dạng tiến hành phần cứng DSK TMS320C6713 ta nhận thấy kết nhận dạng sau: Chương trình nhận dạng đạt kết tốt mô hình Codebook gồm có 16 codeword áp dụng frame âm 256 mẫu, chồng lấn 156 mẫu; có tỉ lệ nhận dạng 89.8% Kết nhận dạng trường hợp sử dụng Codebook codeword hơn; trường hợp sử dụng codeword, 200 mẫu frame âm thanh, chồng lấn 100 mẫu có tỉ lệ 78.8% Điều giải thích giảm kích thước Codebook sai số lượng tử tăng lên điều dẫn đến tỉ lệ nhận dạng Giống trình số hóa tín hiệu tỉ lệ nhận dạng tăng không tuyến tính với gia tăng kích thước Codebook Ở giá trị lớn gia tăng thêm kích thước Codebook không làm thay đổi nhiều tỉ lệ nhận dạng Trong mô hình sử dụng kích thước Codebook ta xét ảnh hưởng số mẫu frame âm số mẫu chồng lấp: trường hợp 256 mẫu frame chồng lấp 156 mẫu cho kết tốt ba trường hợp Trường hợp 200 mẫu frame âm thanh, chồng lấn 100 mẫu cho kết Điều cho thấy kích thước frame độ chồng lấn mẫu có ảnh hưởng đến kết nhận dạng Trong mô hinh kết nhận dạng không từ Các tỉ lệ ta lấy trung bình từ Nếu xét riêng từ, có từ đạt tỉ lệ cao có từ lại đạt tỉ lệ thấp Nhưng chuyển sang mô hình nhận dạng với kích thước Codebook thay đổi tỉ lệ nhận dạng từ tăng lên rỏ rệt Tỉ lệ nhận dạng từ tăng lên nhiều số lượng từ vựng giảm xuống từ 16 từ từ Đối với trường hợp mô hình nhận dạng Codebook gồm 16 codeword, 256 mẫu frame, chồng lấn 156 mẫu, số lượng từ vựng từ có tỉ lệ nhận dạng trung bình 96% Tỉ lệ cao so với mô hình số từ vựng 16 từ tương ứng với 89.8% Từ ta rút kết luận việc nhận dạng tiếng nói 82 cách trích đặc trưng MFCC lượng tử vector VQ gặp vấn đề hạn chế số lượng từ vựng Phương pháp tối ưu với số lượng từ vựng nhỏ, sai số nhiều tập từ vựng nhiều Ưu điểm nhận dạng tiếng nói dùng phương pháp trích đặc trưng MFCC lượng tử vector VQ trình tính toán thực không phức tạp với độ xác cao yêu cầu số lượng từ vựng không lớn Kết nhận dạng tốt lượng từ vựng tăng lên khí áp dụng số phương pháp khác hiệu HMM hày dùng mạng Noron Hƣớng phát triển luận văn: Việc đánh giá phương pháp nhận dạng tiến hành nhiều thông số khác như: kích thước FFT, mô hình lọc Mel gồm số lọc kiểu lọc, loại cửa sổ sử dụng trình tiền nhấn… Việc đánh giá tổng hợp thông số đưa giải pháp nhận dạng tối ưu cho phương pháp nhận dạng Thực nhận dạng tiếng nói sử dụng phương pháp khác HMM, mạng Noron Từ rút ưu nhược điểm phương pháp Rút kết luận trường hợp cụ thể phương pháp sử dụng 83 TÀI LIỆU THAM KHẢO TIẾNG VIỆT GS.TSKH Bạch Hưng Khang, Nghiên cứu phát triển công nghệ nhận dạng, tổng hợp xử lý ngôn ngữ tiếng Việt Viện công nghệ thông tin Bài giảng xử lý tiếng nói Trường Đại Học Hàng Hải Việt Nam – Khoa Công Nghệ Thông Tin – Bộ Môn Hệ Thống Thông Tin, 2011 Lê Bá Dũng, Tài liệu tham khảo mô học Xử lý tiếng nói Khoa Công nghệ Thông tin – Trường Đại học Hàng Hải Việt Nam Ths Phùng Chí Dũng, Nhận dạng tiếng nói dùng mạng Noron nhân tạo PGS.TS Hoàng Đình Chiến, Nhận dạng tiếng Việt dùng mạng neuron kết hợp trích đặc trưng dùng LPC AMDF, 2005 Hồ Tú Bảo, Lương Chi Mai, Về xử lý tiếng Việt công nghệ thông tin Viện Công nghệ Thông tin – Viện khoa học công nghệ tiên tiến Nhật Bản Nguyễn Quốc Đính, Luận văn Thiết kế nhận dạng tiếng nói dựa tảng DSP TMS320C2812 ĐH Bách Khoa TPHCM Đặng Ngọc Đức, Luận văn Nghiên cứu ứng dụng mạng neuron mô hình Markov ẩn nhận dạng tiếng Việt ĐH KHTN, ĐH Quốc Gia Hà Nội Hà Thúc Phùng, Luận văn Nhận dạng tiếng Việt dùng mô hình Markov ẩn ĐH Bách Khoa TP.HCM 10 Nguyễn Thanh Phương, Luận văn Nhận dạng tiếng nói dùng mô hình Markov ẩn ĐH Bách Khoa TP.HCM 11 Một số tài liệu Web tải Website: mica.com.vn, bk02.sourceforge.net/vspeechsdk …… TIẾNG NƢỚC NGOÀI Mohamed D., Jean-Paul H., Amrance H Improved vector quantization approach for discrete HMM speech recognition system The international Arab Journal of Information technology 84 Lawrence R., Biing-Hwang J Fundamentals of speech recognition Prentice-Hall International, Inc The HTK Book (Version 3.4) Cambridge University Engineering Department Andrew W Hidden Markov Models School of Computer Science Carnegie Mellon University TMS320C6000 Chip Support Library API Reference Guide Texas Instruments Incorporated, 2004 Jeremy Bradbury Linear Predictive Coding.Prentice-Hall International Inc ,December 5, 2000 L Tien Thuong, and H.Dinh Chien Vietnamese Speech Recognition Applied to Robot Communications National University of Ho Chi Minh City, Jan,2004 Rulph Chassaing Digital Signal Processing and Applications with the C6713 and C6416 DSK A John wiley & Sons, INC, Publication, 2004 Một số tài liệu Web tải website: TI.com, spectrumdigital.com, cmusphinx.sourceforge.net…… 85 PHỤ LỤC Một số hàm tính toán quan trọng chip DSP TMS320C6713 Hàm tính toán biến đổi Fourier nhanh /* Ham de tinh toan bien doi Fourier nhanh */ void fft (struct buffer *input_data, int n, int m) {/* Du lieu am thanh, n = 2^m, m = tong so tang*/ int n1,n2,i,j,k,l,row_index; /* Khai bao bien*/ float xt,yt,c,s,e,a; /* Khai bao bien luu gia tri tam * xt,yt cho phan thuc phan ao * c cho cosine * s cho sine * e va a cho tin toan ngo vao cosine va sine */ for ( row_index = 0; row_index < row_length; row_index++) { /* Cho moi frame */ /* Lap qua tat ca cac tang */ n2 = n; for ( k=0; kdata[row_index][i].real = input_data->data[row_index][i].real+input_data>data[row_index][l].real; yt = input_data>data[row_index][i].imag - input_data>data[row_index][l].imag; 86 input_data->data[row_index][i].imag = input_data->data[row_index][i].imag+input_data>data[row_index][l].imag; input_data->data[row_index][l].real = c*xt + s*yt; input_data->data[row_index][l].imag = c*yt - s*yt; } } } /* Dao bit */ j = 0; for ( i=0; idata[row_index][j].real = input_data->data[row_index][i].real; input_data->data[row_index][i].real = xt; yt = input_data->data[row_index][j].imag; input_data->data[row_index][j].imag = input_data->data[row_index][i].imag; input_data->data[row_index][i].imag = yt; } } } return; } Hàm tính toán Log phổ tần số Mel /* Ham tinh toan Log cua tan so Mel */ void log_energy(struct mfcc *co_eff) { int i,j; /* Bien dem*/ for ( i=0; idata[i][j]); /* Tinh toan log cua he so */ } } 87 } Hàm tính toán biến đổi Cosine rời rạc /* Ham tinh toan bien doi Cosine roi rac */ void mfcc_coeff(struct mfcc *mfccct, struct mfcc *co_eff) { int i,j,k; /* Bien dem */ for ( i=0; idata[i][j] + co_eff->data[i][k]*cos((double)((PI*j*(k1/2))/Number_Of_Filters)); } } } } Hàm tính toán sai số Eucidean chuyển thành vector /* Ham tinh toan sai so Euclidean va chuyen vector */ void mfcc_vect(struct mfcc *mfccct, float *mfccvector) { int i,j; /* bien dem */ for ( i=0; i< Number_Of_Filters; i++ ) { /* So bo loc*/ mfccvector[i] = 0; /* Khoi tao gia tri bang */ for (j=0; j< row_length; j++) { mfccvector[i] = mfccvector[i] + ((mfccct>data[j][i])*(mfccct->data[j][i])); } } } Hàm tính toán phổ công suất tín hiệu ngõ vào /* Ham tinh toan cong suat cua tin hieu ngo vao */ power_spectrum(struct buffer *input_data) { int i,j; /* Bien dem*/ for (i=0; idata[i][j].real = ((input_data>data[i][j].real)*(input_data->data[i][j].real))+ ((input_data->data[i][j].imag)*(input_data>data[i][j].imag)); } } return; /* Tro ve chuong trinh chinh */ } Hàm tính toán tần số Mel /* Ham tinh toan tan so Mel */ void mel_freq_spectrum(struct buffer *input_data, struct mfcc *mfcc_coeff) { int i,j,k; /* Bien dem*/ for ( j=0; jdata[j][k].real*0.0); } else if ( k > H[i] && k < H[i+1] ) { mfcc_coeff->data[j][i] = mfcc_coeff>data[j][i] + (input_data->data[j][k].real*((k-H[i])/(H[i+1] - H[i]))); } else if ( k > H[i+1] && k < H[i+2] ) { mfcc_coeff->data[j][i] = mfcc_coeff>data[j][i] + (input_data->data[j][k].real*((H[i+2]k)/(H[i+2] - H[i+1]))); } } } } return; /*Tro ve chuong trinh chinh */ } Hàm tách tín hiệu âm va sau thực Framing windowing 89 /* Ham tach tin hieu am va sau thuc hien Framing va Windowing */ int framing_windowing(short sample, struct buffer *real_data) { int signal; int ret = 0; /* gia tri tra ve */ signal = detect_envelope(block_dc(sample));/*tach muc nang luong cua mau am dung de tach vi tri bat dau cua tu*/ if (signal_on) { if ( (column_index data[row_index][column_index].real = ((float)sample)*hamming_window[column_index]; } if ( (column_index >= 100) && ((row_index+1) < row_length)) { /* Thuc hien windowing va Framing */ real_data->data[row_index+1][column1_index].real = ((float)sample)*hamming_window[column1_index]; column1_index++; /* Tang mau cho frame thu hai chong lan 156 mau*/ } if ( (column_index >= 200) && ((row_index+2) < row_length )) { /* Thuc hien windowing va Framing */ real_data->data[row_index+2][column2_index].real = ((float)sample)*hamming_window[column2_index]; } column_index++; /* Tang so mau cua frame dau tien */ if ( column_index >= column_length ) { column_index = column1_index; column1_index = column2_index; row_index++; /* Tang chi so hang */ column2_index = 0; } 90 if ( row_index > row_length) { ret = row_index; //khi da day frame thi tra ve chi so row_index signal_on = 0; row_index = 0; column_index = 0; column1_index = 0; column2_index = 0; } } else if (signal > threshold_high) { /* Neu tin hieu ngo vao du lon */ /* Thuc hien windowing va Framing */ real_data->data[row_index][column_index].real = ((float)sample)*hamming_window[column_index]; column_index++; /* Tang so mau */ signal_on = 1; /* Bat dau thu tin hieu */ } return ret; /* Tro ve chuong trinh chinh */ } Hàm huấn luyện theo phƣơng pháp lƣợng tử vector void vector_quantization(struct mfcc *data,struct cbook *yy ) { //Khoi tao gia tri zero ban dau for ( i=0; i < size_cbook ; i++ ) { /* Tong so frame */ for ( j = 0; j < Number_Of_Filters ; j++) { /* Tong so mau mot frame */ codebk [i][j] = 0.0; /* Khoi tao phan thuc */ yy->codebook [i][j] = 0.0; /* Khoi tao phan ao*/ } } 91 mtemp=1; //ban dau khoi tao codebook vector /*Chuong trinh tinh gia tri trung binh cua 100 frame lam codeword cua codebook dau tien*/ for (k=0;kcodebook[j][k]); if(dist1 < dist2){ dist2=dist1; //Cap nhat gia tri meo nho nhat index=j; //luu chi so codeword phu hop nhat voi frame dang xet } } ++bin[index]; //tang don vi tai vi tri codeword co sai so voi frame nho nhat for(k=0;kdata[i][k]; //cong don cac frame gan giong nhat totd1=totd1+dist2; //cong don gia tri meo nho nhat cua cac frame doi voi codebook } /* ket thuc i>=row_length */ //Chuong trinh cap nhat lai codebook for(j=0;j 0) { for(k=0;kcodebook[j][k]=codebk[j][k]; } } } 93 totd1/=(float) row_length*Number_Of_Filters; //meo trung binh tren phan tu drel=(totd2-totd1)/totd1; flag1 = 1; if(drel > 0.001) { //do giam sai so nho hon 1000 lan so voi gia tri sai so thi dung chuong trinh (flag1=1) flag1 = 0; totd2=totd1; } } /* chuong trinh ket thuc flag1=1 */ } /* ket thuc mtemp>=cb_size */ } 94

Ngày đăng: 10/10/2016, 02:21

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

Tài liệu liên quan