2014-04-29 47 views
2

我需要錄製24位音頻(因爲它是音頻數字化的檔案標準)。然而,波庫似乎只能達到16位。用pyaudio錄製24位音頻

它看起來像pyaudio可以使用24位音頻,但我發現每個示例顯示使用波庫的pyaudio,這意味着它必須保存16位。

是否有可能使用pyaudio錄製和播放24位音頻?

+0

如果你沒有義務使用'pyaudio',你可能想看看這個問題:http://stackoverflow.com/questions/16767248/how-do-i-write-a-24-bit- wav-file-in-python – lmjohns3

+0

我想使用pyaudio,因爲它具有一些很好的功能,使可視化成爲可能。 – loneraver

回答

1

是的,這是可能的。你只需要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() 
+0

這個工程,我不知道是否有可能再次檢查這是真正的24位,而不是一個24位記錄,下轉換成16位和thens保存爲24位文件。 – loneraver

-1

檢查最高8位是否爲0,如果不是,則說明你有真正的24位記錄。