我想知道是否有可能减慢xcode中的声音。我的意思是我将在xcode中的支持文件中添加一些.mp3文件,我将创建可以加速或减速的应用程序。例如,使用滑块。它甚至可能吗?如果是的话,任何人都可以帮我一些想法吗?感谢
答案 0 :(得分:2)
AVAudioPlayer有一个rate属性,可以帮助您实现目标。 http://developer.apple.com/library/IOS/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html
音频播放器的播放速度。 @property浮动利率
讨论
此属性的默认值1.0提供正常播放速率。 可用范围从0.5到半速播放到2.0 用于双倍速播放。
要设置音频播放器的播放速率,您必须先启用速率 调整,如enableRate属性说明中所述。
我还在AVAudioPlayer的评分上发现了一篇很好的帖子: AVAudioPlayer rate
就像你提到的那样,你可以设置一个0.5到2.0之间的滑块,并且在valuechanged上使用
修改音频播放器的速率- (IBAction)changeValue:(UISlider *)sender
{
//made up assumed ivar names
if ([_audioPlayer respondsToSelector:@selector(setEnableRate:)])
_audioPlayer.enableRate = YES;
if ([_audioPlayer respondsToSelector:@selector(setRate:)])
_audioPlayer.rate = [NSNumber numberWithFloat:slideValue];
}
答案 1 :(得分:0)
以比其采样率更快或更慢的速率播放PCM音频会改变其音调并且还会引入相当多的假象。如果您对此感到满意,您将使用的方法是将MP3解码为PCM音频,然后使用Direct Digital Synthesis Oscillator来控制播放速率。
如果你想保持音高但改变速度,你需要一个音频时间延长算法。
来自Dirac3的DSP Dimension是可以执行此操作的商业产品,可用于在iOS应用程序中使用的许可。存在其他商业解决方案。
DSP Dimension blog提供了有关如何实现音高变换的基础知识的有用教程 使用FFT。时间拉伸基本上是相同的过程。然而,他们没有告诉你的DIRAC插件中有一些秘密的问题。
请注意,除非您是电子工程,物理或数学专业毕业,否则您可能很难填补空白。