ccyyss commited on
Commit
0dddc64
·
verified ·
1 Parent(s): cd06905

add atten_lim + dry/wet mix sliders

Browse files
Files changed (1) hide show
  1. app.py +18 -4
app.py CHANGED
@@ -46,16 +46,20 @@ def to_wav(audio_path):
46
  return out
47
 
48
 
49
- def denoise(audio_path):
50
  if not audio_path:
51
  return None
52
  from df.enhance import enhance, load_audio, save_audio
53
 
54
  model, df_state = get_model()
55
  audio, _ = load_audio(to_wav(audio_path), sr=df_state.sr())
56
- enhanced = enhance(model, df_state, audio)
 
 
 
 
57
  out = "/tmp/enhanced.wav"
58
- save_audio(out, enhanced, df_state.sr())
59
  return out
60
 
61
 
@@ -66,9 +70,19 @@ with gr.Blocks(title="音频降噪增强") as demo:
66
  "适合口播、讲座这类以人声为主的素材。CPU 推理,长音频请按时长耐心等。"
67
  )
68
  inp = gr.Audio(label="原始音频", type="filepath")
 
 
 
 
 
 
 
 
 
 
69
  btn = gr.Button("开始降噪", variant="primary")
70
  out = gr.Audio(label="降噪后", type="filepath")
71
- btn.click(denoise, inputs=inp, outputs=out)
72
 
73
 
74
  if __name__ == "__main__":
 
46
  return out
47
 
48
 
49
+ def denoise(audio_path, atten_lim, mix):
50
  if not audio_path:
51
  return None
52
  from df.enhance import enhance, load_audio, save_audio
53
 
54
  model, df_state = get_model()
55
  audio, _ = load_audio(to_wav(audio_path), sr=df_state.sr())
56
+ lim = None if atten_lim == 0 else atten_lim
57
+ enhanced = enhance(model, df_state, audio, atten_lim_db=lim)
58
+ # 混回原声:mix=1 为纯降噪结果,调低可找回被吃掉的细节
59
+ n = min(enhanced.shape[-1], audio.shape[-1])
60
+ out_audio = enhanced[..., :n] * mix + audio[..., :n] * (1.0 - mix)
61
  out = "/tmp/enhanced.wav"
62
+ save_audio(out, out_audio, df_state.sr())
63
  return out
64
 
65
 
 
70
  "适合口播、讲座这类以人声为主的素材。CPU 推理,长音频请按时长耐心等。"
71
  )
72
  inp = gr.Audio(label="原始音频", type="filepath")
73
+ atten = gr.Slider(
74
+ 0, 40, value=20, step=1,
75
+ label="最大衰减上限 (dB)",
76
+ info="限制模型对每个频点的抑制强度:数值越小越温和、损失越小;0 = 不限制(最强降噪)。默认 20。",
77
+ )
78
+ mix = gr.Slider(
79
+ 0, 1, value=1.0, step=0.05,
80
+ label="降噪结果占比",
81
+ info="1 = 纯降噪结果;调低可按比例混回原声,找回被吃掉的细节(相声里的笑声、掌声也适用)。",
82
+ )
83
  btn = gr.Button("开始降噪", variant="primary")
84
  out = gr.Audio(label="降噪后", type="filepath")
85
+ btn.click(denoise, inputs=[inp, atten, mix], outputs=out)
86
 
87
 
88
  if __name__ == "__main__":