인공지능/파이썬

파이썬으로 .wav 파일 읽기

백관구 2020. 7. 17. 14:15
반응형

안녕하세요 :)

 

    데이콘 대회를 준비하던 중 음성 데이터(.wav)를 처리해야 해서 이것저것 시도해보다가 가장 간단한 방법을 찾았습니다. scipy 패키지를 사용하면 손쉽게 wav 파일을 읽을 수 있습니다.

 

from scipy.io import wavfile

path  = "음성 자료 경로"
fname = "음성 파일명.wav"

fs, data = wavfile.read(path + fname) # Sample rate of wav file, Data read from wav file

 

    scipy.io 패키지에서 wavfile이라는 모듈을 임포트 해오면 wavfile.read("파일 이름") 함수를 통해 쉽게 .wav 파일을 수치화한 형태로 읽을 수 있습니다. 여기서 저장되는 fsdata는 각각 해당 음성 파일의 주파수(초당 샘플 수, 스칼라)와 그 수치(위상, 벡터)를 가리킵니다.

 

반응형

 


 

[예제]

    아래 링크는 CS101에서 제공하는 CantinaBand3.wav 파일입니다.

 

CS 101- Sample Sound Files

 

www2.cs.uic.edu

 

CantinaBand3.wav

 

from scipy.io import wavfile

path  = "./DATA/"
fname = "CantinaBand3.wav"

fs, data = wavfile.read(path + fname)

print(fs, data.shape)
print(data)

22050 (66150,) [ 3 7 0 ... -12 -427 -227]

 

    즉, 1초에 22050 샘플이 기록되어있고(22050 Hz), 3초 길이의 음성 자료이므로 총 66150의 샘플이 들어있습니다. 해당 데이터는 정수형으로 구성 된 것을 볼 수 있습니다. 데이터를 시각화하면 다음과 같습니다.

 

import matplotlib.pyplot as plt

plt.figure(figsize = (12, 3))
plt.plot(data, lw = 1)
plt.xlabel("sample")
plt.ylabel("data")
plt.xlim(0, len(data))

 

이상입니다 :>

반응형