如何从 iOS 设备获取硬件采样率?
How to get hardware sampleRate from iOS device?
在我的应用程序中,我使用 AVAudioEngine 进行语音识别,但我很难理解如何正确设置 inputNode。
我使用本教程作为我的代码示例:https://www.raywenderlich.com/155752/speech-recognition-tutorial-ios
这部分代码让我很头疼:
let node = audioEngine.inputNode
let recordingFormat = node.outputFormat(forBus: 0)
node.installTap(onBus: 0, bufferSize: 1024,
format: recordingFormat) { [unowned self]
(buffer, _) in
self.request.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
基本上,我的应用程序因以下错误而崩溃:
AVAEInternal.h:70:_AVAE_Check: required condition is false: [AVAudioIONodeImpl.mm:897:SetOutputFormat:
(format.sampleRate == hwFormat.sampleRate)]
所以我的问题是,如何从应用 运行 所在的设备获取硬件采样率,以便我可以将其设置为节点的记录格式?
此外,如果 运行 应用正在通过 mac 录制或通过 Apple TV 进行屏幕共享,我想我需要获取这些设备的硬件采样率,这样我的应用才不会崩溃在那些情况下也是如此?!
非常感谢任何形式的帮助!
来自 AVAudioSession 的硬件采样率。
let sampleRate = AVAudioSession.sharedInstance().sampleRate
但这可能更适合您的具体情况。
let sampleRate = node.inputFormat(forBus: 0).sampleRate
在我的应用程序中,我使用 AVAudioEngine 进行语音识别,但我很难理解如何正确设置 inputNode。
我使用本教程作为我的代码示例:https://www.raywenderlich.com/155752/speech-recognition-tutorial-ios
这部分代码让我很头疼:
let node = audioEngine.inputNode
let recordingFormat = node.outputFormat(forBus: 0)
node.installTap(onBus: 0, bufferSize: 1024,
format: recordingFormat) { [unowned self]
(buffer, _) in
self.request.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
基本上,我的应用程序因以下错误而崩溃:
AVAEInternal.h:70:_AVAE_Check: required condition is false: [AVAudioIONodeImpl.mm:897:SetOutputFormat:
(format.sampleRate == hwFormat.sampleRate)]
所以我的问题是,如何从应用 运行 所在的设备获取硬件采样率,以便我可以将其设置为节点的记录格式?
此外,如果 运行 应用正在通过 mac 录制或通过 Apple TV 进行屏幕共享,我想我需要获取这些设备的硬件采样率,这样我的应用才不会崩溃在那些情况下也是如此?!
非常感谢任何形式的帮助!
来自 AVAudioSession 的硬件采样率。
let sampleRate = AVAudioSession.sharedInstance().sampleRate
但这可能更适合您的具体情况。
let sampleRate = node.inputFormat(forBus: 0).sampleRate