fariedalfarizi's picture
Add profanity detection feature with 150+ Indonesian/English words
c7e434a
"""
Background tasks untuk RQ worker
"""
from typing import List, Optional
from app.services.audio_processor import AudioProcessor
from app.core.storage import delete_file
def process_audio_task(
audio_path: str,
reference_text: Optional[str] = None,
topic_id: Optional[str] = None,
custom_topic: Optional[str] = None,
custom_keywords: Optional[List[str]] = None,
analyze_tempo: bool = True,
analyze_articulation: bool = True,
analyze_structure: bool = True,
analyze_keywords: bool = False,
analyze_profanity: bool = False
):
"""
Background task untuk process audio
This function will be executed by RQ worker
Args:
audio_path: Path ke file audio
reference_text: Teks referensi untuk artikulasi
topic_id: ID topik dari database (Level 1-2)
custom_topic: Topik custom dari user (Level 3)
custom_keywords: List kata kunci dari GPT (Level 3)
analyze_tempo: Flag tempo analysis
analyze_articulation: Flag articulation analysis
analyze_structure: Flag structure analysis
analyze_keywords: Flag keyword analysis
analyze_profanity: Flag profanity detection
"""
try:
processor = AudioProcessor()
result = processor.process_audio(
audio_path=audio_path,
reference_text=reference_text,
topic_id=topic_id,
custom_topic=custom_topic,
custom_keywords=custom_keywords,
analyze_tempo=analyze_tempo,
analyze_articulation=analyze_articulation,
analyze_structure=analyze_structure,
analyze_keywords=analyze_keywords,
analyze_profanity=analyze_profanity
)
# Cleanup file after processing
try:
delete_file(audio_path)
except Exception as e:
print(f"Warning: Could not delete file {audio_path}: {e}")
return {
'status': 'completed',
'result': result
}
except Exception as e:
# Cleanup file on error
try:
delete_file(audio_path)
except:
pass
return {
'status': 'failed',
'error': str(e)
}