在iOS上实时录制,修改音高和播放音频

时间:2010-12-08 23:32:58

标签: ios audio audio-recording playback

我只是想知道是否有人可以向我解释如何录制音频,修改音频(音高?)并在iPhone上播放给用户。

我不是要求有人为我做这件事,只是提示我应该怎么做。通过文档查看我似乎应该使用AVAudioSessionAVAudioRecorderAVAudioPlayerAVFoundation.Framework)来录制播放部分。或者我应该使用CoreAudio.Framework吗?然后是关于修改音频的问题。

3 个答案:

答案 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,一个用于复音音频信号的实时速度和音高操作的库。它们还有示例代码,您可以在下载库后查看它们。