[Audio] Python에서 Audio 불러오기
2024. 7. 15. 18:08ㆍDevelopers 공간 [Shorts]/Vision & Audio
728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
이번 글에서는 Python을 활용해 Audio를 불러오는 것을 정리하고자 합니다.
추가적으로 패키지에서 얻을 수 있는 정보들 중 활용가능했던 것을 보이겠습니다.
2. Why? (원인)
- X
3. How? (해결책)
3가지 방법을 소개하겠습니다. path는 "path/to/file.mp3"이라고 가정하겠습니다.
1. Soundfile 활용
import soundfile as sf
# Version1
audio, samplerate = sf.read(path, samplerate=44100)
# Version2
audio_ob = sf.SoundFile(file)
samplerate=audio_ob.samplerate
channels=audio_ob.channels
subtype=audio_ob.subtype
** 불러진 audio는 [channels, samplerate*duration]으로 이루어져있습니다.
파일을 저장할 수도 있습니다.
sf.write('new_file.wav', audio, 44100)
2. librosa활용
import librosa
audio, samplerate =librosa.load(path, mono=False, sr=22050)
resample이나 torch로 변환도 가능합니다.
audio = librosa.resample(audio, orig_sr=samplerate, target_sr=44100)
import torch
audio_tensor = torch.from_numpy(audio)
duration이나 bpm도 얻을 수 있습니다.
duration = int(librosa.get_duration(y=audio, sr=samplerate))
minutes = int(duration/60)
seconds = duration%60
beat = librosa.beat.beat_track(y=audio, sr=samplerate)
bpm = beat[0][0]
3. pedalboard 활용
from pedalboard.io import AudioFile
with AudioFile(path) as f:
audio=f.read(f.frames)
samplerate=f.samplerate
resample이나 torch로 변환도 가능합니다.
with AudioFile(path).resampled_to(44_100) as f:
audio=f.read(f.frames)
samplerate=f.samplerate
import torch
audio_tensor=torch.from_numpy(audio)
파일을 저장할 수도 있습니다.
with AudioFile("new_file.wav", "w", samplerate=44100, num_channels=2) as f:
f.write(audio)
https://librosa.org/doc/latest/generated/librosa.load.html
https://spotify.github.io/pedalboard/reference/pedalboard.io.html
728x90
반응형
'Developers 공간 [Shorts] > Vision & Audio' 카테고리의 다른 글
[Audio] Python Pedalboard를 활용해 Audio를 바꾸기 (2) | 2024.10.10 |
---|---|
[Audio] Python활용해 BPM 측정하기 (0) | 2024.08.08 |
[Audio] Python에서 MIDI 파일 다루기 (0) | 2024.07.15 |
[NLP] Python으로 Regular Expression 활용 예시 (0) | 2024.07.07 |
[NLP] Faiss와 CLIP을 이용한 간단한 Text Retrieval 구현하기 (0) | 2024.06.06 |