0
我正在做一個降噪濾波技術的實驗。我在數據集中的樣本是音頻文件(.wav),因此我具有:原始錄製音頻文件,並將它們與噪聲混合,因此我得到混合(噪聲信號),我通過濾波算法傳遞這些噪聲信號,是經濾波或降噪的音頻信號。音頻.wav文件的SNR以及評估濾波技術的客觀度量
所以我總共有以下幾點:
- 原始音頻文件(無噪音)
- 噪音(即需要被添加到原始信號)
- 混合(嘈雜文件)
- 過濾(降噪)
我需要得到多少分貝的過濾器可以減少。我認爲信噪比是一種可以給出有關濾波算法性能的指標,以及在濾波之前和濾波之後的比較。
所以好心沒有任何人知道:
- SNR是一個很好的客觀標準來評價算法的性能,並測量增強?
- 有沒有其他合適的客觀措施可以用在 這種情況下?
- 如果現場錄音已經包含噪音,而且我不需要添加噪音,情況會是怎樣? (在我的情況噪聲風)
下面是一個簡單的MATLAB代碼,我寫來計算SNR:
[signal]=audioread('Original.wav');
[noise]=audioread('Noise.wav');
[noise_reduced_signal]=audioread('Filtered.wav');
[noisysignal]=audioread('Noisy.wav');
snr_before = mean(signal.^ 2)/mean(noise .^ 2);
snr_before_db = 10 * log10(snr_before) % in dB
%===================================================================%
% After noise reduction, the residual noise can be calculated as the difference
% of the wanted signal and the actual signal. Calculation of SNR is then straightforward:
%===================================================================%
snr_after = mean(signal .^ 2)/mean(noise_reduced_signal .^ 2);
snr_after_db = 10 * log10(snr_after) % in dB
Diff = snr_after_db - snr_before_db;
disp(['Diff = ' num2str(Diff) ' dB'])