首页 > 解决方案 > 使用 PyAudio 录制音频时出现异常幅度

问题描述

我正在尝试使用 PyAudio 从我的麦克风中读取几秒钟的音频。录制音频后,我想将其保存到输出文件并绘制录制音频的幅度。这是我目前正在使用的代码:

import wave

import pyaudio
import numpy as np
import matplotlib.pyplot as plt


CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
SAMPLING_FREQUENCY = 44100
RECORD_SECONDS = 2
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

stream = p.open(
    format=FORMAT,
    channels=CHANNELS,
    rate=SAMPLING_FREQUENCY,
    input=True,
    frames_per_buffer=CHUNK
)

# print('Press any key to start recording:')
# input()
print("* recording")

frames = []

for i in range(0, int((SAMPLING_FREQUENCY * RECORD_SECONDS) / CHUNK)):
    data = stream.read(CHUNK)
    frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(SAMPLING_FREQUENCY)
wf.writeframes(b''.join(frames))
wf.close()

amplitudes = np.frombuffer(b''.join(frames), dtype='int16')

plt.plot(amplitudes)
plt.show()

我尝试在安静的环境中进行录音(接近完全静音),虽然音频被正确录制,但如果您查看幅度图,您会发现有时在开始时会有异常高的值记录,如下所示(幅度在 y 轴上): 在此处输入图像描述

另外,如果你听录音,你会清楚地听到开头的“咔哒”声。有时,在完全相同的条件下(即安静的环境),您会得到如下图所示的精美图: 在此处输入图像描述

显然,在这种情况下,您在听录音时不会听到任何“咔哒”声。

有谁知道什么可能导致这个问题?我尝试过使用不同的麦克风,但问题仍然存在。代码有什么问题吗?

PS 如果您想知道,“咔哒”声不是因为我单击鼠标或按键盘键运行脚本。

标签: pythonaudiopyaudio

解决方案


推荐阅读