File size: 2,305 Bytes
d64793e
972a12b
7b6fb4e
05d3cbf
 
84c807e
7b6fb4e
0c5d6b6
2619ab3
84c807e
 
 
 
 
 
 
 
 
 
 
 
 
 
57a4556
e6f29f6
972a12b
 
 
a0eb8b5
972a12b
 
 
 
 
 
 
4b73d5c
05d3cbf
b3d0e64
 
 
 
 
 
 
161fa06
b3d0e64
a5c316e
4caa659
55866b4
05d3cbf
 
b43a3bd
b3d0e64
05d3cbf
 
4caa659
05d3cbf
 
4caa659
b43a3bd
05d3cbf
84c807e
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import os
import openai
import subprocess
from gtts import gTTS
from pydub import AudioSegment
from flask import Flask, render_template, request

openai.api_key = os.environ.get("openai_api_key")

app = Flask(__name__)

@app.route("/", methods=["GET", "POST"])
def index():
    if request.method == "POST":
        name = request.form["name"]
        horoscope_type = request.form["horoscope_type"]
        video_path, error_message = generate_output(name, horoscope_type)
        if error_message:
            return render_template("index.html", error_message=error_message)
        else:
            return render_template("index.html", video_path=video_path)
    return render_template("index.html")

def generate_output(name, horoscope_type):
    prompt = f"{name}, tu hor贸scopo {horoscope_type} y or谩culo de hoy es:"
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=120,
        temperature=0.6,
        n=1,
        stop=None,
    )
    gpt3_output = response.choices[0].text.strip()
    generated_text = gpt3_output.replace(prompt, "").strip()
    if len(response.choices) == 0 or 'text' not in response.choices[0]:
        return None, "No se pudo generar el texto."

    try:
        tts = gTTS(generated_text, lang='es')
        temp_audio_path = "temp_audio.mp3"
        tts.save(temp_audio_path)
        audio_path = "audio.wav"
        audio = AudioSegment.from_mp3(temp_audio_path)
        audio.export(audio_path, format="wav")
        print("Archivo de audio generado:", audio_path)
    except Exception as e:
        return None, f"No se pudo generar el audio: {str(e)}"

    command = f"python3 inference.py --checkpoint_path checkpoints/wav2lip_gan.pth --face oraculo.jpg --audio audio.wav --outfile video.mp4 --nosmooth"
    process = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    if process.returncode != 0:
        error_message = process.stderr.decode("utf-8")
        return None, f"No se pudo generar el video: {error_message}"

    output_video_path = "video.mp4"
    os.remove(temp_audio_path)

    if os.path.isfile(output_video_path):
        return output_video_path, None
    return None, "No se pudo generar el video"

if __name__ == "__main__":
    app.run()