如何使用AudioKit保存音频文件?

我有音频文件。 我对它做了一些影响

let pitchshifter = AKPitchShifter(self.audioPlayer) pitchshifter.shift = 10 AudioKit.output = pitchshifter 

如果我在应用程序中播放它,它可以工作,但我想将其保存为新文件,以便以后将其用作avasset。 如何实施?

我尝试使用AKNodeRecorder,但这会产生空音轨:

 let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded") let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 2, interleaved: false)! let tape = try! AKAudioFile(forWriting: url, settings: format.settings) let mixer = AKMixer(self.audioPlayer!, pitchshifter) AudioKit.output = mixer self.recorder = try! AKNodeRecorder(node: mixer, file: tape) try? AudioKit.start() self.audioPlayer?.play() self.audioPlayer?.completionHandler = { self.recorder?.stop() self.selectedAudioURL = tape.url } 

我也尝试了renderToFile方法 – 它也没有工作,我得到了这个错误

 let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("recorded.m4a") let format = AVAudioFormat(commonFormat: .pcmFormatFloat64, sampleRate: 44100, channels: 2, interleaved: false)! let tape = try! AKAudioFile(forWriting: url, settings: format.settings) try! AudioKit.renderToFile(tape, seconds: Double(CMTimeGetSeconds(self.selectedAudioAsset!.duration))) 

这就是我将初始文件添加到AudioKit的方法:

 let audioFile = try AKAudioFile(forReading: audioURL, commonFormat: .pcmFormatFloat32, interleaved: true) let player = AKPlayer(audioFile: audioFile) self.audioFile = audioFile self.audioPlayer = player player.startTime = self.startTime AKSettings.defaultToSpeaker = true 

在此先感谢您的回答!

根据我的发现,您必须使用预渲染器来“播放”您想要录制的内容:

 try AudioKit.renderToFile(outputFileForWriting, duration: sequencerTotalSeconds, prerender: { self.sequencer.play() }) 

但是,对我来说。渲染单个音轨序列会产生窦音。 : – /

希望这可以帮助!