我需要錄製24位音頻(因爲它是音頻數字化的檔案標準)。然而,波庫似乎只能達到16位。用pyaudio錄製24位音頻
它看起來像pyaudio可以使用24位音頻,但我發現每個示例顯示使用波庫的pyaudio,這意味着它必須保存16位。
是否有可能使用pyaudio錄製和播放24位音頻?
我需要錄製24位音頻(因爲它是音頻數字化的檔案標準)。然而,波庫似乎只能達到16位。用pyaudio錄製24位音頻
它看起來像pyaudio可以使用24位音頻,但我發現每個示例顯示使用波庫的pyaudio,這意味着它必須保存16位。
是否有可能使用pyaudio錄製和播放24位音頻?
是的,這是可能的。你只需要PyAudio的record example並用pyaudio.paInt24
代替pyaudio.paInt16
。
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()
這個工程,我不知道是否有可能再次檢查這是真正的24位,而不是一個24位記錄,下轉換成16位和thens保存爲24位文件。 – loneraver
檢查最高8位是否爲0,如果不是,則說明你有真正的24位記錄。
如果你沒有義務使用'pyaudio',你可能想看看這個問題:http://stackoverflow.com/questions/16767248/how-do-i-write-a-24-bit- wav-file-in-python – lmjohns3
我想使用pyaudio,因爲它具有一些很好的功能,使可視化成爲可能。 – loneraver