有没有一种简单的方法来记录几秒钟的声音并将其转换成频率?我有一个USB麦克风和一个覆盆子pi 2 B
在发布的文件(convert2note.py)中,我想知道如何使f等于从麦克风获得的频率。 This is what the program looks like so far
#d=69+12*log(2)*(f/440)
#d is midi, f is frequency
import math
f=raw_input("Type the frequency to be converted to midi: ")
d=69+(12*math.log(float(f)/440))/(math.log(2))
d=round(int(d))
notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
print notes[d % len(notes)]
提前一吨谢谢:D
例如,为了捕获音频,可以使用^{} 程序。有关详细信息,请参阅链接的文档,但它可以简单到:
但下面的代码用于使文件与下面的代码所期望的格式相匹配
(技术上,只有
-c
、-b
和-e
选项是匹配下面代码所必需的。您可以降低采样率-r
以加快处理速度)为了在Python中处理音频,最好将其保存在
wav
文件中,因为Python有一个模块用于读取标准库中的音频。为了将音频转换成频率,我们将以Numpy的fast Fourier transform for real input形式使用discrete Fourier transform。请参见下面的代码片段,其中我还使用matplotlib进行绘图。
下面的代码假设是一个2通道(立体声)16位WAV文件。
现在,
avgf
数组保存左右频率的平均值。情节是这样的如您所见,声音信号通常包含许多频率。
相关问题 更多 >
编程相关推荐