Python中的录音

Posted

技术标签:

【中文标题】Python中的录音【英文标题】:Audio Recording in Python 【发布时间】:2011-10-15 14:39:10 【问题描述】:

我想用 Python 录制来自 USB 麦克风的短音频片段。我试过 pyaudio,它似乎无法与 ALSA 通信,还有 alsaaudio,它的代码示例会产生一个不可读的文件。

所以我的问题是:用 Python 从 USB 麦克风录制剪辑的最简单方法是什么?

【问题讨论】:

Detect & Record Audio in Python 的可能重复项 我已经使用了 PyGStreamer,它运行良好,但我不能说它是您问题的解决方案。 【参考方案1】:

此脚本在打印当前振幅时记录到 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)

【讨论】:

你不能用array.array('h', data)struct代替numpy吗? 我主要是把音频导入Python做信号处理。为此,您需要 numpy.对于简单的录制,我只需要使用像“arecord”这样的命令行工具。在 Python 中,我可以进行 FFT 并检查某个频率是否占主导地位,只需三行左右的代码。 有人对此进行验证并评论它是否有效。自从我问这个问题已经很久了,我真的应该接受一些东西。

以上是关于Python中的录音的主要内容,如果未能解决你的问题,请参考以下文章

提高android中的录音质量?

在 C# 中的录音设备上播放声音

Swift 中的实时录音

为啥我的 iOS 录音回调中的音频缓冲区未满?

枚举 NAudio 中的录音设备

如何根据录音中的采样率计算 FFT 点