Próbuję nagrać dźwięk za pomocą AVAudioRecorder
. Muszę stworzyć prosty przebieg tak:iOS: Utwórz prostą animację fali dźwiękowej
Gdy użytkownik mówi do mikrofonu okrąg wskazuje poziom głosu użytkownika. Próbowałem zmierzyć się głos z tego kodu, ale kod nie wykrywa żadnego bufora i nie działa:
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))
}
}
nagrywania audio:
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 {
}
}
dodałem coś do odpowiedzi, które myślę, że jest blisko do prawej. –
ale jeden problem można sprawdzić edytowany kod? –
Jeśli proporcje mieszczą się w przedziale od 0 do 1, wygląda to dla mnie dobrze. –