티스토리 뷰

librosa를 이용해서 load, write 하는 방법은 아래처럼 간단합니다.

from librosa.core import load
from librosa.output import write_wav

y, sr = load('/tmp/test.wav', sr=44100)
write_wav('/tmp/new.wav', y, sr)

그런데 write_wav() 하는 과정에서 에러가 발생하는 경우가 있는데요. 

librosa.util.exceptions.ParameterError: data must be floating-point

원본 파일에 따라 에러가 발생되는 경우가 있는 것 같습니다. 일단 상세한 원인은 librosa쪽 코드를 열어봐야겠지만 가장 간단한 해결방법은 librosa를 다시 설치하는 겁니다. 기본 패키지로 설치하는 경우 요즘(2019년 기준)은 0.6.x 버전이 설치되고 있는데 0.5.1로 설치해줍니다. 당장 최신 버전을 꼭 사용해야 하는 이유가 없다면 말이죠. 우선 아래와 같이 기존에 설치된 librosa를 제거해줍니다.

pip uninstall librosa

그리고 0.5.1 버전으로 설치해줍니다.

pip install librosa==0.5.1

이제 다시 write_wave() 함수를 호출해보면 정상적으로 동작하는 것을 확인 할 수 있습니다. 급한대로 나름 꽤 유용한 해결 방법입니다. 혹시 같은 오류 때문에 고생하시는 분이 계셨다면 도움이 되셨기를 바랍니다.

 

 

 

 

 

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday