要从麦克风录制音频并将其保存到文件中,可以使用AudioKit库。以下是一个示例代码,演示如何录制音频并将其保存到文件中:
import AudioKit
import AVFoundation
class Recorder {
var mic: AKMicrophone!
var recorder: AKNodeRecorder!
var player: AKAudioPlayer!
init() {
AKSettings.audioInputEnabled = true
AKSettings.defaultToSpeaker = true
mic = AKMicrophone()
// 创建录音器并设置输出文件路径
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let audioFile = documentsDirectory.appendingPathComponent("recording.wav")
recorder = try! AKNodeRecorder(node: mic, file: audioFile)
// 创建播放器
player = try! AKAudioPlayer(file: recorder.audioFile)
}
func startRecording() {
do {
try AudioKit.start()
mic.start()
recorder.record()
} catch {
print("录音失败:\(error)")
}
}
func stopRecording() {
mic.stop()
recorder.stop()
try? AudioKit.stop()
}
func playRecording() {
player.play()
}
}
// 示例用法:
let recorder = Recorder()
recorder.startRecording()
// 等待一段时间,例如 5 秒
sleep(5)
recorder.stopRecording()
recorder.playRecording()
在此示例中,我们创建了一个名为Recorder
的类来处理录制和播放音频的逻辑。在初始化中,我们启用了音频输入,并设置了默认的音频输出到扬声器。我们还创建了一个AKMicrophone
实例来表示麦克风输入。
我们使用AKNodeRecorder
来创建一个录音器,并设置了输出文件的路径。在startRecording
方法中,我们启动了AudioKit引擎,开始麦克风输入,并开始录制音频。在stopRecording
方法中,我们停止录制和麦克风输入,并停止AudioKit引擎。在playRecording
方法中,我们使用AKAudioPlayer
来播放录制的音频。
你可以根据需要调整录制的持续时间,然后使用recorder.stopRecording()
来停止录制,然后调用recorder.playRecording()
来播放录制的音频。
注意:请确保你已经在项目中导入了AudioKit库,并进行了正确的设置。如果你遇到任何问题,请参考AudioKit文档或官方网站上的示例代码。