我正在開發iOS應用程序。該應用旨在模擬助聽器。它應該能夠先錄製聲音,然後修改聲音(如濾波或頻譜增強),並在最後播放。整個過程應該及時進行,這意味着記錄和回放之間的延遲應該在1秒之內。我已閱讀aurioTouch的示例代碼,並發現在錄製時會調用回調函數。我可以修改回調中的聲音嗎?我擔心的是修改過程有點費時(比如0.3秒)。我可以在回調中做到嗎?如果不是,爲什麼?我該怎麼做?如何同時錄製,修改和回放?
回答
你可能有一個錯字在你的問題「記錄和回放之間的延遲應該是一秒鐘之內」(一秒是音頻應用非常高的等待時間......尤其是對的助聽器。脣動和音頻是出路同步)
不經任何處理,你可以根據你如何設置RemoteIO得到麥克風入爲5ms到10ms範圍揚聲器/耳機一段音頻。
您的系統非常簡單。這只是一個環回系統,但你想在它們之間插入一些信號處理。 (如eq或其他增強功能,如背景噪聲消除,回聲抑制等)。
你需要決定是否要手動做信號處理,或者如果你想使用目前的iOS提供的可用信號處理的音頻單元。如果您想使用ios中的現有音頻單元,則可以創建一個音頻圖,其中包含以下項目 - 遠程io(連接輸入總線1上的麥克風,連接輸出總線1上的揚聲器) - 音頻單元效果
如果你想自己編寫所有DSP的東西,你只需要一個remoteIO單元。
要回答你的問題「我可以修改回調中的聲音嗎」
是的 - 你可以在麥克風的回調中編寫你的信號處理代碼。 但是,在下一次回調發生之前,您必須完成所有處理。如果您的音頻處理時間過長,則需要通過使用AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration,...)建議新的緩衝區持續時間來增加回調時間(從而增加更多的延遲)...
您提到您的處理需要很長時間「大約0.3s)「
這是300ms,在音頻世界中絕對不被認爲是」接近實時「或」低延遲「。但是,您給出的測量是開放式的,因爲您沒有說明處理了多少音頻?需要0.3s來處理5秒的音頻嗎?處理0.1s音頻需要0.3s嗎?
非常感謝您的詳細回覆!有一些觀點我不太滿意得到,但我現在還沒有得到我的Mac,我會問你以後:) –
我目前的緩衝區持續時間是0.1秒,播放是間歇性的。我懷疑這是因爲DSP過程有時會超過0.1s。我嘗試通過PreferredIOBufferDuration設置緩衝區持續時間,但0.1s似乎是最大值。如果將其設置爲大於0.1s,則緩衝區持續時間仍爲0.1s。它可以設置爲大於0.1s嗎?還是我必須優化DSP算法? –
另一個問題是,回放中似乎有一些點擊聲音,點擊的頻率等於回調函數的頻率。如果我移除DSP部分,只播放記錄,點擊聲消失。我也嘗試用一些簡單快速的算法替換DSP(如隨機更改輸出音量),再次出現點擊。你有什麼線索我做錯了什麼? –
- 1. 同時錄製和回放 - 星號
- 2. 同時播放和錄製
- 3. NAudio:同步錄製和播放時間
- 4. 同時播放和錄製音頻
- 5. 同時錄製和播放音頻
- 6. 在Asterisk中同時播放和錄製
- 7. Phonegap同時錄製和播放
- 8. 同時錄製音頻和播放iPod?
- 9. 同時播放和錄製iOS 9
- 10. 同時錄製和播放音頻
- 11. Qt - 如何同時錄製和播放聲音
- 12. ffmpeg如何同時錄製和預覽
- 13. 在不同的計算機上同步回放和錄製
- 14. 限制按彙總分組彙總返回的記錄,同時修改總計
- 15. 如何回放錄製的視頻?
- 16. 同時錄製和播放同一個文件
- 17. 播放聲音的同時錄製
- 18. 錄製音頻並同時播放
- 19. Android:同步視頻播放和錄製
- 20. mp3 http streaming:錄製和同步播放
- 21. 同時錄製帶有AVCaptureSession和回放音頻的音頻/視頻?
- 22. 如何在錄製後同時播放聲音Java
- 23. 如何在錄製語音的同時播放背景音樂?
- 24. 如何錄製音頻和播放C#
- 25. 如何修改錄製的語音以播放並在iOS中聲音「有趣」?
- 26. 超級動力Android回放和記錄同時
- 27. 在GStreamer中,如何同時播放和錄製v4l2src的h264 AVI文件?
- 28. Install4j:如何在運行時複製和修改啓動程序
- 29. 錄製/回放與iPhone
- 30. 音頻記錄和同時播放
@abbood您能幫我嗎? –