簡體   English   中英

Java / Android-使用FFT實時失真音頻

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM