TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Viện Công nghệ Thông tin và Truyền thông

BÀI TẬP LỚN

Môn học: XỬ LÝ TIẾNG NÓI

ĐỀ TÀI 2: Xác định tần số cơ bản của tin hiệu tiếng nói
dựa trên phương pháp AMDF

Sinh viên thực hiện:
Đào Duy Thoại : 20072765

Lớp Kĩ thuật máy tính K52
Giáo viên hướng dẫn: thầy Trịnh Văn Loan

HÀ NỘI – tháng 5/2012

........... Các hàm xử lý chính ..................................................... 3 2...... Một số khái niệm ................................................ Phương pháp hàm tự tương quan. Xác định yêu cầu đề bài.................................................... 3 2........................ 2 1................ Phương pháp AMDF để xác định tần số cơ bản . Phương pháp AMDF .........................2.....2...... 7 . 6 Cài đặt chương trình ........................................................ 3 2............................. Class WaveFile ......................................................... Cơ sở lý thuyết............1.....................2. 5 2.........2.......................................... 7 3..................1................... Cấu trúc file wave ....................................... 4 2..................................................................................................................... 4 2...................2......................................................................................... 3......................................... 7 3...........1...................................................MỤC LỤC MỤC LỤC ..............................................................................................................3.....................................

.  Nguồn tuần hoàn: khi dây thanh rung. Một số khái niệm .Hiển thị tín hiệu tiếng nói đã đọc được. . tiếng nói được coi như tạo ra bởi nguồn tuần hoàn và được gọi là âm hữu thanh. . 2. .WAV.1. nhưng được phân biệt với tín hiệu âm thanh nhờ vào các đặc tính âm học có nguồn gốc từ cơ chế tạo tiếng nói. tiếng nói được coi như là tổng hợp của âm cơ bản và các tạp âm.Hiển thị hàm AMDF đã tính được. có 2 loại nguồn âm:  Nguồn tạp âm: lúc này dây thanh không rung.Đọc tín hiệu tiếng nói từ file *.Tần số cơ bản: Trong khi nguồn tạo ra tiếng nói. Xác định yêu cầu đề bài Viết chương trình thực hiện các yêu cầu sau: .Tín hiệu tiếng nói: là một dạng của tín hiệu âm thanh. F3=3F0…).Hiển thị đường biểu diễn F0 đã tính được. Trong thực tế. với tần số của các âm đó được gọi là tần số cơ bản(F0) và các hài của tần số cơ bản(F2=2F0.1. . Cơ sở lý thuyết 2. Chu kì rung của dây thanh lúc này bằng với chu kì tuần hoàn của nguồn âm.

Chu kì rung của dây thanh chính là chu kì của tần số cơ bản(T0).2.. K . Phương pháp hàm tự tương quan Đầu vào: tín hiệu x(n) rời rạc được đọc từ file wave Hàm tự tương quan được định nghĩa như sau: r (k )  N 1 k  x ( n) x ( n  k ) n 1 k  0. 2.1.1.. được biểu thị trên hình sau: To Trong đó: F0 = là tần số cơ bản.. Phương pháp AMDF để xác định tần số cơ bản Phương pháp sử dùng hàm vi sai biên độ trung bình là biến thể của việc sử dụng hàm tự tương quan. Trong xử lý tín hiệu tiếng nói thì việc xác định F0 là việc rất cần thiết. .Một số phương pháp xác định tần số cơ bản:     Dùng bộ lọc đảo Xử lý đồng hình Dựa vào hàm tự tương quan Dựa vào hàm vi sai biên độ trung bình(AMDF) 2..2.

Nếu đem phân tích tuần hoàn tín hiệu x một cách lý tưởng thì trong hàm tự tương quan sẽ xuất hiện các cực đại có giá trị bằng nhau.2. là khoảng cách giữa hai cực đại gần nhất.  < 1 Nếu đem phân tích tuần hoàn tín hiệu x theo cách trên thì trong hàm AMDF sẽ xuất hiện các cực tiểu liên tiếp có giá trị bằng nhau. Khoảng cách giữa 2 cực đại liên tiếp chính là chu kì T0 của tín hiệu x. Khoảng cách giữa 2 cực tiểu này chính là chu kì cơ bản T0 của tín hiệu x. Ngược lại tín hiệu x càng khác với tín hiệu trễ của nó thì hàm tự tương quan càng nhỏ. . Phương pháp AMDF Hàm vi sai biên độ trung bình được định nghĩa như sau: D(k) = ∑ ( ) ( ) k = 0.Trong đó: N: số điểm tín hiệu đem ra xét K: số điểm đem xét tự tương quan Ý nghĩa của hàm tự tương quan r(k) của tín hiệu x là đánh giá sự giống nhau của tín hiệu x và tín hiệu x bị trễ đi k mẫu.1. và như vậy tín hiệu x càng có khả năng tuần hoàn với chu kỳ k mẫu. 2.1…K Hoặc: 1/ 2  1 N 1 2 D(k) =    [ x(n)  x(n  k )]   N n 0  =  2[r (0)  r (k )]1/ 2 k = 0.2…K . Do vậy các tín hiệu ngẫu nhiên với tính chất không ổn định sẽ có hàm tự tương quan bằng 0. Nếu như tín hiệu x và tín hiệu trễ đó càng giống nhau thì giá trị của hàm tự tương quan càng lớn.2.

Cấu trúc của một file wave thông thường có 2 phần như sau: Header Data Trong đó phần header gồm 44 bytes có cấu tạo như sau: . Cấu trúc file wave File wave chứa tín hiệu tiếng nói được sử dụng là đầu vào cho bộ phân tích AMDF.3.2.

public short GetNextSample_16bit() : trả về giá trị của 16bit tiếp theo (dùng để đọc file wave 16 bit). Các hàm xử lý chính Đoạn chương trình tính hàm vi sai biên độ trung bình: for (int k = 0. Cài đặt chương trình 3. WRITE). for (int m = 0.Abs(DataTDomain[m + vt] DataTDomain[m + vt + k]). 3.3. Class WaveFile Lớp này chứa các hàm đọc và xử lý file wave: private void InitMembers() : khởi tạo các giá trị mặc định ban đầu của file wave public String Open(WAVFileMode pMode) : đọc file wave theo chế độ tùy chọn (READ.2.1. m++) { d[k] += Math. m < n-k. k < p. k++) { d[k] = 0. public short GetNextSample_8bit(): trả về giá trị của 8bit tiếp theo (dùng để đọc file wave 8bit0. } } Dựa vào đoạn chương trình trên ta xây dựng nên hàm tính AMDF cho một đoạn tín hiệu: . đọc các thông số từ header của file và tạo biến trỏ đến data .

int vt) k = 0. ..void CaculateWindowAMDF( int p.2. ta dễ dàng tìm được F0 bằng công thức: F0= Fs/k0. duyệt mảng và tìm ra cực tiểu đầu tiên gặp được trong mảng đó. k0 là vị trí mẫu đạt cực tiểu đầu tiên của hàm AMDF. void DrawFunctionF0(): Để vẽ hàm F0 ta tính tần số F0 cho cửa sổ AMDF có độ dài tín hiệu tương đương với 10ms.1.SampleRateHz / 100..n-1 : độ lớn của cửa sổ AMDF vt: vị trí bắt đầu tính AMDF void DrawAMDF(): Dựa trên mảng AMDF tính được ở trên vẽ hàm AMDF private int FindF0(int p. Trong dó : Fs là tần số lấy mẫu.2. Sau khi có được vị trí cực tiểu đầu tiên của hàm AMDF. Dịch dần cửa sổ này đến hết tín hiệu sẽ được hàm F0. trả về vị trí của mẫu đó trong mảng.double []dt): Với mảng AMDF đầu vào.1.p-1 m= 0. int numberSampPer10ms = waveFile. int n.

wav. tần số cơ bản F0 tính được là 133.33 Hz. .Giao diện chương trình như sau: Với file mẫu A96.

Sign up to vote on this title
UsefulNot useful