Yoshitaka16 commited on
Commit
9d7d1a0
·
verified ·
1 Parent(s): 97ea5e0

Update F0Extractor.py

Browse files
Files changed (1) hide show
  1. F0Extractor.py +11 -0
F0Extractor.py CHANGED
@@ -12,6 +12,9 @@ import os
12
  from rvc.lib.predictors.RMVPE import RMVPE0Predictor
13
  from rvc.configs.config import Config
14
 
 
 
 
15
  config = Config()
16
 
17
 
@@ -51,6 +54,7 @@ class F0Extractor:
51
  device=config.device,
52
  )
53
  f0 = f0[0].cpu().numpy()
 
54
  elif method == "fcpe":
55
  audio = librosa.to_mono(self.x)
56
  audio_length = len(audio)
@@ -75,6 +79,7 @@ class F0Extractor:
75
  output_interp_target_length=f0_target_length,
76
  )
77
  f0 = f0.squeeze().cpu().numpy()
 
78
  elif method == "rmvpe":
79
  model_rmvpe = RMVPE0Predictor(
80
  os.path.join("rvc", "models", "predictors", "rmvpe.pt"),
@@ -83,8 +88,14 @@ class F0Extractor:
83
  )
84
  f0 = model_rmvpe.infer_from_audio(self.wav16k, thred=0.03)
85
 
 
 
 
 
 
86
  else:
87
  raise ValueError(f"Unknown method: {self.method}")
 
88
  return self.hz_to_cents(f0, librosa.midi_to_hz(0))
89
 
90
  def plot_f0(self, f0):
 
12
  from rvc.lib.predictors.RMVPE import RMVPE0Predictor
13
  from rvc.configs.config import Config
14
 
15
+ # ✅ Import DJCM
16
+ from djcm import DJCMExtractor
17
+
18
  config = Config()
19
 
20
 
 
54
  device=config.device,
55
  )
56
  f0 = f0[0].cpu().numpy()
57
+
58
  elif method == "fcpe":
59
  audio = librosa.to_mono(self.x)
60
  audio_length = len(audio)
 
79
  output_interp_target_length=f0_target_length,
80
  )
81
  f0 = f0.squeeze().cpu().numpy()
82
+
83
  elif method == "rmvpe":
84
  model_rmvpe = RMVPE0Predictor(
85
  os.path.join("rvc", "models", "predictors", "rmvpe.pt"),
 
88
  )
89
  f0 = model_rmvpe.infer_from_audio(self.wav16k, thred=0.03)
90
 
91
+ elif method == "djcm":
92
+ if not hasattr(self, "_djcm"):
93
+ self._djcm = DJCMExtractor("rvc/models/predictors/djcm.pt", device=config.device)
94
+ f0 = self._djcm(self.wav16k, sr=16000)
95
+
96
  else:
97
  raise ValueError(f"Unknown method: {self.method}")
98
+
99
  return self.hz_to_cents(f0, librosa.midi_to_hz(0))
100
 
101
  def plot_f0(self, f0):