假设我有一个正弦波的Y值数组。(假设 X 是时间)
在Python中,你可以把它写到一个Wav文件中:
wav.write("file.wav", <sample rate>, <waveform>)
是否可以使用 AVFoundation 在 Swift 中执行此操作?如果是这样,怎么办?如果没有,我应该使用什么库?(我现在试图避免使用AudioKit。
谢谢 查尔斯
在 AVFoundation 中,有AVAudioFile
,但您必须以AVAudioPCMBuffer
s 的形式提供数据,这会将数据保存在一个AudioBufferList
中,而又由AudioBuffer
s 组成,恕我直言,这一切都相当复杂,因为他们的设计目标显然是能够处理所有可以想象的音频格式(包括压缩的、 VBR等)。因此,AVAudioFile
只是将一些合成样本写入 WAV 文件可能是矫枉过正的。
或者,还有音频文件服务 C-API。它提供了AudioFileCreateWithURL
、AudioFileWriteBytes
和AudioFileClose
,这可能会为您的任务解决问题。 最复杂的部分可能是AudioFileCreateWithURL
所需的AudioStreamBasicDescription
。为了帮助解决这个问题,存在一个实用程序函数:FillOutASBDForLPCM
。