def split_silence_hm(audio_dir, split_silence_dir, sum_dir): audio_dir = librosa.util.find_files(audio_dir, ext=['wav' ]) # audio_dir에 있는 모든 파일을 가져온다 for path in audio_dir: # audio_dir에 있는 파일을 하나 씩 불러온다. sound_file = AudioSegment.from_wav(path) _, w_id = os.path.split(path) w_id = w_id[:-4] dbfs = sound_file.dBFS audio_chunks = split_on_silence( sound_file, # silence 부분 마다 자른다. silence_thresh=dbfs - 16, # silence_thresh : 몇 db 이하를 침묵이라고 할 것인지 min_silence_len=200, # min_silence_len : 몇 초 이상 침묵할 때 자를 것인지 keep_silence=0 # keep_silence : 앞, 뒤로 몇 초 여유를 줄 것인지 ) for i, chunk in enumerate(audio_chunks): # silence 부분 마다 자른 거 wav로 저장 out_file = split_silence_dir + w_id + "\\" + w_id + f"_{i}.wav" chunk.export(out_file, format="wav") path_wav = split_silence_dir + w_id + "\\" # 묵음을 기준으로 자른 오디오 파일을 하나의 파일로 합친다. # 묵음으로 잘린 파일이 저장된 곳 path_out = sum_dir + w_id + '_silence_total.wav' # 오디오 합친 파일 경로 voice_sum(form='wav', audio_dir=path_wav, save_dir=None, out_dir=path_out)
def split_silence_hm(audio_dir, split_silence_dir, sum_dir): ''' Args : audio_dir : 여러 오디오('wav')가 있는 파일경로 split_silence_dir : 묵음 부분 마다 자른 오디오 파일을 저장할 파일 경로 sum_dir : 묵음 부분 마다 자른 오디오 파일을 합쳐서 저장할 파일경로 ''' # audio_dir에 있는 모든 파일을 가져온다. audio_dir = librosa.util.find_files(audio_dir, ext=['wav']) # 폴더 생성하기 def createFolder(directory): try: if not os.path.exists(directory): os.makedirs(directory) except OSError: print('Error: Creating directory. ' + directory) # audio_dir에 있는 파일을 하나 씩 불러온다. for path in audio_dir: print("묵음을 없앨 파일 ", path) # 오디오 불러오기 sound_file = AudioSegment.from_wav(path) # 파일 이름만 가져오기 _, w_id = os.path.split(path) w_id = w_id[:-4] # 가장 최소의 dbfs가 무엇인지 # dbfs : 아날로그 db과는 다른 디지털에서의 db 단위, 0일 때가 최고 높은 레벨 dbfs = sound_file.dBFS # silence 부분 마다 자른다. audio_chunks = split_on_silence( sound_file, min_silence_len=200, silence_thresh=dbfs - 16, # keep_silence= 100 keep_silence=0) # 파일 명으로 새로운 폴더를 생성한다. createFolder(split_silence_dir + w_id) # silence 부분 마다 자른 거 wav로 저장 for i, chunk in enumerate(audio_chunks): out_file = split_silence_dir + w_id + "\\" + w_id + f"_{i}.wav" # print ("exporting", out_file) chunk.export(out_file, format="wav") # 묵음을 기준으로 자른 오디오 파일을 하나의 파일로 합친다. path_wav = split_silence_dir + w_id + "\\" print("묵음으로 잘린 파일이 저장된 곳", path_wav) path_out = sum_dir + w_id + '_silence_total.wav' print("오디오 합친 파일 경로 ", path_out) voice_sum(form='wav', audio_dir=path_wav, save_dir=None, out_dir=path_out)
sys.path.append('E:/nmb/nada/python_import/') from voice_handling import import_test, voice_sum import_test() # ==== it will be great ==== # --------------------------------------------------------------- # voice_sum: 오디오 한 wav 파일로 합쳐서 저장하기 # def voice_sum(form, pathaudio, save_dir, out_dir): # **** example **** # form(파일 형식): 'wav' or 'flac' # audio_dir(여러 오디오가 있는 파일경로) = 'C:/nmb/nmb_data/F1F2F3/F3/' # save_dir(flac일 경우 wav파일로 저장할 경로) = 'C:/nmb/nmb_data/F1F2F3/F3_to_wave/' # out_dir(wav파일을 합쳐서 저장할 경로+파일명까지) = "C:/nmb/nmb_data/combine_test/F3_sum.wav" # 1) wav일 때 filelist = ['m1', 'm2'] for name in filelist: filename = name path_wav = 'E:\\nmb\\nmb_data\\mindslab\\minslab_m\\' + filename path_out = 'E:\\nmb\\nmb_data\\mindslab\\minslab_m\\' + filename + '.wav' voice_sum(form='wav', audio_dir=path_wav, save_dir=None, out_dir=path_out) # # 2) flac일 때 # path_flac = 'D:/nmb_test/test_flac/' # path_save = 'D:/nmb_test/test_flac_to_wav/' # path_out = 'D:/nmb_test/test_sum/test_02_flac_to_wave_sum.wav' # voice_sum(form='flac', audio_dir=path_flac, save_dir=path_save, out_dir=path_out)
from pydub import AudioSegment import soundfile as sf import os import sys sys.path.append('c:/nmb/nada/python_import/') from voice_handling import voice_sum # --------------------------------------------------------------- # voice_sum: 오디오 한 wav 파일로 합쳐서 저장하기 # def voice_sum(form, pathaudio, save_dir, out_dir): # **** example **** # form(파일 형식): 'wav' or 'flac' # audio_dir(여러 오디오가 있는 파일경로) = 'C:/nmb/nmb_data/F1F2F3/F3/' # save_dir(flac일 경우 wav파일로 저장할 경로) = 'C:/nmb/nmb_data/F1F2F3/F3_to_wave/' # out_dir(wav파일을 합쳐서 저장할 경로+파일명까지) = "C:/nmb/nmb_data/combine_test/F3_sum.wav" # 1) wav일 때 # path_wav = 'C:\\nmb\\nmb_data\\STT\\P_WAV\\' # path_out = 'C:\\nmb\\nmb_data\\STT\\P_SUM\\' + 'sum'+ '.wav' # voice_sum(form='wav', audio_dir=path_wav, save_dir=None, out_dir=path_out) # # 2) flac일 때 path_flac = 'C:\\nmb\\nmb_data\\STT\\P\\' path_save = 'C:\\nmb\\nmb_data\\STT\\P_WAV\\' path_out = 'C:\\nmb\\nmb_data\\STT\\P_SUM\\' + 'sum' + '.wav' voice_sum(form='flac', audio_dir=path_flac, save_dir=path_save, out_dir=path_out)