【问题标题】:Decrease playback speed of audio file by 600%-900% (without affecting the pitch) in iOS在 iOS 中将音频文件的播放速度降低 600%-900%(不影响音高)
【发布时间】:2013-01-12 20:19:58
【问题描述】:

听起来应该像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];

但听起来很糟糕。

【问题讨论】:

    标签: ios objective-c audio avaudioplayer playback


    【解决方案1】:

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

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


    但是,我会这样做

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

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

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

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


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

    【讨论】:

    • Paul 的 Extreme Sound Stretch(“paulstretch”)确实令人印象深刻,但不幸的是,它的软件许可不允许它用于封闭源代码的软件程序,例如某些人可能会提交给应用商店。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多