저는 파이썬과이 경우 PyAudio를 사용하여 오디오 캡처/녹음에 대해 배우려고합니다. 나는 몇 가지 예를 살펴 본다이 하나 건너 온입니다 : 내가 무엇을 CHUNK, FORMAT, 채널 및 모든 말과 할 RATE의 대략적인 이해를 가지고 있다고 생각PyAudio를 사용하여 특정 시간 동안 오디오를 녹음합니까?
import pyaudio
import wave
CHUNK = 2
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 3
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(int(RATE/CHUNK * RECORD_SECONDS))
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()
,하지만 난 이해가 안 돼요 특정 시간 동안의 녹음은 작동합니다. CHUNK의 값을 2에서 4로 변경하려고하면 int (RATE/CHUNK * RECORD_SECONDS) 값이 반으로 줄어 듭니다. 그러나 코드를 실행하려면 지정된 3 초 동안 레코딩이 계속 발생합니다.
궁극적으로이 for 루프는 범위가 반으로 줄어들면 동일한 양의 시간에 어떻게 실행됩니까?
죄송합니다. 이해가되지 않으면 어리석은 질문 인 것 같습니다.
편집 : 범위를 변경하지 않고 수동으로 읽은 샘플 수를 변경하면 for 루프가 반복됩니다 (따라서 범위는 (0, 60000)에서 일정하지만 데이터 = sample.read (CHUNK)가 변경됨) 기록하는데 걸린 시간. 즉, 샘플을 두 번 반복하면 각 반복을 읽는 데 걸리는 시간이 두 배로 늘어나 데이터를 처리하는 데 2 배의 시간이 걸립니다. 그러나 그렇다면 사용 가능한 처리 능력에 따라 컴퓨터마다 다른 시간이 달라지지 않을까요?
'CHUNK'가 증가했기 때문에이 줄'data = stream.read (CHUNK)'는'CHUNK'가 아닌'stream.read (2)'를 – depperm
처리하는데 오래 걸립니다. 그렇지 않으면 읽은 총 바이트 수는 동일합니다. –
@depperm 그게 내가 생각한 것이지만 컴퓨터가 얼마나 빨리 처리 할 수 있느냐에 따라 시간이 바뀌지 않을까? – WillR27