Joh*_*ohn 3 audio arduino microphone pyaudio arduino-uno
我想将便携式计算机的音频输入(只是Macbook中的内置麦克风)的音量数据发送到Arduino,并尽可能减少延迟。
我看到使用PyAudio捕获音频输入并不难,但是该模块的大多数示例都将音频读数保存为wav或其他文件格式。将其读入PyAudio时是否可以直接测量音量,还是需要将其保存到文件并分析该文件?除了音量,我不在乎音频中的任何其他数据。
非常感激。
您可以实时读取该卷。为此,请设置记录,但不保存数据,只需对其进行处理即可。在这里,我将使用Python随附的audioop模块获取每个块的RMS值。(此示例只是PyAudio网页上的记录演示的修改,其中包括audioop.rms。)
import pyaudio
import wave
import audioop
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
rms = audioop.rms(data, 2) # here's where you calculate the volume
stream.stop_stream()
stream.close()
p.terminate()
Run Code Online (Sandbox Code Playgroud)
当然,如果您不喜欢RMS,audioop还有其他音量指标。