Spaces:
Sleeping
Sleeping
| import os | |
| from flask import Flask, render_template, request, jsonify | |
| from SadTalker import SadTalker | |
| app = Flask(__name__) | |
| # Initialize SadTalker with CPU | |
| sadtalker = SadTalker( | |
| checkpoint_path="/app/SadTalker/checkpoints", | |
| config_path="/app/SadTalker/src/config", | |
| device="cpu" | |
| ) | |
| def home(): | |
| return render_template('index.html') | |
| def generate(): | |
| if 'image' not in request.files: | |
| return jsonify({"error": "No image uploaded"}), 400 | |
| image = request.files['image'] | |
| text = request.form.get('text', '') | |
| # Save files | |
| img_path = os.path.join('static/uploads', image.filename) | |
| audio_path = os.path.join('static/uploads', 'audio.wav') | |
| output_path = os.path.join('static/uploads', 'output.mp4') | |
| image.save(img_path) | |
| # Text-to-Speech (using gTTS) | |
| from gtts import gTTS | |
| tts = gTTS(text=text, lang='en') | |
| tts.save(audio_path) | |
| # Generate video (CPU optimized) | |
| sadtalker.generate( | |
| source_image=img_path, | |
| driven_audio=audio_path, | |
| result_dir='static/uploads', | |
| still=True, | |
| preprocess='crop', | |
| enhancer='none' # Disable for CPU | |
| ) | |
| return jsonify({ | |
| "video": f"/static/uploads/{os.path.basename(output_path)}" | |
| }) | |
| if __name__ == '__main__': | |
| os.makedirs('static/uploads', exist_ok=True) | |
| app.run(host='0.0.0.0', port=7860) |