2

我想使用 AVAudioRecorder 录制声音,并使用 AVAudioPlayer 以不同的音高播放它。

我试过改变音频播放器的 rate 属性,它播放声音的速度更快或更慢,但不会改变音高。还有另一种方法可以做到这一点吗?例如,我可以以 22kHz 录制并以 44kHz 播放吗?我尝试更改播放器的音频设置,但它们是只读的。我错过了一些简单的东西吗?

我查看了不同的声音库,但如果有的话,我只想要一个简单的 hack。

谢谢!

4

2 回答 2

0

Audio Tap Processor是来自 Apple 的示例代码,它似乎改变了频率。尝试示例应用程序,如果它对您有帮助,您可以使用一些代码来组合您的应用程序。

于 2013-11-21T01:45:16.527 回答
0

您可以使用dsp 维度中的dirac-2在 iphone 上进行音高转换。引用: -

“DIRAC2 既可以作为商业对象库提供无限采样率和锁相多通道支持,也可以作为免费的单通道 44​​.1/48kHz LE 版本使用。”

否则对于 AVAudioPlayer

使用 setEnableRate: 和 setRate: 仅适用于 iOS 5.0 及更高版本。所以我使用 respondsToSelector: 在设备上测试设备是否会接受请求:

_noticeAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Rooster-mono" ofType:@"wav"]]
                                                      error:nil];;
if ([_noticeAudio respondsToSelector:@selector(setEnableRate:)])
    _noticeAudio.enableRate = YES;
if ([_noticeAudio respondsToSelector:@selector(setRate:)])
    _noticeAudio.rate = 2.0;
于 2013-11-27T07:36:11.600 回答