【问题标题】:Get sinewave display from audio file从音频文件中获取正弦波显示
【发布时间】:2015-05-21 18:21:07
【问题描述】:

使用 Swift 将音频文件转换为简单的正弦波以显示音高的最佳方法是什么?

我问是因为许多在线文档似乎已经过时了。

【问题讨论】:

  • 您是指实际的音高识别,还是只是一些漂亮的波形图形向用户展示?
  • 您看过哪些文档?根据您的说法,听起来您想使用 FFT 将音频波分解为其正弦分量......这是正确的吗?
  • @Linuxios 实际识别音调(低 = 图中下降;高 = 上升)
  • @narner 我试过看一些,但这个看起来是最新的:flexmonkey.blogspot.com/2014/10/… 但是,我正在尝试从音频中获取图表。本教程创建音频。我也尝试过转换这个 java 应用程序:github.com/drshriveer/sinewave
  • 正如@narner 所说,您需要使用傅里叶变换将音频分解为正弦曲线。 here 有一个很好的概念解释。从那里您可以看到如何将音频作为线性 PCM 获取,并计算其 FFT,可能使用 Accelerate 库。

标签: ios swift audio signal-processing


【解决方案1】:

我不确定您是否需要实际代码或一般概念。我可以给后者。

当您读取单声道文件中的音频数据时,每个音频样本数据点都是您将在 Y 轴上绘制的值。对于 CD 音频,这些值的范围是 -32768 到 32767。所以在伪代码中:

int samples[NUM_SAMPLES]; // assume this has your data
moveTo(0, samples[0])
for (i = 1; i < NUM_SAMPLES; i++) {
  lineTo(i, samples[i]);
}

如果你想水平缩放波形显示,代码就更微妙了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多