在 iOS 上实时录制、修改音高和回放音频
Posted
技术标签:
【中文标题】在 iOS 上实时录制、修改音高和回放音频【英文标题】:Record, modify pitch and play back audio in real time on iOS 【发布时间】:2010-12-08 23:32:57 【问题描述】:我只是想知道是否有人可以向我解释我将如何录制音频、修改它(音高?)并在 iPhone 上播放给用户。
我不是要求有人为我做这件事,只是一些关于我应该如何去做的提示。浏览文档似乎我应该使用AVAudiosession
、AVAudioRecorder
和AVAudioPlayer
(AVFoundation.Framework
) 来录制播放部分。还是我应该使用CoreAudio.Framework
?然后是关于修改音频的问题。
【问题讨论】:
【参考方案1】: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()
【讨论】:
【参考方案2】:OpenAL 是一个库,它支持您正在搜索的内容。它在 iPhone 上非常受欢迎,所以也许你应该看看这个。 即,只需一个命令即可轻松更改样本的音高:
alSourcef(source, AL_PITCH, pitch);
但我不确定,AVFoundation 或 CoreAudio 类是否也可以改变音高 - 从未使用过它们。
【讨论】:
非常感谢@Constantin 我确实最终使用了openAL。更多细节可以在这个其他问题上看到:***.com/questions/5137853/…【参考方案3】:这可能会有所帮助。 DIRAC-mobile,用于实时处理和弦音频信号的速度和音高的库。他们还提供示例代码,您可以在下载库后查看。
【讨论】:
感谢金儒的链接。恐怕使用商业图书馆对我来说不是一个选择:(以上是关于在 iOS 上实时录制、修改音高和回放音频的主要内容,如果未能解决你的问题,请参考以下文章