لتشغيل نماذج الذكاء الاصطناعي الحقيقية (مثل OpenVoice) بدلاً من المحاكاة، قم بإنشاء الملفات التالية وتشغيلها على جهازك.
2. server.py (API الكامل)
import os
import torch
from openvoice import se_extractor
from openvoice.api import BaseSpeakerTTS, ToneColorConverter
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from fastapi.responses import FileResponse
# تهيئة التطبيق
app = FastAPI(title="Sowty Professional TTS API")
# إعداد النماذج (تأكد من تحميل ملفات checkpoints)
CKPT_BASE = 'checkpoints/base_speakers/EN'
CKPT_CONVERTER = 'checkpoints/converter'
device = "cuda" if torch.cuda.is_available() else "cpu"
# تحميل النماذج عند البدء
base_tts = BaseSpeakerTTS(f'{CKPT_BASE}/config.json', device=device)
base_tts.load_ckpt(f'{CKPT_BASE}/checkpoint.pth')
tone_color_converter = ToneColorConverter(f'{CKPT_CONVERTER}/config.json', device=device)
tone_color_converter.load_ckpt(f'{CKPT_CONVERTER}/checkpoint.pth')
output_dir = 'outputs'
os.makedirs(output_dir, exist_ok=True)
class TTSRequest(BaseModel):
text: str
voice_type: str = "man" # man, woman, child
emotion: str = "professional" # happy, angry, calm
speed: float = 1.0
@app.post("/generate_voice")
async def generate_voice(req: TTSRequest):
try:
src_path = f'{output_dir}/tmp.wav'
# 1. توليد الصوت الأساسي
base_tts.tts(req.text, src_path, speaker='default', speed=req.speed, emotion=req.emotion)
# 2. تطبيق نبرة الصوت (Voice Cloning/Style)
reference_speaker = f'resources/{req.voice_type}.mp3'
target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, target_dir='processed')
save_path = f'{output_dir}/final_{req.voice_type}_{req.emotion}.wav'
# 3. التحويل النهائي
tone_color_converter.convert(
audio_name=src_path,
src_se=source_se,
tgt_se=target_se,
output_path=save_path
)
return FileResponse(save_path, media_type="audio/wav", filename="generated_audio.wav")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)