ios - 即使使用AVAudioTimePitchAlgorithmSpectral,使用AVPlayer慢速播放的音质也不够好

标签 ios objective-c iphone swift

在 iOS 中,可以通过设置 AVPlayer.rate 来改变播放速率。 当AVPlayback rate设置为0.5时,播放变慢。

默认情况下,0.5 播放速率播放的音质很糟糕。 要提高质量,您需要设置 AVPlayerItem.audioTimePitchAlgorithm

根据API文档,将AVPlayerItem.audioTimePitchAlgorithm设置为AVAudioTimePitchAlgorithmSpectral可使音质最高。

快速代码是:

AVPlayerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.spectral // AVAudioTimePitchAlgorithmSpectral

AVAudioTimePitchAlgorithmSpectral 比默认质量提高了质量。 但是 AVAudioTimePitchAlgorithmSpectral 的音质不够好。 声音还在回荡,听着有压力。

在Apple的Podcast App中,当我将播放速度设置为1/2时,播放变慢,音质非常高,完全没有回声。

我希望我的应用程序提供与 Apple 的 Podcast 应用程序相同的质量。

是否有比 AVAudioTimePitchAlgorithmSpectral 更高的 iOS API 来提高音质?

如果没有,为什么 Apple 不提供它,即使他们在自己的 Podcast 应用程序中使用它?

还是应该使用第三方库? 是否有很多人用来改变播放速度的免费或低价的好库?

最佳答案

我一直在寻找和尝试学习 AudioKit 和 Audio Unit,甚至考虑购买第三方时间拉伸(stretch)音频处理库来解决过去 3 周播放缓慢的质量问题。

现在我终于找到了一个 super 简单的解决方案。

AVPlayer 可以通过设置 AVPlayerItem.audioTimePitchAlgorithm 来降低质量非常好的音频 到 AVAudioTimePitchAlgorithm.timeDomain 而不是 AVAudioTimePitchAlgorithm.spectral

文档说:

timeDomain is a modest quality pitch algorithm that is less computationally intensive. Suitable for voice.

这意味着 spectral 适用于音乐timeDomain 适用于语音

这就是我的应用程序使用的语音文件被回显的原因。

这就是为什么 Apple 的播客应用程序的慢速音频质量非常高。 它也必须使用这种时域算法。

这就是为什么似乎是为音乐用途而开发的 AudioKit 播放质量很差的语音音频的原因。

关于ios - 即使使用AVAudioTimePitchAlgorithmSpectral,使用AVPlayer慢速播放的音质也不够好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52462881/

相关文章:

iphone - Xcode iPhone 应用程序 : How to print price float

iphone - 如何以编程方式将 UIButton 调整为文本大小并保持漂亮的填充?

ios - 在带标签的 4x4 网格中显示信息的最佳方法是什么?

ios - 两次显示带导航栏的模态,无法获取第一个模态

objective-c - 从 NSString 中移除 NSCharacterSet 中的字符

iphone - 返回到 iPhone 上使用 Core Data 的基于钻取导航的应用程序中的列表

ios - 如何在 Xcode 中调试 Delphi iOS FireMonkey 应用程序?

objective-c - NSRulerView,将垂直尺寸延伸到底部

objective-c - 无法从 NSComboBox 检索选定的索引

iphone - 断开互联网连接时如何处理 NSJSONSerialization 的崩溃