我正在iphone上制作应用程序,我需要一种方法来检测通过麦克风传入的声音。 (即。#,G,C♭等) 我以为我会使用AVAudio,但我真的不知道,我在文档中找不到任何东西..
任何帮助?
答案 0 :(得分:4)
音符只不过是特定的声音频率。您需要一种方法来分析输入信号中的所有频率,然后找到一种方法来隔离各个音符。
使用Fast Fourier Transform (FFT)查找音频信号中的频率。在线提供了大量源代码,可以根据音频信号计算FFT。特别是,oScope为iPhone提供了一个开源解决方案。
修改 Pitch detection 似乎是您尝试执行的操作的技术名称。这里对similar question的回答可能有用。
答案 1 :(得分:2)
用于音乐音调估算的iOS API没有任何内置功能。您必须编写自己的DSP功能代码。加速框架中的FFT将为您提供PCM采样波形的频谱信息,但频率与心理感知音调不同。
估计频率和音高有很多好的和坏的方法。我在DSP resources web page上列出了各种估算方法。
您可以查看Apple的aurioTouch示例应用程序,获取iOS设备音频输入并显示其频谱的示例。
答案 2 :(得分:1)
就像@ e.James所说,你正在寻找一个音符的音高,它被称为音高检测。 CCRMA,斯坦福大学有大量资源供您选择。只需google进行音高检测,您就会看到一系列精彩的算法。只要想要找到音频样本块的FFT,就可以使用Accelerate Framework的内置FFT函数(参见this和this)或使用MoMu toolkit。使用MoMu的好处是它可以将音频流分解为样本,并使用它自己的功能轻松应用FFT。