3

听起来应该是这样的。

我试过了:

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];

但这听起来很糟糕。

4

2 回答 2

2

你问的不是一项简单的任务,原因是音高与音频播放的速度有着内在的联系。例如,一个 100 Hz 的 10 秒正弦波,当减慢两倍时,将变成一个 20 秒 50 Hz 的波(Hz 与波速和您听到的音高有关)。为了在不影响音高的情况下将这个正弦波减慢两倍,一些算法必须计算出你插入的 10 秒音频中缺少什么声音,生成这个音频并将它与那里的声音相结合。这并不容易,事实上真的很难。

使用一些复杂的算法,好的音频编辑程序(例如 Logic Pro)可以做得相当好。然而,任何超过几倍的因素都会产生非常可怕的结果,原因是很难生成以前不存在的音频,并使其听起来不错。


但是,这就是我将如何去做

(以及我认为上面的链接听起来不错):

首先,从非常高质量的音频开始。避开 128 kpbs mp3,他们只是不会削减它。发出的声音信息越多,算法就越容易创造出听起来不错的东西。

接下来,研究将在 600 - 900% 的因素下运行良好的算法。看看这个:http ://hypermammut.sourceforge.net/paulstretch/ - 它是开源的,所以你应该能够从中学到很多东西。此外,该算法特别适用于大规模因子。答对了!

我想说某种效果(或几个)已应用于 youtube 视频的最终结果。我在上面链接的网站提到“光谱平滑”已应用于音频。此外,诸如混响之类的东西可能会给结果带来更好或更有趣的质感——一些可以玩的东西。


这不是一项小任务,尤其是要做好。不过应该很有趣/有趣-祝你好运!

于 2013-01-13T12:40:29.467 回答
0

在维基百科中,有一篇文章在某种程度上描述了您需要做的事情:链接。您需要时间缩放并相应地调整音高以补偿缩放效果。听起来不简单,也许你可以尝试在一个已经存在的开源过滤器项目中找到源代码。

于 2013-01-13T12:22:39.450 回答