[Python] PCM 파일 길이 측정

Koowater·2023년 1월 1일
0

오디오 파일을 다루다 보면 오디오의 길이(duration)를 알아야 하는 경우가 많습니다.
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')

wav 파일은 헤더 크기만 고려하면 되는 경우도 있지만 audio data 이외의 다른 정보도 포함될 수 있으므로 이 방법으로 길이를 측정할 경우 오차가 생길 가능성이 있습니다. 그렇기 때문에 librosa 등 외부 패키지를 사용하기를 추천합니다.

profile
Speech to Text를 공부하고 있습니다.

0개의 댓글