我正在研究需要對從麥克風捕獲的原始PCM音頻執行識別算法的應用程序。在我測試過的所有Android設備上,PCM數據都可用(即原始音頻數據)。新Sprint EVO並非如此。如何禁用HTC EVO(超音速)AGC?
Sprint EVO在麥克風上有AGC(自動增益控制),這會破壞數據,使我們的識別算法不再起作用。
我相信這是HTC爲此設備(也可能是未來的設備)添加到操作系統的功能。我已經在使用相同操作系統版本(2.1)的其他一些設備上測試了我們的應用程序,並且這些其他設備的行爲一般。
不幸的是,HTC尚未公佈在此設備上使用的代碼。我希望我可能不得不使用JNI來繞過這個特定設備,並且我願意這樣做,但是如果不能訪問HTC源代碼,我不知道從哪裏開始。
有沒有辦法扭轉AGC的影響,所以我堅持試圖解決它。
更具體的信息:
我使用AudioRecorder,以獲得訪問原始的PCM數據。我已經嘗試了一些使用MediaRecorder錄製AMR數據的程序,這些錄像也顯示相同的AGC屬性。
我還沒有嘗試的一件事是編寫自己的例程來使用MediaRecorder並使用setAudioSource(AudioSource.VOICE_RECOGNITION)。我可以在這個標誌上找到的唯一文檔來自Android參考文獻,它只是簡單地聲明「如果可用,則調整爲用於語音識別的麥克風音頻源,否則其行爲如同DEFAULT。」這可能是我需要的,但是需要額外的步驟來解碼AMR數據以獲得PCM數據(如果必須的話,我會這樣做)。
如果有人知道關於這個新功能的任何信息「,任何信息將不勝感激。具體來說,如果我有以下任何問題的答案,我的生活將會好得多:
- 這是HTC特有的新功能嗎?
- HTC何時會發布EVO/Supersonic的代碼庫?
- 是否有其他人遇到這種情況,並找到解決此問題的方法?
- AudioSource.VOICE_RECOGNITION確實可以防止AGC?
- AudioSource.VOICE_RECOGNITION的存在是否表明這在未來的設備中預計會更常見,並且該標誌是繞過它的規定?
任何其他線索,提示,提示將不勝感激。