【问题标题】:Getting Pitch with VB.net使用 VB.net 进行宣传
【发布时间】:2011-04-11 16:56:42
【问题描述】:

我想在任何时候获得一首歌的音高。我计划稍后存储这些音高。我如何阅读说...一个 mp3 文件或 wav 文件以在某个点播放音高?

这是一个视觉示例: 假设我想在歌曲的 ^this point 获得音高。

谢谢!

【问题讨论】:

    标签: vb.net audio mp3 wav


    【解决方案1】:

    事情比你想象的要复杂一些。

    虽然存在时域方法(即直接处理 PCM 数据的方法),但频域音高检测将更加准确。您可以阅读非常简化的概述here

    您可能想要的是Fourier Transform,它可用于将信号块从时域转换到频域(即,在给定信号跨度上的频率内容分布)。从那里,您需要分析该块内的频谱。问题变得更加困难,因为在一般情况下,没有最佳方法可以从采样的频谱中推断音调。前面提到的 Wikipedia 文章应该为您研究这些算法奠定了基础。

    最后,值得注意的是,这实际上是一个与语言无关的问题,除非您的主要兴趣是 readingWAV file,特别是使用 VB.NET。

    【讨论】:

    • 非常感谢!我回家后会看看这个:)
    • 我使用 BASS 音频库进行频域变换,然后计算音高。我用它来计算任何歌曲的声学指纹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2016-06-22
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多