gpt4 book ai didi

iOS : Create a simple audio waveform animation

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:28 26 4
gpt4 key购买 nike

我正在尝试使用 AVAudioRecorder 录制音频。我需要创建一个像这样的简单波形:

enter image description here

当用户对着麦克风说话时,一个圆圈表示用户声音的音量。我试图用这段代码测量语音,但代码没有检测到任何缓冲区并且无法工作:

func levelTimerCallback(timer:Timer) {

//we have to update meters before we can get the metering values
audioRecorder.updateMeters()

//print to the console if we are beyond a threshold value. Here I've used -7
if audioRecorder.averagePower(forChannel: 1) > -7 {

print(" level I'm hearin' you in dat mic ")
print(audioRecorder.averagePower(forChannel: 0))
}
}

录制音频:

func startRecording() {

let audioSession = AVAudioSession.sharedInstance()
do {

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


audioRecorder = try AVAudioRecorder(url: self.directoryURL(), settings: settings)
audioRecorder.delegate = self
audioRecorder.prepareToRecord()
audioRecorder.isMeteringEnabled = true


} catch {

finishRecording(success: false)
}

do {

try audioSession.setActive(true)
audioRecorder.record()

TIMERRRRR = Timer.scheduledTimer(timeInterval: 0.02, target: self, selector: #selector(ViewController.levelTimerCallback), userInfo: nil, repeats: true)

} catch {

}

}

最佳答案

我能看到的两个问题。

首先是您在函数 levelTimerCallback 中使用错误的 channel 号进行测试。您的测试应该针对 channel 0。

另一个是-7的值其实很大声。 averagePower 返回 -160 和 0 之间的 float 。尝试针对 -160 开始测试并增加它以降低灵敏度。

这会将您的测试更改为:

if audioRecorder.averagePower(forChannel: 1) > -160 {
...
}

输入只有一个 channel ,计数从 0 开始。稍后您可以在调用 audioRecorder.averagePower 时使用它。

要获得线性比例,您需要进行插值。更改 scale 的值以更改范围。 proportion 将介于 0 和 scale 之间。

let lowerLimit: Float = -100.0

func levelTimerCallback(timer:Timer) {

audioRecorder.updateMeters()

let power = audioRecorder.averagePower(forChannel: 0)
if power > lowerLimit {
// proportion will have a value between 0 and scale
let scale: Float = 10.0
let proportion = -scale * (power - lowerLimit) / lowerLimit
}
}

编辑:修复了比例计算

关于iOS : Create a simple audio waveform animation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178289/

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