1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

15 938 6
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 501,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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ình

Giả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

Hà Nội, tháng 04 năm 2012

Trang 2

Mục lục

I Cấu trúc file *.wav, đọc file *.wav 4

1 Cấu trúc file *.wav 4

a Khối mô tả dạng RIFF: 5

b Khối thuộc tính “fmt ”: 5

c Khối dữ liệu “data”: 6

2 Đọc file *.wav 7

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 9

Xử lý đồng hình: 9

Sơ đồ khối xử lý đồng hình: 9

1 Bộ lọc hiệu chỉnh H(z): 10

2 Cửa sổ Hamming W(n) 10

3 Biến đổi Fourier rời rạc 10

4 Logarit hóa 11

5 Biến đổi Fourier ngược 12

6 Xác định đáp ứng tần số 13

7 Tính toán formant 13

III Kết quả thực hiện chương trình 13

IV Tài liệu tham khảo 15

Trang 3

Đề 5:

Xác định tần số formant dùng xử lý đồng hình

- Đọc và hiển thị tiếng nói từ file *.WAV

- Xác định đáp ứng tần số của tuyến âm bằng phương pháp xử lý đồng hình

- Hiển thị đáp ứng tần số

- 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

Trang 4

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

Trang 5

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: chứa chuỗi “RIFF” dưới dạng mã ASCII

• ChunkSize:

Kích thước: 4 byte

Chức năng: cho biết tổng kích thước của các trường sau nó

(ChunkSize = 4 + (8 + Subchunk1Size) + (8 + Subchunk2Size))

• Format:

Kích thước: 4 byte

Chức năng: chứa chuỗi “WAVE” (giá trị 0x57415645 kiểu big-endian)

b Khối thuộc tính “fmt ”:

Khối này xác định các thuộc tính của dữ liệu âm thanh và có kích thước

là 24 byte gồm các trường:

• Subchunk1ID:

Kích thước: 4 byte

Chức năng: chứa chuỗi “fmt ” (giá trị 0x666d7420 kiểu big-endian)

• Subchunk1Size:

Kích thước: 4 byte

Chức năng:cho biết tổng kích thước của các trường thuộc khối thuộc tính đứng phía sau trường này

(đối với tập tin wave không nén (PCM) thì Subchunk1Size bằng 16)

• AudioFormat:

Kích thước: 2 byte

Chức năng: cho ta biết dạng nén của dữ liệu trong tập tin wave

(với PCM thì AudioFormat = 1)

• NumChannels:

Kích thước: 2 byte

Chức năng: cho biết số kênh của tập tin wave

(Mono=1, Stereo=2,v.v)

• SampleRate:

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

Trang 6

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

Số kênh /Số bit trên 1 kênh/Kích thước 1 mẫu/Giá trị lớn nhất/Giá trị nhỏ nhất

1 /(Mono)/8/1 byte/255/0

1 (Mono)/16/2 byte/32767/-32768

2 (Stereo)/8/2 byte/255/0

2 (Stereo)/16/4 byte/32767/-32768

Ví dụ ta có file WAVE như sau:

52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00

22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00

24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d

Trang 7

2 Đọc file *.wav

Ta xây dựng hàm đọc file wav với đầu vào là tên file (đường dẫn file wav),

đầu ra là nội dung file dưới dạng nhị phân được lưu trong 1 mảng byte[]:

Nội dung file dưới dạng nhị phân sẽ được lưu trong mảng byte[] wavData

Trang 8

Các thông tin về tần số lấy mẫu, số bit mỗi mẫu… sẽ được đọc từ mảng

wavData này bằng hàm Xuly(byte[] wData) theo đúng cấu trúc file wav

như sau:

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

Trang 9

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:

Trang 10

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:

W(n) = 0.54 - 0.46 * cos(2πn/(N-1))

output(n) = input(n) W(n)

3 Biến đổi Fourier rời rạc

Biến đổi Fourier rời rạc DFT:

Trang 11

Ở đây ta xây dựng class SoPhuc phục vụ thao tác tính toán với số phức,

class SoPhuc này gồm 2 thuộc tính: RE (phần thực) và IM (phần ảo)

4 Logarit hóa

Trang 12

5 Biến đổi Fourier ngược

Biến đổi DFT ngược:

Trang 13

6 Xác định đáp ứng tần số

Sau khi biến đổi DFT ngược (IDFT) ta thu được cepstrum của tín hiệu, dùng

cửa sổ chữ nhật lấy ra 1 đoạn, ta thu được ℎ ( )

Theo công thức xử lý đồng hình ta có:

ℎ ( ) = {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:

( ) = y(x + dx) – y(x) ℎ → 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

III Kết quả thực hiện chương trình

Để vẽ các kết quả tính toán được, ta sử dụng hàm VeTinHieu vẽ lên 1 panel

Trang 14

Tương tự để vẽ các cửa sổ, ta dùng hàm VeCuaSo

Kết quả thử nghiệm :

Trang 15

IV Tài liệu tham khảo

Bài giảng Xử lý tiếng nói - PGS TS Trịnh Văn Loan - Khoa CNTT - ĐHBKHN

Bài giảng Xử lý tín hiệu số - PGS TS Trịnh Văn Loan - Khoa CNTT - ĐHBKHN

Ngày đăng: 23/10/2014, 15:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w