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

use*_*er_ 6 iphone objective-c ios swift

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

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

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

快速代码是:

AVPlayerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.spectral // AVAudioTimePitchAlgorithmSpectral
Run Code Online (Sandbox Code Playgroud)

AVAudioTimePitchAlgorithmSpectral增加的质量比默认质量更多。但是的音质AVAudioTimePitchAlgorithmSpectral不够好。声音仍在回响,聆听它的压力很大。

在Apple的Podcast App中,当我将播放速度设置为1/2时,播放速度变慢并且声音质量很高,根本没有回音。

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

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

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

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

use*_*er_ 13

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

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

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

文档说:

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

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

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

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

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

  • 你这个传奇人物。我试图找到一个好方法让加速声音听起来不错 (2认同)