[英]Java/Android - Distorted Audio using FFT in realtime
對於具有使用JTransform包進行快速傅立葉變換的經驗的用戶,此問題最相關。 我試圖最終創建一個均衡器,作為更大的實時音頻項目的一部分。 現在,我只是嘗試應用傅立葉變換,然后使用逆方法取回原始數據,然后輸出該音頻。 我得到的是嚴重失真的音頻。 我想知道是否有人有做這種事情的經驗?
在對音頻輸入進行采樣之后,我在回調方法中應用了轉換。
public void onMarkerReached(AudioRecord recorder)
double[] input = new double[buffers[ix].length];
for(int i=0;i<input.length;i++)
{
input[i] = (double)buffers[ix][i];
}
DoubleFFT_1D ft = new DoubleFFT_1D(input.length);
ft.realForward(input);
//some filtering here
ft.realInverse(input, false);
for(int i=0;i<input.length;i++)
{
buffers[ix][i] = (short)input[i];
}
player.write(buffers[ix], 0,
buffers[ix].length);
}
}
我是否僅保留變換的真實部分而丟失了一部分信號? 由於僅是音頻數據,因此輸入應為實數,對嗎? 不知道我在這里做錯了什么,任何輸入將不勝感激!
我使用ft.realInverse(input,true);測試了您的代碼段 加上適當的樣本量為我解決了失真問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.