我想用AVAudioRecorder录制声音,AVAudioPlayer用不同的音高播放它。
我尝试更改音频播放器的速率属性,它可以更快或更慢地播放声音,但不会改变音高。还有另一种方法来实现这一目标吗?例如,我可以在22kHz录制并以44kHz播放吗?我尝试更改播放器的音频设置,但它们是只读的。我错过了一些简单的事吗?
我看过不同的声音库,但如果有的话,我只想要一个简单的黑客。
谢谢!
答案 0 :(得分:0)
Audio Tap Processor是来自Apple的示例代码,似乎可以更改频率。试试示例应用程序,如果它对您有所帮助,您可以使用一些代码将您的应用程序组合在一起。
答案 1 :(得分: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;