diff --git a/AIMeiSheng/slicex/slice_set_silence.py b/AIMeiSheng/slicex/slice_set_silence.py index d906be9..4d293f1 100644 --- a/AIMeiSheng/slicex/slice_set_silence.py +++ b/AIMeiSheng/slicex/slice_set_silence.py @@ -1,65 +1,65 @@ # -*- coding: utf-8 -*- import librosa # Optional. Use any library you like to read audio files. import soundfile # Optional. Use any library you like to write audio files. from slicex.slicer_torch import Slicer class silce_silence(): def __init__(self, sr): # audio = torch.from_numpy(audio) self.slicer = Slicer( sr=sr, threshold=-40, min_length=5000, min_interval=300, hop_size=10, max_sil_kept=500 ) def set_silence(self,chunks,sr, target_audio, target_sr): ''' :param chunks: slice结果 of song wav :param sr: song in sr :param target_audio: svc_out :param target_sr: svc_out sr :return: ''' # target_audio = np.zeros(int(len(audio)*target_sr/sr),1) # result = [] for k, v in chunks.items(): tag = v["split_time"].split(",") # if tag[0] != tag[1]: # result.append((v["slice"], audio[int(tag[0]):int(tag[1])])) if( tag[0] != tag[1] and v["slice"] == True):#静音 st = int(int(tag[0])*target_sr/sr) en = min(int(int(tag[1])*target_sr/sr), len(target_audio)) target_audio[st:en] = 0#0.001 * target_audio[st:en] return target_audio def cut(self, audio): chunks = self.slicer.slice(audio) chunks = dict(chunks) return chunks def del_noise(wav_in,svc_out,paras=None): audio, sr = librosa.load(wav_in, sr=None) # Load an audio file with librosa. target_audio, target_sr = librosa.load(svc_out, sr=None) # Load an audio file with librosa. if paras != None: - st = int(paras['tst'] * 16000/1000) + st = int(paras['tst'] * sr/1000) en = len(audio) if paras['tnd'] != None: - en = min(en,int(paras['tnd'] * 16000/1000)) + en = min(en,int(paras['tnd'] * sr/1000)) audio = audio[st:en] slice_sil = silce_silence(sr) chunks = slice_sil.cut(audio) target_audio1 = slice_sil.set_silence(chunks, sr, target_audio, target_sr) soundfile.write(svc_out, target_audio1, target_sr) return