在macOS Catalina上,为什么AKFrequencyTracker()和AKMicrophoneTracker()给出虚假的/不变的幅度和频率?

问题描述 投票:1回答:1

更新:刚刚创建了一个新的专用项目来测试麦克风跟踪。同样的问题,顺便说一句,在所有情况下,我都会看到以下错误记录。

2020-01-01 16:14:30.796714-0800 AudioKit_mic_tracking [36792:18467342] [plugin] AddInstanceForFactory:没有为id注册的工厂2020-01-01 16:14:30.823727-0800AudioKit_mic_tracking [36792:18467342] HALC_ShellDriverPlugIn :: Open:无法获得指向Open例程的指针


我已经按照说明仔细地将AudioKit 4.9.3框架安装到了我的macOS应用中,无论是否进行沙箱测试,都会出现相同的错误。我尝试安装预构建的框架并从源代码构建AudioKit,并使用了可以在网上找到的用于麦克风跟踪的所有有据可查的方法。无论我使用AKMicrophoneTracker()还是AKFrequencyTracker(),我似乎都无法检测到麦克风的振幅或频率。

配置:

-2015年末的iMac-macOS卡塔利娜10.15.2-Xcode 11.3-适用于macOS的最新AudioKit 4.9.3-尝试禁用和启用沙箱(已选中“音频输入”功能)。

我使用的最新方法:

AudioKit.output = AKMixer()
do { 
   try AudioKit.start() 
} catch { 
   print("AudioKit start error") 
}
let tracker = AKMicrophoneTracker()
tracker.start()
Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { _ in
    print(String(format:"%.3f", tracker.amplitude), tracker.frequency)
})

显示:0.000 100.00.000 100.00.000 100.00.000 100.00.000 100.0

即使首选项窗格显示内置仪表上的麦克风活动,麦克风输入也不会改变。

audiokit
1个回答
0
投票

问题是,从macOS 10.14开始,将类似的安全性应用于希望使用麦克风和iOS中使用的摄像头的应用程序。应用必须在NSMicrophoneUsageDescription中具有info.plist属性。这将触发操作系统提示用户允许使用该设备(麦克风)。没有该属性,将出现无提示,AudioKit将无提示失败

[AKMicrophoneTracker()抛出某种安全异常可能会更好,以帮助将来诊断类似问题。

© www.soinside.com 2019 - 2024. All rights reserved.