pydub.AudioSemgent를 사용한 필요한 시간대의 Audio추출하기

김민기·2023년 4월 9일
0
import os
import pandas as pd
from pydub import AudioSegment
from tqdm import tqdm

def main():

   #파일이 tsv일경우 delimiter을 '\t'로 해줌으로써 탭 기준으로 불러올 수 있음
   file_name=pd.read_csv('file_name.tsv',delimiter='\t',encoding='utf-8')
   #파일이 csv일경우
   file_name=pd.read_csv('file_name.csv',encoding='utf-8')
    
    path='/path/of/audiodata_folder'
    file_list = os.listdir(path) #path 내의 파일들을 리스트로 변환
    
    for i in tqdm(file_list): # tqdm을 통해 로딩바를 만듦으로써 진행상황을 확인할 수 있음
    
        dir=os.path.join(path,i) # /path/of/audiodata_folder/audiofile_name
        
        sound = AudioSegment.from_file(dir) #원본 audio file 지정
        
        for j in range(len(file_name)): #파일의 인덱스개수 만큼
			
            #tsv파일에서 시작시간과, 종료시간을 불러오는것
            start = file_name.iloc[j,2]
            end = file_name.iloc[j,3]
            #인덱스가 j일때의 2열,3열 값을 불러오기

			#자르고자 하는 시간 정의 ms기준이므로 10000을 곱해줘야 sec기준이 된다
            StartTime=float(start)*1000
            Endtime=float(end)*1000
            
            #자르고자 하는 시간대를 정의
            extract=sound[StartTime:Endtime]
            extract.export('/save_file/path/custom_file_name', format="wav")
        
main()

a=/data/datasets
b=folder

os.path.join(a,b) #a와b사이에 쉼표 사용시에
/data/datasets/folder 와같이 슬래쉬가 자동생성됨
os.path.join(a+b) #a와b사이에 더하기 시에
/data/datasetsfolder 가되므로

  • +를 사용할경우
    a=/data/datasets/
    b=folder
  • ,를 사용할경우
    a=/data/datasets
    b=folder
    를 사용하도록 하자
profile
work0ut

2개의 댓글

comment-user-thumbnail
2023년 4월 9일

글이 맛이 없어요

답글 달기
comment-user-thumbnail
2023년 4월 9일

!!!

답글 달기