gpt4 book ai didi

Swift 3 现场麦克风电平捕获

转载 作者:可可西里 更新时间:2023-11-01 00:56:58 25 4
gpt4 key购买 nike

我正在尝试捕捉来自手机麦克风的电平。我正在设置一个应用程序,以便用户可以创建语音备忘录。我有代码设置来记录备忘录并将它们保存在手机上我现在正在尝试设置声波以在用户键入时为 View 设置动画。

我已经开始使用图书馆 SwiftSiriWaveformView效果很好。现在我只需要弄清楚如何捕捉麦克风电平。

我创建了一个方法

internal func refreshAudioView(_:Timer) {
if self.recorder == nil {
self.endTimer()

return
}

print("Average Power: \(CGFloat(self.recorder.averagePower(forChannel: 0)))")
}

在这个方法中添加到定时器

@IBAction func startRecordingPressed(_ sender: UIButton) {
if self.recorder != nil {
//if here it means that the record button was double clicked
return
}
self.filename = "wnw-voice-memo\(getDateFormatter("dd-MM-y_hmmss").string(from: Date())).m4a"
self.url = getDocumentsDirectory().appendingPathComponent(self.filename)
print(self.url)

let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]

do {
self.recorder = try AVAudioRecorder(url: self.url, settings: settings)
self.recorder.delegate = self
self.recorder.record()

timer = Timer.scheduledTimer(timeInterval: 0.009, target: self, selector: #selector(refreshAudioView(_:)), userInfo: nil, repeats: true)
} catch {
//failed to record!
}
}

但是,当我运行该应用程序时,平均功率仅显示为 Average Power: -160.0

我曾尝试对此进行研究,但我只找到了与从保存文件而非实时流生成音频波相关的其他解决方案。

有谁知道如何获取当前的麦克风电平?

最佳答案

设置 recorder.meteringEnabled = true 并在 refreshAudioView 中调用 recorder。 updateMeters() 在访问 peakPowerForChannelaveragePowerForChannel 之前。除了您已经监控的 channel 0 之外,还请尝试读取 channel 1 的功率。

关于Swift 3 现场麦克风电平捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44908954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com