我需要录制 24 位音频(因为它是音频数字化的存档标准)。但是,wave 库似乎只能达到 16 位。
看起来 pyaudio 可以处理 24 位音频,但我发现的每个示例都显示 pyaudio 使用 wave 库,这意味着它必须保存 16 位。
是否可以使用 pyaudio 录制和播放 24 位音频?
Yes it is possible. You just have to take the record example of PyAudio and replace pyaudio.paInt16
by pyaudio.paInt24
.
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt24
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)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
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(RATE)
wf.writeframes(b''.join(frames))
wf.close()
检查顶端 8 位是否为 0。如果不是,则您拥有真正的 24 位录音。