Posts [Audio] 음성 데이터 자르기 (How to trim audio data with librosa)
Post
Cancel

[Audio] 음성 데이터 자르기 (How to trim audio data with librosa)

Generate Data

음성 데이터는 Amazon Polly, 즉 TTS(Text-to-Speech)를 이용하여 생성했다.

Convert Data

음성 데이터를 자를 때 librosa 패키지를 사용하는데, librosa로 mp3를 읽는 과정에서 이슈가 발생했다.

구글링을 해보니까 librosa로 mp3를 읽으려면 ffmpeg 패키지를 추가로 설치해야 됐다.

나는 librosa로 wav, flac은 다뤄봤기 때문에 mp3를 wav로 바꾸는 게 빠르겠다 싶어 확장자를 변환시켰다.

Write Code

음성 데이터는 trim_audio_data 함수를 이용하여 30초 길이로 잘랐다.

librosa로 음성 데이터를 로드할 때, sampling rate를 따로 설정하지 않으면 default로 sr=22500이 된다.
South_Korean_national_anthem_lyrics.wav 의 sampling rate는 96kHz이므로 sr=96000으로 지정했다.

추가적으로, 음성 데이터를 다른 길이로 자르고 싶다면 sec 변수에 원하는 값을 대입하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os
import librosa

import numpy as np

def trim_audio_data(audio_file, save_file):
    sr = 96000
    sec = 30

    y, sr = librosa.load(audio_file, sr=sr)

    ny = y[:sr*sec]

    librosa.output.write_wav(save_file + '.wav', ny, sr)

base_path = 'dataset/'

audio_path = base_path + '/audio'
save_path = base_path + '/save'

audio_list = os.listdir(audio_path)

for audio_name in audio_list:
    if audio_name.find('wav') is not -1:
        audio_file = audio_path + '/' + audio_name
        save_file = save_path + '/' + audio_name[:-4]

        trim_audio_data(audio_file, save_file)

References

This post is licensed under CC BY 4.0 by the author.