|
|
import os |
|
|
import shutil |
|
|
import gradio as gr |
|
|
from transformers import pipeline |
|
|
|
|
|
|
|
|
ffmpeg_path = shutil.which("ffmpeg") |
|
|
if ffmpeg_path: |
|
|
print(f"✅ ffmpeg found at: {ffmpeg_path}") |
|
|
else: |
|
|
print("❌ ffmpeg NOT found! Audio processing will fail.") |
|
|
|
|
|
|
|
|
print("🚀 Application Starting...") |
|
|
|
|
|
|
|
|
os.environ["HF_HOME"] = "/app/cache" |
|
|
print(f"✅ HF_HOME set to: {os.environ.get('HF_HOME')}") |
|
|
|
|
|
try: |
|
|
|
|
|
print("🔄 Initializing model pipeline...") |
|
|
classifier = pipeline("audio-classification", |
|
|
model="AmeerHesham/distilhubert-finetuned-baby_cry", |
|
|
device=-1) |
|
|
print("✅ Model loaded successfully!") |
|
|
except Exception as e: |
|
|
print(f"❌ Error loading model: {str(e)}") |
|
|
|
|
|
|
|
|
def classify_audio(audio_path): |
|
|
try: |
|
|
result = classifier(audio_path) |
|
|
return result |
|
|
except Exception as e: |
|
|
return {"error": str(e)} |
|
|
|
|
|
|
|
|
print("🔄 Launching Gradio interface...") |
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=classify_audio, |
|
|
inputs=gr.Audio(type="filepath"), |
|
|
outputs="json", |
|
|
title="👶 AI วิเคราะห์เสียงทารก", |
|
|
description="กดอัดเสียงน้อง หรืออัพโหลดไฟล์เสียง (.wav) จากนั้นกด submit เพื่อให้ AI วิเคราะห์อารมณ์ที่น้องร้องได้เลย", |
|
|
flagging_dir="/app/flagged" |
|
|
) |
|
|
|
|
|
|
|
|
print("🚀 Gradio is running...") |
|
|
iface.launch(server_name="0.0.0.0", server_port=7860) |
|
|
|