即使使用AVAudioTimePitchAlgorithmSpectral

时间:2018-09-23 04:02:35

标签: 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应用相同的质量。

是否有iOS API可以比AVAudioTimePitchAlgorithmSpectral更高的声音质量?

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

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

2 个答案:

答案 0 :(得分:3)

在保持某种质量水平的同时,我遇到了相同的问题,即提高/降低速度。使用Apples API无法使其正常运行。 最后,我发现值得看一下这个出色的第三方框架:

https://github.com/AudioKit/AudioKit

允许您以直接的方式执行此操作以及更多操作。 希望这会有所帮助

答案 1 :(得分:1)

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

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

通过设置AVPlayerItem.audioTimePitchAlgorithm,AVPlayer可以降低音频质量,  到AVAudioTimePitchAlgorithm.timeDomain而不是AVAudioTimePitchAlgorithm.spectral

文档说:

  

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

这意味着spectral适合音乐timeDomain适合语音

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

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

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