首页 > 解决方案 > 即使使用 AVAudioTimePitchAlgorithmSpectral,使用 AVPlayer 慢放的音质也不够好

问题描述

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

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

根据 API 文档,设置AVPlayerItem.audioTimePitchAlgorithmAVAudioTimePitchAlgorithmSpectral使质量最高。

快速代码是:

AVPlayerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.spectral // AVAudioTimePitchAlgorithmSpectral

AVAudioTimePitchAlgorithmSpectral比默认质量提高质量。但是音质AVAudioTimePitchAlgorithmSpectral不够好。声音还在回荡,听着很紧张。

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

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

是否有 iOS API 可以提高音质远高于AVAudioTimePitchAlgorithmSpectral

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

还是我应该使用第三方库?是否有免费或低价以及许多人用来改变播放速度的好图书馆?

标签: iosobjective-ciphoneswift

解决方案


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

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

AVPlayer 可以通过设置AVPlayerItem.audioTimePitchAlgorithmAVAudioTimePitchAlgorithm.timeDomain而不是AVAudioTimePitchAlgorithm.spectral.

文档说:

timeDomain是一种中等质量的音高算法,计算量较小。适合语音

这种方式spectral适用于音乐timeDomain适合语音

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

这就是为什么苹果的 Podcasts App 的减速音频质量非常高的原因。它还必须使用这种时域算法。

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


推荐阅读