Spaces:
Running
Running
Upload myinfer_latest.py
Browse files- myinfer_latest.py +25 -6
myinfer_latest.py
CHANGED
@@ -25,7 +25,7 @@ from pydub import AudioSegment
|
|
25 |
import uuid
|
26 |
from threading import Semaphore
|
27 |
from threading import Lock
|
28 |
-
|
29 |
|
30 |
|
31 |
|
@@ -84,6 +84,8 @@ if os.path.isfile("rmvpe.pt"):
|
|
84 |
f0method_mode.insert(2, "rmvpe")
|
85 |
f0method_info = "PM is fast, Harvest is good but extremely slow, Rvmpe is alternative to harvest (might be better), and Crepe effect is good but requires GPU (Default: PM)"
|
86 |
|
|
|
|
|
87 |
def load_hubert():
|
88 |
global hubert_model
|
89 |
models, _, _ = checkpoint_utils.load_model_ensemble_and_task(
|
@@ -168,7 +170,7 @@ def api_convert_voice():
|
|
168 |
file = request.files['file']
|
169 |
if file.filename == '':
|
170 |
return jsonify({"error": "No selected file"}), 400
|
171 |
-
created_files = []
|
172 |
# Save the file to a temporary path
|
173 |
unique_id = str(uuid.uuid4())
|
174 |
print(unique_id)
|
@@ -177,7 +179,7 @@ def api_convert_voice():
|
|
177 |
input_audio_path = os.path.join(tmp, f"{spk_id}_input_audio_{unique_id}.{filename.split('.')[-1]}")
|
178 |
file.save(input_audio_path)
|
179 |
|
180 |
-
created_files.append(input_audio_path)
|
181 |
|
182 |
#split audio
|
183 |
cut_vocal_and_inst(input_audio_path,spk_id,unique_id)
|
@@ -185,7 +187,16 @@ def api_convert_voice():
|
|
185 |
vocal_path = f"output/{spk_id}_{unique_id}/{split_model}/{spk_id}_input_audio_{unique_id}/vocals.wav"
|
186 |
inst = f"output/{spk_id}_{unique_id}/{split_model}/{spk_id}_input_audio_{unique_id}/no_vocals.wav"
|
187 |
print("*****before making call to convert ", unique_id)
|
188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
output_path1= combine_vocal_and_inst(output_path,inst,unique_id)
|
190 |
|
191 |
processed_audio_storage[unique_id] = output_path1
|
@@ -193,7 +204,7 @@ def api_convert_voice():
|
|
193 |
|
194 |
print(output_path1)
|
195 |
|
196 |
-
created_files.extend([vocal_path, inst, output_path])
|
197 |
return jsonify({"message": "File processed successfully", "audio_id": unique_id}), 200
|
198 |
finally:
|
199 |
request_semaphore.release()
|
@@ -225,7 +236,15 @@ def get_processed_audio(audio_id):
|
|
225 |
return send_file(file_path, as_attachment=True)
|
226 |
return jsonify({"error": "File not found."}), 404
|
227 |
|
228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
def convert_voice(spk_id, input_audio_path, voice_transform,unique_id):
|
230 |
get_vc(spk_id,0.5)
|
231 |
print("*****before makinf call to vc ", unique_id)
|
|
|
25 |
import uuid
|
26 |
from threading import Semaphore
|
27 |
from threading import Lock
|
28 |
+
from multiprocessing import Process, Queue
|
29 |
|
30 |
|
31 |
|
|
|
84 |
f0method_mode.insert(2, "rmvpe")
|
85 |
f0method_info = "PM is fast, Harvest is good but extremely slow, Rvmpe is alternative to harvest (might be better), and Crepe effect is good but requires GPU (Default: PM)"
|
86 |
|
87 |
+
|
88 |
+
|
89 |
def load_hubert():
|
90 |
global hubert_model
|
91 |
models, _, _ = checkpoint_utils.load_model_ensemble_and_task(
|
|
|
170 |
file = request.files['file']
|
171 |
if file.filename == '':
|
172 |
return jsonify({"error": "No selected file"}), 400
|
173 |
+
#created_files = []
|
174 |
# Save the file to a temporary path
|
175 |
unique_id = str(uuid.uuid4())
|
176 |
print(unique_id)
|
|
|
179 |
input_audio_path = os.path.join(tmp, f"{spk_id}_input_audio_{unique_id}.{filename.split('.')[-1]}")
|
180 |
file.save(input_audio_path)
|
181 |
|
182 |
+
#created_files.append(input_audio_path)
|
183 |
|
184 |
#split audio
|
185 |
cut_vocal_and_inst(input_audio_path,spk_id,unique_id)
|
|
|
187 |
vocal_path = f"output/{spk_id}_{unique_id}/{split_model}/{spk_id}_input_audio_{unique_id}/vocals.wav"
|
188 |
inst = f"output/{spk_id}_{unique_id}/{split_model}/{spk_id}_input_audio_{unique_id}/no_vocals.wav"
|
189 |
print("*****before making call to convert ", unique_id)
|
190 |
+
output_queue = Queue()
|
191 |
+
|
192 |
+
# Create and start the process
|
193 |
+
p = Process(target=worker, args=(spk_id, input_audio_path, voice_transform, unique_id, output_queue))
|
194 |
+
p.start()
|
195 |
+
|
196 |
+
# Wait for the process to finish and get the result
|
197 |
+
p.join()
|
198 |
+
output_path = output_queue.get()
|
199 |
+
#output_path = convert_voice(spk_id, vocal_path, voice_transform,unique_id)
|
200 |
output_path1= combine_vocal_and_inst(output_path,inst,unique_id)
|
201 |
|
202 |
processed_audio_storage[unique_id] = output_path1
|
|
|
204 |
|
205 |
print(output_path1)
|
206 |
|
207 |
+
#created_files.extend([vocal_path, inst, output_path])
|
208 |
return jsonify({"message": "File processed successfully", "audio_id": unique_id}), 200
|
209 |
finally:
|
210 |
request_semaphore.release()
|
|
|
236 |
return send_file(file_path, as_attachment=True)
|
237 |
return jsonify({"error": "File not found."}), 404
|
238 |
|
239 |
+
def worker(spk_id, input_audio_path, voice_transform, unique_id, output_queue):
|
240 |
+
"""
|
241 |
+
Worker function to be executed in a separate process.
|
242 |
+
"""
|
243 |
+
# Call the convert_voice function
|
244 |
+
output_audio_path = convert_voice(spk_id, input_audio_path, voice_transform, unique_id)
|
245 |
+
|
246 |
+
# Put the result in the queue to be retrieved by the main process
|
247 |
+
output_queue.put(output_audio_path)
|
248 |
def convert_voice(spk_id, input_audio_path, voice_transform,unique_id):
|
249 |
get_vc(spk_id,0.5)
|
250 |
print("*****before makinf call to vc ", unique_id)
|