Python에서 PCM 파일의 길이를 측정하고 wav 파일로 저장하는 코드를 알아보겠습니다.
import soundfile as sf
import numpy as np
import os
from os.path import join
# --- pcm file duration ---
sample_pcm_path = join('sample_data', 'sample.pcm')
pcm_size = os.path.getsize(sample_pcm_path) # byte 단위로 파일 크기를 알 수 있다.
# 이 pcm 파일은 하나의 sample은 2byte, sample rate는 8000로 저장되어 있습니다.
sample_size = 2
sample_rate = 8000
duration = pcm_size / sample_rate / sample_size
# --- pcm to wav ---
with open(sample_pcm_path, 'rb') as f:
binary = f.read()
waveform = np.frombuffer(binary, dtype=np.int16)
sf.write(join('sample_data', 'sample_from_pcm.wav'),
waveform, sample_rate, 'PCM_16')