Update app.py
Browse files
app.py
CHANGED
@@ -12,16 +12,28 @@ modelpath = './denoiser/master64.th'
|
|
12 |
|
13 |
def transcribe(file_upload, microphone):
|
14 |
file = microphone if microphone is not None else file_upload
|
|
|
|
|
15 |
model = Demucs(hidden=64)
|
16 |
state_dict = torch.load(modelpath, map_location='cpu')
|
17 |
model.load_state_dict(state_dict)
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
out = out / max(out.abs().max().item(), 1)
|
22 |
torchaudio.save('enhanced.wav', out, sr)
|
23 |
-
|
|
|
|
|
24 |
enhanced.export('enhanced.wav', format="wav", bitrate="256k")
|
|
|
25 |
return "enhanced.wav"
|
26 |
|
27 |
# import os
|
|
|
12 |
|
13 |
def transcribe(file_upload, microphone):
|
14 |
file = microphone if microphone is not None else file_upload
|
15 |
+
|
16 |
+
# 載入模型
|
17 |
model = Demucs(hidden=64)
|
18 |
state_dict = torch.load(modelpath, map_location='cpu')
|
19 |
model.load_state_dict(state_dict)
|
20 |
+
|
21 |
+
# 載入音訊並強制轉單聲道
|
22 |
+
x, sr = torchaudio.load(file, channels_first=True) # 確保通道優先格式
|
23 |
+
if x.shape[0] > 1:
|
24 |
+
x = torch.mean(x, dim=0, keepdim=True) # 平均所有通道轉單聲道
|
25 |
+
|
26 |
+
# 執行降噪
|
27 |
+
out = model(x[None])[0] # 增加batch維度
|
28 |
+
|
29 |
+
# 後處理
|
30 |
out = out / max(out.abs().max().item(), 1)
|
31 |
torchaudio.save('enhanced.wav', out, sr)
|
32 |
+
|
33 |
+
# 降低位元率(僅供語音辨識使用)
|
34 |
+
enhanced = AudioSegment.from_wav('enhanced.wav')
|
35 |
enhanced.export('enhanced.wav', format="wav", bitrate="256k")
|
36 |
+
|
37 |
return "enhanced.wav"
|
38 |
|
39 |
# import os
|