日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android降噪算法,Android主动降噪功能

發布時間:2023/12/8 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android降噪算法,Android主动降噪功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在做一個有點雄心勃勃的項目,通過耳機或耳機在

Android上實現主動降噪.

我的目標是用Android手機麥克風記錄環境噪音,反相(從音頻記錄中拉出的短值上的簡單* -1),然后通過耳機播放倒置的波形.如果延遲和幅度接近正確,則應該使環境中的大量機械結構噪聲無效.

這是我到目前為止所得到的:

@Override

public void run()

{

Log.i("Audio", "Running Audio Thread");

AudioRecord recorder = null;

AudioTrack track = null;

short[][] buffers = new short[256][160];

int ix = 0;

/*

* Initialize buffer to hold continuously recorded audio data, start recording, and start

* playback.

*/

try

{

int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10);

//NoiseSuppressor ns = NoiseSuppressor.create(recorder.getAudioSessionId());

//ns.setEnabled(true);

track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000,

AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10, AudioTrack.MODE_STREAM);

recorder.startRecording();

track.play();

/*

* Loops until something outside of this thread stops it.

* Reads the data from the recorder and writes it to the audio track for playback.

*/

while(!stopped)

{

short[] buffer = buffers[ix++ % buffers.length];

N = recorder.read(buffer,0,buffer.length);

for(int iii = 0;iii

//Log.i("Data","Value: "+buffer[iii]);

buffer[iii] = buffer[iii] *= -1;

}

track.write(buffer, 0, buffer.length);

}

}

catch(Throwable x)

{

Log.w("Audio", "Error reading voice audio", x);

}

/*

* Frees the thread's resources after the loop completes so that it can be run again

*/

finally

{

recorder.stop();

recorder.release();

track.stop();

track.release();

}

}

我一時興奮地發現Android API實際上已經有了一個NoiseSuppression算法(你會在上面看到它注釋掉).我用它進行了測試,發現NoiseSuppressor沒有做太多的事情來消除恒定音調,這讓我相信它實際上只是在非人聲頻率下執行帶通濾波器.

所以,我的問題:

1)上述代碼從麥克風錄制到耳機播放大約需要250-500毫秒.這種延遲很糟糕,減少它會很棒.任何建議將不勝感激.

2)無論延遲有多緊,我的理解是回放波形將與實際環境噪聲波形相位偏移.這表明我需要執行某種波形匹配來計算此偏移并進行補償.關于如何計算的想法?

3)在補償延遲方面,這會是什么樣子?我在每個周期都有一系列短路,那么30ms或250ms的延遲是什么樣的呢?

我知道這種方法的基本問題是手機的位置不在頭部旁邊可能會引入一些錯誤,但我希望有一些動態或固定的延遲修正可能有可能克服它.

謝謝你的任何建議.

總結

以上是生活随笔為你收集整理的android降噪算法,Android主动降噪功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。