import os
from fastapi import FastAPI, Form, HTTPException
from fastapi.responses import HTMLResponse, FileResponse
from huggingface_hub import InferenceClient
app = FastAPI()
# হাগিংফেস ক্লায়েন্ট ইনিশিয়ালাইজ করা
# স্পেসের Secrets থেকে টোকেন থাকলে নেবে, না থাকলে ফ্রি টিয়ারে কাজ করবে
HF_TOKEN = os.getenv("HF_TOKEN", "")
client = InferenceClient(token=HF_TOKEN if HF_TOKEN else None)
# আপনি চাইলে Kokoro বা Facebook এর যেকোনো মডেল এখানে দিতে পারেন
MODEL_ID = "facebook/mms-tts-eng"
@app.get("/", response_class=HTMLResponse)
def index():
return """
Raybil Voice AI Engine
🎙️ Raybil Voice AI Engine
"""
@app.post("/generate")
def generate_voice(text: str = Form(...)):
try:
# ক্লায়েন্ট অটোমেটিকলি সঠিক এন্ডপয়েন্ট এবং নেটওয়ার্ক পাথ হ্যান্ডেল করবে
audio_bytes = client.text_to_speech(text, model=MODEL_ID)
output_path = "output.wav"
with open(output_path, "wb") as f:
f.write(audio_bytes)
return FileResponse(output_path, media_type="audio/wav", filename="voice.wav")
except Exception as e:
raise HTTPException(status_code=500, detail=f"AI Engine Error: {str(e)}")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)