任何人都可以看到一個從byte[]
聲音中去除白噪聲的算法嗎?我工作的Android個人音頻錄製應用程序,我使用android API進行錄製。以下是用於將記錄寫入文件的方法(採用wav格式)。java - 從字節數組wav文件中移除噪聲
private AudioRecord.OnRecordPositionUpdateListener updateListener = new AudioRecord.OnRecordPositionUpdateListener()
{
public void onPeriodicNotification(AudioRecord recorder)
{
aRecorder.read(buffer, 0, buffer.length);
try
{
fWriter.write(buffer); // Write buffer to file
payloadSize += buffer.length;
if (bSamples == 16)
{
for (int i=0; i<buffer.length/2; i++)
{ // 16bit sample size
short curSample = getShort(buffer[i*2], buffer[i*2+1]);
if (curSample > cAmplitude)
{ // Check amplitude
cAmplitude = curSample;
}
}
}
else
{ // 8bit sample size
for (int i=0; i<buffer.length; i++)
{
if (buffer[i] > cAmplitude)
{ // Check amplitude
cAmplitude = buffer[i];
}
}
}
}
catch (IOException e)
{
Log.e(AudioRecorder2.class.getName(), "Error occured in updateListener, recording is aborted");
}
}
public void onMarkerReached(AudioRecord recorder)
{}
};
我想對緩衝區應用一些轉換來消除播放錄製過程中可能聽到的白噪聲。 如果有人知道一些低通濾波器的算法/鏈接(或其他可能有用的東西),請幫忙。
謝謝。
一般情況下,你不能刪除白噪聲,除非你瞭解你的音頻信號。例如,如果您知道它只佔用某個頻段,那麼您可以使用低通濾波器,這將消除高頻噪聲。雖然沒有一般的解決方案。 –
我也收到相同的噪音。你找到解決方案嗎? – Manoj
不,我離開了這個項目。如果你發現它,請在這裏回覆,以便我接受你的答案。 –