Báo cáo môn xử lý tiếng nói đề tài 5 xác định tần số formant dùng xử lý đồng hình - Pdf 23


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ÁO CÁO MÔN XỬ LÝ TIẾNG NÓI

Đề tài 5: Xác định tần số formant dùng xử lý đồng hìnhGiảng viên hướng dẫn: PGS. TS Trịnh Văn Loan

Sinh viên thực hiện :

Trịnh Duy Tân 20082329
Nguyễn Trọng Hiếu 20080941

Lớp: TTM – K53

- Hiển thị kết quả formant đã tính được.

Nhóm sinh viên thực hiện:
Trịnh Duy Tân – 20082329
Nguyễn Trọng Hiếu – 20080941

Ngôn ngữ sử dụng: C#
Công cụ lập trình: Microsoft Visual Studio 2010

I. Cấu trúc file *.wav, đọc file *.wav
1. Cấu trúc file *.wav
Tập tin wave là một dạng tập tin dùng để lưu trữ dữ liệu âm thanh số
(dạng sóng) và nó là một trong những định dạng phổ biến nhất của hệ điều
hành Windows. Tập tin wave thuộc chuẩn RIFF ( Resource Interchange File
Format - dạng tập tin tài nguyên có thể trao đổi) và đặc điểm của những tập
tin thuộc chuẩn RIFF đó là nó sẽ nhóm nội dung của tập tin thành các khối
riêng biệt và mỗi một khối sẽ gồm một header (dùng để qui định kiểu và
kích thước của khối ) và các byte dữ liệu.
Tập tin wave có 2 dạng là dạng nén và dạng không nén (dạng chuẩn) vì thế
trong đề tài này chúng ta sẽ chỉ đề cập đến dạng chuẩn của tập tin wave tức
là dạng không nén.
Cấu trúc file wave gồm 3 khối: khối mô tả dạng RIFF, khối thuộc tính
“fmt” và khối dữ liệu “data” trong đó khối thuộc tính “fmt” và khối dữ liệu
“data” là 2 khối con của khối mô tả dạng RIFF.

a. Khối mô tả dạng RIFF:
Khối này xác định dạng RIFF và có kích thước là 12 byte gồm các
trường:
• ChunkID:
Kích thước: 4 byte

Chức năng: cho biết số mẫu trên 1 s và đây chính là tần số lấy mẫu của
tập tin wave.
(8000, 10000, 44100…)
• ByteRate:
Kích thước: 4 byte
Chức năng: cho biết số byte trên 1 s ứng với tần số lấy mẫu trên.
(ByteRate = SampleRate * NumChannels * (BitsperSample / 8))
• BlockAlign:
Kích thước: 2 byte
Chức năng: cho biết số byte của 1 mẫu gồm tất cả các kênh.
(BlockAlign = NumChannels * BitsPerSample / 8)
• BitsPerSample:
Kích thước: 2 byte
Chức năng: cho biết số bit trên 1 mẫu chỉ tính cho 1 kênh.
( 8 bit=8, 16 bit=16, v.v)

c. Khối dữ liệu “data”:
• Subchunk2ID:
Kích thước: 4 byte
Chức năng: chứa chuỗi “data” (giá trị 0x64617461 kiểu big-endian).
• Subchunk2Size:
Kích thước: 4 byte
Chức năng: cho biết kích thước của dữ liệu âm thanh thô trong trường
data.
(Subchunk2Size = NumSamples * NumChannels * BitsperSample / 8)
• Data: trường data chứa các byte dữ liệu âm thanh và các byte dữ liệu này
sẽ nhóm thành các mẫu, mỗi mẫu có 1 hoặc 2 kênh. Tùy vào số kênh của
một mẫu (xác định bởi trường NumChannels) và số bit trên 1 kênh (xác định
bởi trường BitsPerSample) mà ta sẽ xác định được số byte của 1 mẫu. Phần dữ liệu sẽ được đọc vào mảng leftChannel (với trường hợp 1 kênh -
mono) hoặc mảng leftChannel và rightChannel (với trường hợp 2 kênh -
stereo). Khi đọc dữ liệu cần chú ý dữ liệu lưu trong file theo dạng little-
endian. Sử dụng hàm ChuyenSo:

để đọc chính xác dữ liệu từ file.
II. Xác định đáp ứng tần số của tuyến âm bằng phương pháp xử lý
đồng hình
Xử lý đồng hình:

Sơ đồ khối xử lý đồng hình: 1. Bộ lọc hiệu chỉnh H(z):
H(z) = 1 - a.z
-1
, a < 1 và thường được chọn cỡ 0.95 – 0.98
ở đây ta chọn a = 0.95.
Tín hiệu output = input * h(n) (*: phép nhân chập)
output(n) = input(n) - 0.95 input(n-1). 2. Cửa sổ Hamming W(n)
Nhân với cửa sổ Hamming:

)
=%&'(
)*
%{log%[+
(
,
)
]}
Từ đó để tính H(w) ta biến đổi Fourier
-
(.) rồi lấy 10 mũ.

7. Tính toán formant
Formant được xác định bằng các điểm cực đại của đáp ứng tần số (chính là
tần số tại vị trí các điểm cực đại). Để tìm được các cực đại này ta dùng
phương pháp đạo hàm, công thức đạo hàm:
/
0
(
1
)
=%
y(x+dx)%–%y(x)
23
%4 5%67 8 0
Ở đây tín hiệu rời rạc nên dx nhỏ nhất là = 1
Công thức đạo hàm trở thành : y’(x) = y(x+1) – y(x)
Cực đại là điểm mà tại đó y’(x) chuyển dấu từ dương sang âm, từ đó xác
định được các cực đại => tìm được các formant


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status