我只是想知道是否有人可以向我解释如何录制音频,修改音频(音高?)并在iPhone上播放给用户。
我不是要求有人为我做这件事,只是提示我应该怎么做。通过文档查看我似乎应该使用AVAudioSession
,AVAudioRecorder
和AVAudioPlayer
(AVFoundation.Framework
)来录制播放部分。或者我应该使用CoreAudio.Framework
吗?然后是关于修改音频的问题。
答案 0 :(得分:2)
AVAudioUnitTimePitch应该可以做到这一点。
来自udacity.com Intro to iOS App Development with Swift的示例代码:
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()
}
答案 1 :(得分:0)
OpenAL是一个库,支持您正在搜索的内容。它在iPhone上很受欢迎,所以也许你应该看看这个。 即只需一个命令就可以轻松改变样本的音高:
alSourcef(source, AL_PITCH, pitch);
但是我不确定,如果音调改变也可以使用AVFoundation或CoreAudio类 - 从不使用它们。
答案 2 :(得分:0)
这可能会有所帮助。 DIRAC-mobile,一个用于复音音频信号的实时速度和音高操作的库。它们还有示例代码,您可以在下载库后查看它们。