[英]my iOS app using audio units with an 8000 hertz sample rate returns a distorted voice
[英]iOS: Audio Units: setting arbitrary sample rate
我可以設置我想要的任何采樣率嗎? 有什么限制?
硬件采樣率如何? 一旦確定,單位之間傳遞的內部采樣率有什么限制?
我猜測實際的硬件速率可能必須是44.1KHz的一些位移,並且任何內部采樣率必須是該原始值的向下位移(例如22.1KHz,11.05KHz)。 這很接近嗎?
據我所理解,
1.我從音頻會話中設置硬件采樣率。
2. 系統會將采樣率設置為盡可能接近我指定的采樣率。
3.然后我查詢音頻會話以查找我設置的相同屬性,這將為我提供它正在使用的實際采樣率
在音頻單元的級別,特別是RemoteIO單元,文檔說明單元連接到硬件的兩個點(即麥克風(輸入)總線的輸入范圍和揚聲器(輸出)總線的輸出范圍) ,可以檢索采樣率但不 設置 。
但是,我嘗試在構建遠程I / O單元時訪問此值,並返回零。 我想也許我需要在我從其連接中獲取有意義的數據之前啟動該單元(啟動它的行為可能會創建連接)。 所以這里的解決方案似乎是從音頻會話中獲取采樣率並使用它,如上所述。
需要標簽:音頻單元
因為你提到AudioSessions,我假設你在iOS上。 所以你想要:
檢查音頻輸入硬件。 AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)
將音頻會話設置為“播放和錄制”模式。 AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...)
與kAudioSessionCategory_PlayAndRecord
激活會話。 AudioSessionSetActive()
獲得首選采樣率。 AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)
然后,您可以使用正確的采樣率設置音頻處理鏈。
至於播放音頻,您可以使用任何采樣率,API應將其轉換為硬件的輸出采樣率。 顯然,如果你使用非常高的采樣率,它會消耗大量的內存和CPU時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.