AudioKit AKMicrophone 不输出任何数据
Posted
技术标签:
【中文标题】AudioKit AKMicrophone 不输出任何数据【英文标题】:AudioKit AKMicrophone not outputting any data 【发布时间】:2018-10-02 17:33:31 【问题描述】:我正在尝试从麦克风捕获 FFT 数据。我之前已经设法让它使用类似的代码库工作,但自从 macOS Mojave 之后它就坏了——fft 数据一直保持为 0。
相关代码:
var fft: AKFFTTap?
var inputDevice: AKDevice?
didSet
inputNode = nil
updateAudioNode()
var inputNode: AKNode?
didSet
if fft != nil
// According to AKFFTTap class reference, it will always be on tap 0
oldValue?.avAudioNode.removeTap(onBus: 0)
fft = inputNode.map AKFFTTap($0)
[...]
guard let device = inputDevice else
inputNode = ViewController.shared.player.mixer
return
do
try AudioKit.setInputDevice(device)
catch
print("Error setting input device: \(error)")
return
let microphoneNode = AKMicrophone()
do
try microphoneNode.setDevice(device)
catch
print("Failed setting node input device: \(error)")
return
microphoneNode.start()
microphoneNode.volume = 3
print("Switched Node: \(microphoneNode), started: \(microphoneNode.isStarted)")
inputNode = microphoneNode
try! AudioKit.start()
所有代码都被调用,没有错误输出,但 fft 只是保持空白。通过一些代码重新排序,我得到了不同的错误。 为了完整起见,该课程的完整版本是here。
最后,我还尝试一对一地实现playground 中的示例。由于 XCode 游乐场似乎与 AudioKit 一起崩溃,我在自己的代码库中尝试了它,但那里也没有区别。例如,AKFrequencyTracker 的幅度和频率都为 0。
【问题讨论】:
Playgrounds 与任何东西都会崩溃,不仅仅是 AudioKit,对于像我这样创建了数百个 Playground 的人来说,这真是令人沮丧。话虽如此,跟踪振荡器频率的 AKFrequencyTracker 操场做得很好。但是,基于麦克风的东西现在有点可疑。人们正在研究它。我相信这与默认麦克风选择有关,但我不确定。 在我的场景中,您可以选择输入设备(并且选择本身确实有效,我知道这是因为无效的音频设备会出现很多错误,哈哈)。但感谢您的提醒,我会留意变化! 【参考方案1】:我对此不是 100% 肯定,但我希望您尝试使用 AudioKit v4.5.1。我们确实修复了 AKMicrophone 中的一个错误,这可能会产生下游后果。我将撤回此答案并继续查看是否未修复。告诉我。
【讨论】:
我认为没有变化。 在我没有将麦克风连接到 AudioKit 输出管道的设置中,我没有得到任何值。否则,我会在 apples.audio.IOThread 中获得 EXC_BAD_ACCESS 和打印的“Woops”。我在ivorius.de/AKMicTest.zip 上创建了我的设置的简约表示。也许这对解决问题有帮助。 (需要 carthage 更新才能运行)。以上是关于AudioKit AKMicrophone 不输出任何数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AudioKit 将一个立体声通道复制到另一个立体声通道
AudioKit - 记录默认输入(麦克风)而不将其发送到输出