1

我用我的信使調用應用程序下面的代碼:呼叫的最佳音源設置是什麼?

this.audioRecord = new AudioRecord(
       MediaRecorder.AudioSource.DEFAULT, 
       Constants.SAMPLE_RATE, 
       AudioFormat.CHANNEL_IN_MONO, 
       AudioFormat.ENCODING_PCM_16BIT, 
       Constants.BUFFER_SIZE_RECORDING); 

這是在呼叫的音頻的最佳設置?我有幾個回聲問題。我嘗試了AudioSource.MIC和VOICE_COMMUNICATION,但它們表現更差。我想知道改變任何其他變量是否會改善音頻質量?有關主叫app.Also最好的變量任何想法,我不經常聽到任何聲音在Nexus 6或像素2

回答

1

音頻Android上始終是一個棘手的問題,因爲廠商提出不同的音效芯片,在不同的能力所有電話。

話雖這麼說VOICE_COMMUNICATION應該是你最好的選擇。它是「爲話音通信調諧的麥克風音頻源,例如VoIP,它將利用回聲消除或自動增益控制(如果可用)。」

所以它應該已經使用AcousticEchoCancelerNoiseSuppressor擺脫回聲和其他令人不安的噪音。但最終,如果您想要未經過濾或過濾的音頻,則歸結於您的使用情況。

您也可以嘗試提高採樣率(Constants.SAMPLE_RATE 48000應該是最好的,因爲這是最現代化的手機的採樣率)和位深度(ENCODING_PCM_16BITENCODING_PCM_FLOAT),以獲得更好的信號。請注意,支持的採樣率因手機而異。要了解您的手機支持哪些內容,請使用audio sampling rates discussion的解決方案。有關採樣率的更多信息,請參閱Sampling Audio文檔。

對於你經常聽不到任何東西的問題,如果你的收益太低(可能發生在AudioSource.MIC),或者如果你的錄音機還沒有準備好(我在這裏做了一個有根據的猜測,我不知道你的代碼)。

+0

非常感謝!很詳細。我支持版本18+,看起來像ENCODING_PCM_FLOAT只適用於21和+。在AudioFormat.CHANNEL_IN_MONO「?並增加緩衝區的大小記錄? –

+0

如果你使用的任何意見'CHANNEL_IN_STEREO',根據您的設備,一個通道將電話話筒和其他將是攝像機的麥克風。緩衝區的大小如何控制很多聲音是在處理之前緩衝,因此增加會增加等待時間,也提高了穩定性對緩衝區溢出,通常要瞄準低值,如果價格定得太低了'AudioRecord'會抱怨。 – leoderprofi

+0

我只是用對於Android手機,它的呼叫應用。沒有藥片或什麼,只是承上啓下,三星和像素的設備。你有什麼建議將是理想的版本18+設置爲26 –

相關問題