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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)