在iOS上实时录制,修改音高和播放音频
我只是想知道是否有人可以向我解释如何录制音频,修改音频(音高?)并在iPhone上播放给用户。
我不是要求别人为我做这件事,只是提示我应该怎么做。 通过文档查看我似乎应该使用AVAudioSession
, AVAudioRecorder
和AVAudioPlayer
( AVFoundation.Framework
)来录制播放部分。 或者我应该使用CoreAudio.Framework
? 然后是关于修改音频的问题。
OpenAL是一个库,支持您正在搜索的内容。 它在iPhone上很受欢迎,所以也许你应该看看这个。 即只需一个命令即可轻松更改样本的音高:
alSourcef(source, AL_PITCH, pitch);
但是我不确定,如果音调改变也可以使用AVFoundation或CoreAudio类 – 从不使用它们。
AVAudioUnitTimePitch应该可以解决问题。
来自udacity.com的示例代码使用Swift进行iOS应用程序开发的简介 :
func playAudioWithVariablePitch(pitch: Float) { audioEngine.stop() audioEngine.reset() let audioPlayerNode = AVAudioPlayerNode() audioEngine.attachNode(audioPlayerNode) let changePitchEffect = AVAudioUnitTimePitch() changePitchEffect.pitch = pitch audioEngine.attachNode(changePitchEffect) audioEngine.connect(audioPlayerNode, to:changePitchEffect, format:nil) audioEngine.connect(changePitchEffect, to:audioEngine.outputNode, format:nil) audioPlayerNode.scheduleFile(audioFile, atTime:nil, completionHandler: nil) try! audioEngine.start() audioPlayerNode.play() }
这可能有所帮助。 DIRAC-mobile ,一个用于复音音频信号的实时速度和音调操作的库。 它们还有示例代码,您可以在下载库后查看它们。