wave — WAV 파일 읽기와 쓰기

wave — WAV 파일 읽기와 쓰기

wave 모듈은 Waveform Audio "WAVE"(또는 "WAV") 파일 형식에 대한 편리한 인터페이스를 제공해요. 압축되지 않은 PCM 인코딩 wave 파일만 지원돼요. 버전 3.12에서 확장 형식이 KSDATAFORMAT_SUBTYPE_PCM인 경우 WAVE_FORMAT_EXTENSIBLE 헤더 지원이 추가되었어요.

이 모듈은 다음 함수와 예외를 정의해요:

출처: Python documentation

본문

wave.open(file, mode=None)

file이 문자열이면 그 이름으로 파일을 열고, 그렇지 않으면 파일류 객체(file-like object)로 취급해요. mode'rb'(읽기 전용) 또는 'wb'(쓰기 전용)일 수 있어요. 읽기/쓰기를 모두 허용하지는 않는다는 점에 주의하세요. 'rb' 모드는 Wave_read 객체를, 'wb' 모드는 Wave_write 객체를 반환해요. mode가 생략되고 파일류 객체가 file로 전달되면 file.modemode의 기본값으로 사용돼요.

파일류 객체를 전달하면 wave 객체의 close() 메서드가 호출될 때 그 객체를 닫지 않아요. 파일 객체를 닫는 것은 호출자의 책임이에요. open() 함수는 with 문에서 사용할 수 있어요.

exceptionwave.Error

WAV 명세를 위반하거나 구현 결함에 부딪혀 어떤 것이 불가능할 때 발생하는 오류예요.

Wave_read 객체

classwave.Wave_read

WAV 파일을 읽어요. open()이 반환한 Wave_read 객체는 다음 메서드를 가져요:

  • close() — wave가 연 스트림을 닫고 인스턴스를 사용할 수 없게 만들어요.
  • getnchannels() — 오디오 채널 수를 반환해요(모노는 1, 스테레오는 2).
  • getsampwidth() — 샘플 너비를 바이트 단위로 반환해요.
  • getframerate() — 샘플링 주파수를 반환해요.
  • getnframes() — 오디오 프레임 수를 반환해요.
  • getcomptype() — 압축 타입을 반환해요('NONE'이 유일하게 지원되는 타입).
  • getcompname()getcomptype()의 인간이 읽을 수 있는 버전.
  • getparams()(nchannels, sampwidth, framerate, nframes, comptype, compname) namedtuple을 반환해요.
  • readframes(n) — 최대 n개의 오디오 프레임을 bytes 객체로 읽고 반환해요.
  • rewind() — 파일 포인터를 오디오 스트림의 시작으로 되감아요.
  • getmarkers(), getmark(id) — 구식 aifc 모듈과의 호환을 위해 정의된 메서드로, 버전 3.13에서 더 이상 사용되지 않고 3.15에서 제거될 예정이에요.
  • setpos(pos) — 파일 포인터를 지정된 위치로 설정해요.
  • tell() — 현재 파일 포인터 위치를 반환해요.

Wave_write 객체

classwave.Wave_write

WAV 파일을 써요.

시커블(seekable) 출력 스트림의 경우 wave 헤더는 실제로 쓰인 프레임 수를 반영하도록 자동으로 업데이트돼요. 시커블하지 않은 스트림의 경우 첫 프레임 데이터가 쓰일 때 nframes 값이 정확해야 해요.

주요 메서드:

  • close()nframes가 올바른지 확인하고, wave가 연 파일이면 닫아요.
  • setnchannels(n) / getnchannels() — 채널 수 설정/반환
  • setsampwidth(n) / getsampwidth() — 샘플 너비 설정/반환
  • setframerate(n) / getframerate() — 프레임 레이트 설정/반환
  • setnframes(n) / getnframes() — 프레임 수 설정/반환
  • setcomptype(type, name) / getcomptype() / getcompname() — 압축 타입 설정/반환. 현재 NONE 압축만 지원돼요.
  • setparams(tuple)(nchannels, sampwidth, framerate, nframes, comptype, compname) 튜플로 모든 매개변수를 설정해요.
  • getparams() — 현재 출력 매개변수를 담은 namedtuple을 반환해요.
  • tell() — 파일의 현재 위치를 반환해요.
  • writeframesraw(data)nframes를 수정하지 않고 오디오 프레임을 써요.
  • writeframes(data) — 오디오 프레임을 쓰고 nframes가 올바른지 확인해요.

writeframes() 또는 writeframesraw()를 호출한 후에는 매개변수를 설정하는 것이 유효하지 않으며, 시도하면 wave.Error가 발생한다는 점에 주의하세요.

더 알아보기 (Learn more)