听起来应该是this。
我试过了:
NSURL* url = [[NSBundle mainBundle] URLForResource:@"Justin Bieber - U Smile" withExtension:@"mp3"];
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:
url error:nil];
self.player.volume = 1.0f;
self.player.enableRate=YES;
[self.player prepareToPlay];
[self.player setNumberOfLoops:0];
self.player.rate=0.16f;
[self.player play];
但听起来很糟糕。
答案 0 :(得分:2)
你问的不是一个简单的任务,原因是音调本身与音频播放的速度有关。例如,100赫兹的10秒正弦波,当减速2倍时,将成为20秒50赫兹波(赫兹与波速和您听到的音高有关)。要在不影响音高的情况下将此正弦波减慢两倍,某些算法必须确定您插入的10秒音频中缺少的声音,生成此音频并将其与那里的音频进行网格化。这并不容易,事实上它真的很难。
良好的音频编辑程序(例如,Logic Pro)可以使用一些复杂的算法做得相当不错。然而,任何超过几倍的因素都会产生非常可怕的结果,原因是它很难产生以前不存在的音频,并使其听起来不错。
(以及我认为以上链接听起来不错):
首先,开始使用非常高品质的音频。避开128 kpbs的mp3,他们只是不会削减它。声音信息越多,算法就越容易创造出听起来不错的东西。
接下来,研究算法的效果将达到600 - 900%。看看这个:http://hypermammut.sourceforge.net/paulstretch/ - 它是开源的,所以你应该能够从中学到很多东西。此外,该算法特别适用于大规模因子。宾果!
我会说某种效果(或一对)已应用于YouTube视频中的最终结果。我上面链接的网站提到“光谱平滑”已应用于音频。像混响这样的东西可能会给结果带来更好或更有趣的纹理 - 有些东西可以玩。
这不是一项小任务,尤其要做得好。应该是有趣/有趣的 - 祝你好运!
答案 1 :(得分:0)
在维基百科中,有一篇文章描述了您需要做的事情:link。您需要进行时间缩放并相应地调整音高以补偿缩放效果。听起来不是一件容易的事,也许你可以尝试在已经存在的开源过滤器项目中找到源代码。