quockhanh25032005 commited on
Commit
deb51c6
·
verified ·
1 Parent(s): ad4d106

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -21
app.py CHANGED
@@ -3,6 +3,9 @@ import torch
3
  import torchaudio
4
  import tempfile
5
  import os
 
 
 
6
  from speechbrain.inference import SepformerSeparation as separator
7
 
8
  # Load model
@@ -16,25 +19,12 @@ def separate_audio(audio_file):
16
  return None, None
17
 
18
  try:
19
- waveform, sample_rate = torchaudio.load(audio_file, backend="soundfile")
 
20
 
21
- # Resample về 8kHz nếu cần
22
- if sample_rate != 8000:
23
- resampler = torchaudio.transforms.Resample(
24
- orig_freq=sample_rate,
25
- new_freq=8000
26
- )
27
- waveform = resampler(waveform)
28
- sample_rate = 8000
29
-
30
- # Chuyển về mono nếu stereo
31
- if waveform.shape[0] > 1:
32
- waveform = waveform.mean(dim=0, keepdim=True)
33
-
34
- # Lưu file tạm
35
- with tempfile.NamedTemporaryFile(suffix=".wav", delete=False, dir="/tmp") as tmp:
36
- torchaudio.save(tmp.name, waveform, sample_rate)
37
- tmp_path = tmp.name
38
 
39
  # Tách nguồn âm
40
  est_sources = model.separate_file(path=tmp_path)
@@ -46,8 +36,6 @@ def separate_audio(audio_file):
46
  torchaudio.save(source1_path, est_sources[:, :, 0].detach().cpu(), 8000)
47
  torchaudio.save(source2_path, est_sources[:, :, 1].detach().cpu(), 8000)
48
 
49
- os.unlink(tmp_path)
50
-
51
  return source1_path, source2_path
52
 
53
  except Exception as e:
@@ -75,7 +63,7 @@ Demo ứng dụng kiến trúc SepFormer cho bài toán phân tách nguồn âm
75
 
76
  **Lưu ý:** Hỗ trợ định dạng WAV, MP3, FLAC. Mọi tần số lấy mẫu đều được tự động chuyển về 8kHz.
77
 
78
- > ⚠️ **Khuyến nghị:** Nên sử dụng file âm thanh có tần số lấy mẫu **8kHz** để đạt chất lượng phân tách tốt nhất. File có tần số cao hơn (16kHz, 44.1kHz...) sẽ được tự động resample về 8kHz, tuy nhiên có thể ảnh hưởng đến chất lượng đầu ra.
79
  """
80
  )
81
 
 
3
  import torchaudio
4
  import tempfile
5
  import os
6
+ import numpy as np
7
+ import librosa
8
+ import soundfile as sf
9
  from speechbrain.inference import SepformerSeparation as separator
10
 
11
  # Load model
 
19
  return None, None
20
 
21
  try:
22
+ # Dùng librosa để load — hỗ trợ mọi định dạng và tần số
23
+ waveform, sample_rate = librosa.load(audio_file, sr=8000, mono=True)
24
 
25
+ # Lưu file tạm về 8kHz
26
+ tmp_path = "/tmp/input.wav"
27
+ sf.write(tmp_path, waveform, 8000)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  # Tách nguồn âm
30
  est_sources = model.separate_file(path=tmp_path)
 
36
  torchaudio.save(source1_path, est_sources[:, :, 0].detach().cpu(), 8000)
37
  torchaudio.save(source2_path, est_sources[:, :, 1].detach().cpu(), 8000)
38
 
 
 
39
  return source1_path, source2_path
40
 
41
  except Exception as e:
 
63
 
64
  **Lưu ý:** Hỗ trợ định dạng WAV, MP3, FLAC. Mọi tần số lấy mẫu đều được tự động chuyển về 8kHz.
65
 
66
+ > ⚠️ **Khuyến nghị:** Nên sử dụng file âm thanh có tần số lấy mẫu **8kHz** để đạt chất lượng phân tách tốt nhất.
67
  """
68
  )
69