공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/이것저것_개발일지

Python으로 Praat 활용하기 - parselmouth Package 사용법

inspirit941 2020. 7. 28. 10:41
반응형

Praat 프로그램의 Python Wrapper 패키지 사용법을 찾아보다가,

공식 docs에도 예시코드가 거의 없고 사용법 포스팅도 거의 없길래 직접 남기는 포스트.


2020.04 ~ 2020.07 글로벌경영학과 김영한 교수님 Research Assistant 작업.

 

교수님의 연구 어시스턴스로 'CEO의 음성 데이터와 해당 기업 주가와의 상관관계'를 조사하는 일이 필요했다.

800여 개의 CEO 인터뷰 음성파일 (확장자 wav)에서 Formant 0 ~ Formant 5까지의 값을 추출하는 작업을 맡았다.

0.1초 단위로 Formant값을 추출해서 각 음성별로 csv 파일을 생성한 뒤, 얻은 결과를 토대로 분석을 진행해야 했다.

 

음성 파일에서 Pitch나 Formant를 추출하는 프로그램으로는 Praat이 있다.

C++ 기반 프로그램으로, 자동화 작업을 위한 스크립트도 지원하는 프로그램이다.

 

하지만 praat 프로그램을 로컬에서 활용하려면

프로그램을 로컬에 설치하고,

구글 드라이브로 공유받은 음원파일을 전부 다운받은 뒤,

각 파일의 0.1초별로 Formant 0 ~ 5까지의 값이 있는 row를 생성해 csv 파일로 저장하고

다시 드라이브에 업로드하는 작업을 거쳐야 했다.

 

나는 작업에 필요한 파일을 전부 구글 드라이브로 공유받았으니,

Colab + Python으로 작업하면 다운로드 / 업로드 시간을 단축할 수 있겠다 싶었다.

그래서 Python으로 Praat 작업을 할 수 있는 패키지가 있는지 찾아봤는데, parselmouth라는 패키지가 있었다.

 

Google Colab 환경에서 드라이브를 마운트한 뒤, 아래처럼 작업했다.

드라이브 마운트 / 디렉토리 설정과 같은 코드는 삭제했으며,

음원 인식에 실패한 파일은 파일명을 따로 failed_file.json에 저장했다.

 

 

공식 Docs

https://parselmouth.readthedocs.io/en/stable/

 

Parselmouth – Praat in Python, the Pythonic way — Parselmouth 0.3.3 documentation

Though other attempts have been made at porting functionality from Praat to Python, Parselmouth is unique in its aim to provide a complete and Pythonic interface to the internal Praat code. While other projects either wrap Praat’s scripting language or r

parselmouth.readthedocs.io

Github

https://github.com/YannickJadoul/Parselmouth

 

YannickJadoul/Parselmouth

Praat in Python, the Pythonic way. Contribute to YannickJadoul/Parselmouth development by creating an account on GitHub.

github.com

반응형