Thạc Sĩ Thực hành audio video dùng malab

Thảo luận trong 'THẠC SĨ - TIẾN SĨ' bắt đầu bởi Phí Lan Dương, 3/12/15.

  1. Phí Lan Dương

    Phí Lan Dương New Member
    Thành viên vàng

    Bài viết:
    18,524
    Được thích:
    18
    Điểm thành tích:
    0
    Xu:
    0Xu
    1 Khoa Điện tử - Viễn thông

    BÀI 1: PHÂN TÍCH PHỔ AUDIO TRÊN MATLAB
    1. Tổng quan về Audio
    1.1. Âm tần
    Âm tần dược định nghĩa là khoảng tần số âm thanh mà tai người cảm nhận được
    20Hz ư 20 KHz. Phổ âm tần được chia làm 3 vùng Bass, Medium và Trebel:

    Tai người cảm nhận cường độ âm thanh phụ thuộc vào cả biên độ và tần số, nghe
    thính nhất ở vùng từ 1 KHz – 3 KHz. Cường độ âm thanh lớn nhất mà tai người có
    thể chịu được là 120 dB.
    1.2. Âm thanh số
    Sampling rate: Tùy vào yêu cầu về chất lượng của tín hiệu mà ta có các tốc độ
    lấy mẫu khác nhau. Đối với chuẩn CD f S = 44.1 KHz, DVD f S = 48 KHz còn
    telephone là 8 KHz.
    Bit depth: Số bit dùng để biểu diễn một mẫu.VD: Một tín hiệu âm thanh được
    lấy mẫu bởi một mạch ADC 16 bit với f S = 48 KHz sẽ có sampling rate là 48 KHz và
    bit depth là 16 bit.
    Uncompressed: Các định dạng tín hiệu âm thanh số không nén: .wav, .aiff. Tuy
    nhiên dung lượng của các file này khá lớn do đó gây khó khăn cho việc lưu trữ và xử
    lý, dẫn đến yêu cầu nén các tín hiệu âm thanh số.
    Compressed: Có 2 loại nén là nén không mất dữ liệu (lossless) và nén mất dữ
    liệu (lossy).

    Để đọc file .wav trong Matlab ta sử dụng lệnh wavread:
    [data sr nbits] = wavread('sound.wav');
    Trong đó sr là sampling rate, nbits là bit depth. Nếu file sound.wav là âm thanh 1
    kênh (mono) thì data sẽ là mảng 1 chiều, nếu là âm thanh 2 kênh (stereo) thì data sẽ
    là mảng 2 chiều.
    Để phát lại tín hiệu âm thanh số trong Matlab ta sử dụng lệnh sound:
    sound(data,sr);
    2. Phân tích phổ audio
    Hình dưới là sơ đồ lấy mẫu và phát lại một tín hiệu audio đơn giản.Sau khi đã
    được chuyển sang tín hiệu số, tín hiệu audio sẽ được lưu lại, phân tích và xử lý bởi
    khối DSP. Sau đó ta có thể phát lại tín hiệu bằng cách khôi phục lại tín hiệu tương tự
    thông qua mạch DAC.
    Lý thuyết về lấy mẫu và biến đổi FFT sinh viên đã được học trong môn DSP. Do
    đó, trọng tâm của bài này sẽ chỉ đi sâu vào việc phân tích phổ sử dụng biến đổi FFT
    trên Matlab. Giáo trình thực hành Audio - Video 2014

    2 Khoa Điện tử - Viễn thông


    Do biến đổi fft giả sử tín hiệu đưa vào là tuần hoàn, nên thông thường để tránh
    hiện tượng rò rỉ phổ ta phải đưa tín hiệu lấy mẫu một qua một cửa sổ (window) trước
    khi sử dụng biến đổi fft.
    Để phân tích phổ fft trong Matlab ta sử dụng hàm fft(signal, N). Trong đó N là số
    điểm fft. Với f = fft(signal, N):
     Bin 1: (f(1))là thành phần DC / trung bình tín hiệu.
     Bin 2:(f(2)) là năng lượng tại tần số Fs/N .
     Bin K: lànăng lượng tạitần số (k-1)*Fs/N.
     Bin N/2 + 1:là năng lượng tại tần tố Nyquist Fs/2.
     Bin k > N/2 + 1:là ảnh (tần số âm) của tần số thực.
     Để coi phổ biên độ của tín hiệu theo giai decibel ta dùng lệnh sau:
    20*log10(abs(f)).
    Để chuyển tín hiệu từ miền tần số về miền thời gian ta dùng niến đổi fft ngược:
    signal_new = ifft(f, N_signal). Với N_signal là chiều dài của tín hiệu gốc.
     
Đang tải...