Ios 获取带麦克风的录音机的频率

Ios 获取带麦克风的录音机的频率,ios,swift,audio,avkit,Ios,Swift,Audio,Avkit,我需要计算用麦克风录制的声音的频率,以赫兹为单位。 我现在所做的是使用AVAudioRecorder收听麦克风,计时器每0.5秒调用一个特定功能。下面是一些代码: 类ViewController:UIViewController{ var录音机:AVAudioRecorder? 变量计时器:计时器? 重写func viewDidLoad(){ super.viewDidLoad() //加载视图后执行任何其他设置。 let permission=AVAudioSession.sharedIns

我需要计算用麦克风录制的声音的频率,以赫兹为单位。 我现在所做的是使用
AVAudioRecorder
收听麦克风,计时器每0.5秒调用一个特定功能。下面是一些代码:


类ViewController:UIViewController{
var录音机:AVAudioRecorder?
变量计时器:计时器?
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
let permission=AVAudioSession.sharedInstance().recordPermission
如果权限==AVAudioSession.RecordPermission.Undeminated{
AVAudioSession.sharedInstance().requestRecordPermission{(已授予)中的权限
如果允许的话{
打印(“已授予权限!”)
}否则{
打印(“未授予权限!”)
}
}
}如果权限==AVAudioSession.RecordPermission.grated,则为else{
做{
尝试AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.record)
让设置=[
AVSampleRateKey:44100.0,
AVFormatIDKey:kAudioFormatAppleLossless,
AVNumberOfChannelsKey:1,
AVEncoderAudioQualityKey:AVAudioQuality.max
]as[字符串:任意]
audioRecorder=尝试AVAudioRecorder.init(url:NSURL.fileURL(路径:“dev/null”),设置:设置
录音机?.prepareToRecord()
录音机?.isMeteringEnabled=真
录音机?.record()
timer=timer.scheduledTimer(
时间间隔:0.5,
目标:自我,
选择器:#选择器(分析),
userInfo:nil,
重复:对
)
}捕捉(让错误){
打印(“Error!\(Error.localizedDescription)”)
}
}
}
@objc func analyze(){
录音机?.updateMeters()
设峰值=录音机?峰值功率(用于通道:0)
打印(“峰值:\(峰值)”)
录音机?.updateMeters()
}
}
我不知道如何得到声音的频率(赫兹)。我也可以使用第三方框架


谢谢。

任何给定的录制声音都不会有单一频率。它将有不同振幅的频率混合

您需要对输入声音进行频率分析,通常使用FFT(快速傅立叶变换)对音频数据进行分析

谷歌搜索揭示了这篇关于使用Accelerate框架进行频率分析的文章:


任何给定的录制声音都不会有单一频率。它将有不同振幅的频率混合

您需要对输入声音进行频率分析,通常使用FFT(快速傅立叶变换)对音频数据进行分析

谷歌搜索揭示了这篇关于使用Accelerate框架进行频率分析的文章:


苹果公司还使用新的(更易于使用的)API改进了他们在这方面的文档:苹果公司还使用新的(更易于使用的)API改进了他们在这方面的文档: