[기본] 오디오 형식을 변환하는 다양한 방법들

Willow·2022년 12월 14일
0

SPEECH PROCESSING

목록 보기
1/13

사진은 썸네일용으로 대충 캡처한 사진. 내용과 전혀 무관하다. 예전에 적어둔 코드 좀 지우려고 작성하는 글. 조금만 방치해놔도 일주일, 한 달, 일 년... 시간이 너무 훅훅 지난다.

  1. bash
ffmpeg -i [PATH] -acodec pcm_s16le -ac 1 -ar 16000 [NEW_PATH]
  1. python
import librosa
import torchaudio
import soundfile as sf

# 1. librosa
# 그러나 처음부터 [SAMPLING_RATE]에 원하는 값을 적어두면 되기에 resample 함수를 쓸 일은 없다
# 실제로 assert로 확인해보면 sr=16000 로 load, sr=16000 로 resample 다 y값이 같다
# NOTE: keep sr=None to keep the ORIGINAL sample rate. Otherwise, sr=22050 by default
y, sr = librosa.load(path, sr=sr)
resampled_y = librosa.resample(y, sr, resample_sr)
librosa.write_wav(path, y, sr)

# 2. torchaudio
y, sr = torchaudio.load(path)
resampled_y = torchaudio.functional.resample(waveform=y, orig_freq=sr, new_freq=resample_sr)

# 3. soundfile
y, sr = sf.read(path, samplerate=sr)
sf.write(path, resampled_y, resample_sr, format='WAV', endian='LITTLE', subtype='PCM_16')

음성처리를 할 때엔 기본적으로 16 bit depth, 16KHz, mono, little endian pcm 을 사용한다. 여러가지 적어두었지만 나는 datasets.Audio, librosa, ffmpeg 만 쓴다. 근데 또 소스코드를 보면 torchaudio --> librosa --> soundfile 로 타고 타고 들어가 그 라이브러리를 래핑해서 쓰는 경우가 많기 때문에 결과적으로는 같은 라이브러리를 쓴다고 할 수 있겠다.

profile
Speech Processing/AI/Linguistics/CS/etc.

0개의 댓글