Python中的音频录制
我想用Python从USB麦克风录制短音频片段。我试过pyaudio,它似乎无法与ALSA通信,还有alsaaudio,它的代码示例生成了无法读取的文件Python中的音频录制,python,audio-recording,microphone,alsa,pyaudio,Python,Audio Recording,Microphone,Alsa,Pyaudio,我想用Python从USB麦克风录制短音频片段。我试过pyaudio,它似乎无法与ALSA通信,还有alsaaudio,它的代码示例生成了无法读取的文件 所以我的问题是:用Python从USB麦克风录制剪辑的最简单方法是什么?此脚本在打印当前振幅时录制到test.wav: import alsaaudio, wave, numpy inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE) inp.setchannels(1) inp.setrate(44100) i
所以我的问题是:用Python从USB麦克风录制剪辑的最简单方法是什么?此脚本在打印当前振幅时录制到test.wav:
import alsaaudio, wave, numpy
inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE)
inp.setchannels(1)
inp.setrate(44100)
inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
inp.setperiodsize(1024)
w = wave.open('test.wav', 'w')
w.setnchannels(1)
w.setsampwidth(2)
w.setframerate(44100)
while True:
l, data = inp.read()
a = numpy.fromstring(data, dtype='int16')
print numpy.abs(a).mean()
w.writeframes(data)
我使用PyGStreamer实现了它,它工作得很好,但我不能说它是你问题的解决方案。你能用
array.array('h',data)
或struct
代替numpy吗?我主要把音频输入Python来做信号处理。所以你想要numpy。对于简单的录制,我只需要使用命令行工具,如“arecord”。在Python中,我可以用三行左右的代码进行FFT并检查某个频率是否占主导地位。。我问这个问题已经很久了,我真的应该接受一些东西。