File size: 2,464 Bytes
a56b407
5c68285
75150b0
 
05d3cbf
 
7b6fb4e
5c68285
51f45b8
296785f
9e5e30a
972a12b
 
 
9369c96
972a12b
 
68f7a9b
972a12b
231d78c
25002fb
972a12b
4b73d5c
05d3cbf
b3d0e64
25002fb
b3d0e64
 
 
 
 
161fa06
b3d0e64
a5c316e
4caa659
6d1a1e9
05d3cbf
 
b43a3bd
b3d0e64
05d3cbf
 
4caa659
05d3cbf
 
4caa659
b43a3bd
05d3cbf
ad20876
34756db
97e5355
5c68285
296785f
 
75150b0
 
 
 
77894c7
75150b0
 
0d79ac7
75150b0
 
5d164f2
75150b0
77894c7
9e5e30a
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
65
66
67
68
import os
import openai
import gradio as gr
import subprocess
from gtts import gTTS
from pydub import AudioSegment

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

def generate_output(name, horoscope_type, birth_date):
    prompt = f"T煤 hor贸scopo de hoy, si nacido el {birth_date}, es:"
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=180,
        temperature=0.6,
        n=1,
        stop=None,)
    gpt3_output = response.choices[0].text.strip()
    personalized_response = f"Tu hor贸scopo {name} nacido el {birth_date} es: {gpt3_output}"
    
    if len(response.choices) == 0 or 'text' not in response.choices[0]:
        return None, "No se pudo generar el texto."

    try:
        tts = gTTS(personalized_response, 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 face2.png --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"

name_input = gr.inputs.Textbox(lines=1, placeholder="Escribe tu Nombre Completo", label="Nombre")
birth_date = gr.inputs.Textbox(lines=1, placeholder="Fecha Nacimiento - DD/MM/AAAA", label="Cumplea帽os")
output = gr.outputs.Video(label="Resultado").style(width=350)

def generate_and_display_output(name, horoscope_type, birth_date):
    video_path, error_message = generate_output(name, horoscope_type, birth_date)
    if error_message:
        print(f"Error: {error_message}")
    else:
        return video_path

iface = gr.Interface(
    fn=generate_and_display_output,
    inputs=[name_input, birth_date],
    outputs=output,
    layout="vertical",
    theme="darkdefault"
)

iface.launch()