【发布时间】:2011-04-11 16:56:42
【问题描述】:
我想在任何时候获得一首歌的音高。我计划稍后存储这些音高。我如何阅读说...一个 mp3 文件或 wav 文件以在某个点播放音高?
这是一个视觉示例: 假设我想在歌曲的 ^this point 获得音高。
谢谢!
【问题讨论】:
我想在任何时候获得一首歌的音高。我计划稍后存储这些音高。我如何阅读说...一个 mp3 文件或 wav 文件以在某个点播放音高?
这是一个视觉示例: 假设我想在歌曲的 ^this point 获得音高。
谢谢!
【问题讨论】:
事情比你想象的要复杂一些。
虽然存在时域方法(即直接处理 PCM 数据的方法),但频域音高检测将更加准确。您可以阅读非常简化的概述here。
您可能想要的是Fourier Transform,它可用于将信号块从时域转换到频域(即,在给定信号跨度上的频率内容分布)。从那里,您需要分析该块内的频谱。问题变得更加困难,因为在一般情况下,没有最佳方法可以从采样的频谱中推断音调。前面提到的 Wikipedia 文章应该为您研究这些算法奠定了基础。
最后,值得注意的是,这实际上是一个与语言无关的问题,除非您的主要兴趣是 reading 和 WAV file,特别是使用 VB.NET。
【讨论】: