当前位置: 首页 > 面试题库 >

假人的频率/音调检测

阴礼骞
2023-03-14
问题内容

尽管我在此站点上有许多有关音高检测概念的问题……他们都处理了我不熟悉的神奇 FFT
。我正在尝试构建需要实现音高检测的Android应用程序。我绝对不了解用于执行此操作的算法。

它不能 硬可以吗?毕竟,Android市场上大约有80亿个吉他调音器应用程序。

有人可以帮忙吗?


问题答案:

快速傅立叶变换将功能从时域更改为频域。因此,而不是f(t)在那里f是信号,你是从麦克风获取和t是信号的时间指数,你g(θ)那里g是的FFT
fθ是频率。一旦有了g(θ),您只需要找到θ振幅最大的频率,即“最大”频率即可。那将是您要拾取的声音的主要音调。

至于实际实现FFT的方法,如果您搜索“快速傅立叶变换示例代码”,则会得到很多示例。



 类似资料:
  • 问题内容: 我正在编写代码来分析语音所唱的单个音频。我需要一种方法来分析音符的频率。当前,我正在使用PyAudio录制音频文件,该文件存储为,然后立即播放。 问题出在while循环上。由于某种原因,该条件永远不会成立。我打印了两个值(len(data)和(chunk * swidth)),它们分别是8192和4096。然后,我尝试在while循环中使用2 * chunk * swidth,这引发了

  • 问题内容: 我正在设计一个简单的调谐器,所以我的目标是显示音符名称(A,B,F#)以及理论声音和实际输入之间的 距离( 以分为单位)。 我是音频和信号处理的新手,所以我做了一些研究,发现 了一个 叫做快速傅立叶变换 的东西 ,它可以分析字节并给我频率。另外,我发现了一些Java库,例如通用数学和JTransforms,所以我不会自己编写硬代码。 我相信就这样,因为每个范围的频率都可以以相同的气质直

  • 问题内容: 我目前正在尝试使用Android实现一些代码,以检测何时通过手机的麦克风播放了多个特定音频频率范围。我已经使用AudioRecord该类设置了该类: 然后读取音频: 执行FFT是我遇到的困难,因为我在这方面的经验很少。我一直在尝试使用此类: Java和Complex类中的FFT一起使用 然后,我发送以下值: 这很容易让我误解了此类的工作原理,但是返回的值到处都是跳跃的,即使在沉默中也不

  • 问题内容: 我一直在尝试通过以下代码调整音频片段的音调: http://developer.android.com/guide/topics/media/audio- capture.html 我的猜测是应该使用进行此调整。 http://developer.android.com/reference/android/media/MediaRecorder.html 但是,我不确定调用哪种方法来改

  • 我使用的是libav 9.6,通过自制安装。 尽管在命令行输出的stdout中显示了采样率,但选项根本不会显示音频文件的采样率信息。 下面是BASH终端输出: 我向libav提交了一张票,但我只是好奇是否有任何其他方法可以从libav探测UTIL中提取采样率。我很感激事先的回答。 PS:在这种情况下,ffmpeg(ffprobe)的上游项目也会遇到同样的问题。

  • 问题内容: 好的,我正在尝试做的是一种音频处理软件,可以检测到一个普遍的频率,如果该频率播放了足够长的时间(几毫秒),我知道我得到了肯定的匹配。我知道我将需要使用FFT或类似的方法,但是在这个数学领域中,我很烂,我确实在互联网上进行搜索,但没有找到仅能执行此操作的代码。 尝试接收的目标是使自己成为一种自定义协议,以发送数据通过声音,每秒需要非常低的比特率(5-10bps),但在发送端也非常有限,因