v2deepvoice / backend /core /worker.py
raghu2's picture
feat: integrate 4-stem separation, de-reverb, and ui enhancements
3358253
Raw
History Blame Contribute Delete
2.38 kB
import time
import threading
from core.state import job_queue, state
from core.database import db_manager
from core.tasks import run_audio_processing
def queue_worker():
while True:
try:
job = job_queue.get()
if job is None:
break
if isinstance(job, dict):
task_type = job.get("type")
task_id = job.get("task_id")
else:
# Legacy tuple fallback
task_type = "audio"
task_id = job[0]
state.active_task_id = task_id
# Check if the task was cancelled while sitting in the queue
if task_id in state.cancelled_tasks:
state.active_task_id = None
job_queue.task_done()
continue
db_manager.upsert_task(task_id, {
"status": "processing",
"start_time": time.time()
})
if task_type == "audio":
if isinstance(job, tuple):
# Fallback for very old legacy tuple format
_, file_path, isolate_vocals, enhance_speech, lyric_sync, user_email = job[:6]
stem_count = 2
de_reverb = False
else:
args = job.get("args")
# Should be exactly 7 arguments now
if len(args) == 7:
file_path, isolate_vocals, stem_count, de_reverb, enhance_speech, lyric_sync, user_email = args
else:
raise ValueError(f"Unexpected number of arguments in job: {len(args)}")
run_audio_processing(task_id, file_path, isolate_vocals, stem_count, de_reverb, enhance_speech, lyric_sync, user_email)
state.active_task_id = None
job_queue.task_done()
except Exception as e:
print(f"CRITICAL ERROR IN WORKER THREAD: {e}")
try:
state.active_task_id = None
job_queue.task_done()
except:
pass
def start_worker():
worker_thread = threading.Thread(target=queue_worker, daemon=True)
worker_thread.start()
return worker_thread