我正在编写一些关于声音定位的应用程序,我使用SCNAudioPlayer中的.isPositional在SCNNode上生成空间音频。下面是我的代码:
func spatialAudio(inputNode: SCNNode){
let audio = SCNAudioSource(fileNamed: "source.wav")
audio!.isPositional = true
audio?.load()
let player = SCNAudioPlayer(source: audio!)
inputNode.addAudioPlayer(player)
}但是空间音频的效果并不理想,用户很难对声源进行定位。有没有其他方法可以在Swift中生成更逼真的空间音频?
我听说过一些用于声音定位的算法,如头部相关传递函数(HRTF)、耳间时间差(ITD)和耳间电平差(ILD)。Swift的位置音频是否使用这些算法?如果没有,我怎么能改变音频来使用这些算法呢?
发布于 2019-10-23 17:15:40
对我来说,问题基本上是声音衰减太弱了。我可以移动到离震源10米或20米远的地方,它的声音几乎和我站在震源上面时一样大。这使得3D音频效果很难确定。我的解决方案是更改音频环境节点上的设置。你可以在你的SCNView上找到这个--它叫做audioEnvironmentNode。
我发现以下设置提供了一个相当强的效果,但您可能希望尝试它们,以获得适合您的环境的效果:
view.audioEnvironmentNode.distanceAttenuationParameters.maximumDistance = 2
view.audioEnvironmentNode.distanceAttenuationParameters.referenceDistance = 0.1
view.audioEnvironmentNode.renderingAlgorithm = .HRTFHQ(如果您的3D场景在计算上特别昂贵,您可能希望使用HRTF而不是HRTFHQ,或者甚至使用其他不太精确但性能更高的算法。在我的情况下,音频质量比图形更重要。)
https://stackoverflow.com/questions/53203094
复制相似问题