|
|
import gradio as gr |
|
|
import time |
|
|
import uuid |
|
|
from util import ( |
|
|
create_task_v3, |
|
|
get_task_result, |
|
|
) |
|
|
|
|
|
|
|
|
IP_Dict = {} |
|
|
|
|
|
def generate_charlie_kirk_voice_with_realtime_updates(text, word_num, request: gr.Request): |
|
|
""" |
|
|
Charlie Kirk AI voice generation function with real-time status updates |
|
|
""" |
|
|
client_ip = request.client.host |
|
|
x_forwarded_for = dict(request.headers).get('x-forwarded-for') |
|
|
if x_forwarded_for: |
|
|
client_ip = x_forwarded_for |
|
|
if client_ip not in IP_Dict: |
|
|
IP_Dict[client_ip] = 0 |
|
|
IP_Dict[client_ip] += 1 |
|
|
print(f"client_ip: {client_ip}, count: {IP_Dict[client_ip]}") |
|
|
if IP_Dict[client_ip] >= 6: |
|
|
msg = "You have reached the maximum number of requests" |
|
|
|
|
|
get_more_tries_html = f""" |
|
|
<div style='display: flex; justify-content: center; gap: 30px; margin: 10px 0 25px 0; padding: 0px;'> |
|
|
<a href='https://trumpaivoice.net/charlie-kirk-ai-voice#generator' target='_blank' style=' |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 16px 32px; |
|
|
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%); |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
border-radius: 12px; |
|
|
font-weight: 600; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 160px; |
|
|
box-shadow: 0 4px 15px rgba(17, 153, 142, 0.4); |
|
|
transition: all 0.3s ease; |
|
|
border: none; |
|
|
'>🚀 Get More Tries for Free</a> |
|
|
</div> |
|
|
""" |
|
|
yield msg, None, gr.update(value=get_more_tries_html, visible=True), "" |
|
|
return msg, None, gr.update(value=get_more_tries_html, visible=True), "" |
|
|
|
|
|
if not text or len(text.strip()) < 3: |
|
|
return "Text too short, please enter at least 3 characters", None, gr.update(visible=False), "" |
|
|
|
|
|
if len(text.strip()) >= 1800: |
|
|
msg = "⚠️ This space has a maximum limit of 2000 characters. Please visit our official website to generate longer content for free." |
|
|
|
|
|
go_to_website_html = f""" |
|
|
<div style='display: flex; justify-content: center; gap: 30px; margin: 10px 0 25px 0; padding: 0px;'> |
|
|
<a href='https://trumpaivoice.net/charlie-kirk-ai-voice#generator' target='_blank' style=' |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 16px 32px; |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
border-radius: 12px; |
|
|
font-weight: 600; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 160px; |
|
|
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); |
|
|
transition: all 0.3s ease; |
|
|
border: none; |
|
|
'>🌐 Go to Official Website for Free</a> |
|
|
</div> |
|
|
""" |
|
|
yield msg, None, gr.update(value=go_to_website_html, visible=True), "" |
|
|
return msg, None, gr.update(value=go_to_website_html, visible=True), "" |
|
|
|
|
|
try: |
|
|
task_type = "voice" |
|
|
|
|
|
|
|
|
task_result = create_task_v3(task_type, text.strip(), word_num, is_rewrite=False) |
|
|
if not task_result: |
|
|
return "Failed to create task", None, gr.update(visible=False), "" |
|
|
else: |
|
|
yield "Task created successfully", None, gr.update(visible=False), "" |
|
|
|
|
|
max_polls = 300 |
|
|
poll_interval = 1 |
|
|
task_url = f"https://trumpaivoice.net/task/{task_result['uuid']}" |
|
|
|
|
|
for i in range(max_polls): |
|
|
time.sleep(poll_interval) |
|
|
task = get_task_result(task_result['uuid']) |
|
|
|
|
|
if task.get('data', {}): |
|
|
status = task.get('data').get('status', '') |
|
|
text_final = task.get('data').get('text_final', '') |
|
|
if status in ['completed',]: |
|
|
voice_url = task.get('data').get('voice_url', '') |
|
|
print(voice_url, "===>voice_url") |
|
|
|
|
|
|
|
|
local_audio_path = voice_url |
|
|
|
|
|
|
|
|
action_buttons_html = f""" |
|
|
<div style='display: flex; justify-content: center; gap: 30px; margin: 25px 0; padding: 20px;'> |
|
|
<a href='https://trumpaivoice.net/charlie-kirk-ai-voice#generator' target='_blank' style=' |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 16px 32px; |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
border-radius: 12px; |
|
|
font-weight: 600; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 160px; |
|
|
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); |
|
|
transition: all 0.3s ease; |
|
|
border: none; |
|
|
'>🎬 Generate 4K Video</a> |
|
|
<a href='{task_url}' target='_blank' style=' |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 16px 32px; |
|
|
background: linear-gradient(135deg, #11998e 0%, #38ef7d 100%); |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
border-radius: 12px; |
|
|
font-weight: 600; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 160px; |
|
|
box-shadow: 0 4px 15px rgba(17, 153, 142, 0.4); |
|
|
transition: all 0.3s ease; |
|
|
border: none; |
|
|
'>👀 Check Generate Details</a> |
|
|
</div> |
|
|
""" |
|
|
yield f"✅ success!!!", local_audio_path, gr.update(value=action_buttons_html, visible=True), task_url |
|
|
return "✅ Generation successful!", local_audio_path, gr.update(value=action_buttons_html, visible=True), task_url |
|
|
elif status in ['failed', 'voice_error', 'no_credits']: |
|
|
yield "❌ Generation failed!", None, gr.update(visible=False), "" |
|
|
return "❌ Generation failed!", None, gr.update(visible=False), "" |
|
|
else: |
|
|
yield f"query {i} times, on processing, go to task page {task_url} to check status", None, gr.update(visible=False), task_url |
|
|
return "❌ Generation failed!", None, gr.update(visible=False), "" |
|
|
except Exception as e: |
|
|
error_msg = f"Generation failed: {str(e)}" |
|
|
yield error_msg, None, gr.update(visible=False), "" |
|
|
return error_msg, None, gr.update(visible=False), "" |
|
|
|
|
|
|
|
|
with gr.Blocks(title="Charlie Kirk AI Voice", theme=gr.themes.Soft()) as demo: |
|
|
|
|
|
|
|
|
gr.HTML(""" |
|
|
<div style="text-align: center; margin: 5px auto 0px auto; max-width: 800px;"> |
|
|
<h1 style="color: #2c3e50; margin: 0; font-size: 3.5em; font-weight: 800; letter-spacing: 3px; text-shadow: 2px 2px 4px rgba(0,0,0,0.1);"> |
|
|
🎤 Charlie Kirk AI Voice |
|
|
</h1> |
|
|
</div> |
|
|
""", padding=False) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gr.HTML(""" |
|
|
<div style="text-align: center; margin: 0px auto -5px auto;"> |
|
|
<p style="margin: 0; font-size: 16px; color: #999; font-weight: 400;"> |
|
|
powered by <a href="https://trumpaivoice.net/" target="_blank" style="color: #667eea; text-decoration: none;">trumpaivoice.net</a> |
|
|
</p> |
|
|
</div> |
|
|
""", padding=False) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with gr.Row(): |
|
|
with gr.Column(scale=2): |
|
|
text_input = gr.Textbox( |
|
|
label="📝 Input Text", |
|
|
lines=4, |
|
|
max_length=2000, |
|
|
placeholder="Enter what you want Charlie Kirk to say...", |
|
|
value="Hello everyone, this is a demonstration of the Charlie Kirk AI Voice system with real-time status monitoring." |
|
|
) |
|
|
|
|
|
with gr.Column(scale=1): |
|
|
word_num_slider = gr.Slider( |
|
|
20, 60, value=60, step=1, |
|
|
label="⏱️ Duration Limit" |
|
|
) |
|
|
|
|
|
submit_btn = gr.Button( |
|
|
"🚀 Generate Charlie Kirk AI Voice", |
|
|
variant="primary", |
|
|
size="lg" |
|
|
) |
|
|
|
|
|
with gr.Row(): |
|
|
status_output = gr.Textbox( |
|
|
label="📊 Status", |
|
|
interactive=False, |
|
|
placeholder="Waiting for generation..." |
|
|
) |
|
|
|
|
|
|
|
|
with gr.Row(): |
|
|
action_links = gr.HTML(visible=False) |
|
|
|
|
|
with gr.Row(): |
|
|
audio_output = gr.Audio( |
|
|
label="🎵 Charlie Kirk AI Voice", |
|
|
interactive=False |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
gr.HTML(""" |
|
|
<div style="width: 100%; margin: 40px 0; padding: 0 20px;"> |
|
|
<div style="text-align: center; background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 50%, #fce4ec 100%); padding: 30px; border-radius: 20px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); margin-bottom: 30px;"> |
|
|
<h2 style="color: #2c3e50; margin: 0 0 15px 0; font-size: 2.2em; font-weight: 700;"> |
|
|
🎬 Video Showcase |
|
|
</h2> |
|
|
<p style="color: #34495e; font-size: 1.2em; line-height: 1.6; margin: 0 0 25px 0;"> |
|
|
Watch amazing AI-generated Charlie Kirk videos with realistic animations and perfect lip-sync! |
|
|
</p> |
|
|
|
|
|
<!-- Video Gallery --> |
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin: 30px 0;"> |
|
|
|
|
|
<div style="background: rgba(255,255,255,0.8); padding: 20px; border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);"> |
|
|
<h4 style="color: #2c3e50; margin: 0 0 15px 0; font-size: 1.1em;"> TV Interview</h4> |
|
|
<video id="video-garden" style="width: 100%; height: 180px; border-radius: 10px; object-fit: cover;" controls preload="metadata"> |
|
|
<source src="https://www.trumpaivoice.net/SelfitAssert/Heygem/CharlieKirk/showcase/62_1757582179_O35S1LzJ-r.mp4" type="video/mp4"> |
|
|
Your browser does not support the video tag. |
|
|
</video> |
|
|
</div> |
|
|
|
|
|
<div style="background: rgba(255,255,255,0.8); padding: 20px; border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);"> |
|
|
<h4 style="color: #2c3e50; margin: 0 0 15px 0; font-size: 1.1em;">AI Song</h4> |
|
|
<video id="video-office" style="width: 100%; height: 180px; border-radius: 10px; object-fit: cover;" controls preload="metadata"> |
|
|
<source src="https://www.trumpaivoice.net/SelfitAssert/Heygem/CharlieKirk/showcase/merged_mv01.mp4" type="video/mp4"> |
|
|
Your browser does not support the video tag. |
|
|
</video> |
|
|
</div> |
|
|
|
|
|
<div style="background: rgba(255,255,255,0.8); padding: 20px; border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);"> |
|
|
<h4 style="color: #2c3e50; margin: 0 0 15px 0; font-size: 1.1em;"> Charlie Show</h4> |
|
|
<video id="video-flag" style="width: 100%; height: 180px; border-radius: 10px; object-fit: cover;" controls preload="metadata"> |
|
|
<source src="https://www.trumpaivoice.net/SelfitAssert/Heygem/CharlieKirk/showcase/62_1757582322_XBI1s860-r.mp4" type="video/mp4"> |
|
|
Your browser does not support the video tag. |
|
|
</video> |
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<!-- Action Buttons --> |
|
|
<div style="display: flex; justify-content: center; gap: 20px; flex-wrap: wrap; margin: 25px 0 0 0;"> |
|
|
<a href="https://trumpaivoice.net/charlie-kirk-ai-voice#generator" target="_blank" style=" |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 18px 35px; |
|
|
background: linear-gradient(135deg, #ff6b6b 0%, #feca57 100%); |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
border-radius: 15px; |
|
|
font-weight: 700; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 220px; |
|
|
box-shadow: 0 8px 25px rgba(255, 107, 107, 0.4); |
|
|
transition: all 0.3s ease; |
|
|
border: none; |
|
|
transform: scale(1); |
|
|
" onmouseover="this.style.transform='scale(1.05)'" onmouseout="this.style.transform='scale(1)'"> |
|
|
🎬 Generate 4K Charlie Kirk Video |
|
|
</a> |
|
|
|
|
|
</div> |
|
|
|
|
|
<p style="color: #555; font-size: 1em; margin: 15px 0 0 0;"> |
|
|
Create high-quality Charlie Kirk AI videos and original songs with custom text and scenarios! |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
// Ensure only one video plays at a time |
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
const videos = ['video-garden', 'video-office', 'video-flag']; |
|
|
|
|
|
videos.forEach(function(videoId) { |
|
|
const video = document.getElementById(videoId); |
|
|
if (video) { |
|
|
video.addEventListener('play', function() { |
|
|
// Pause all other videos when this one starts playing |
|
|
videos.forEach(function(otherId) { |
|
|
if (otherId !== videoId) { |
|
|
const otherVideo = document.getElementById(otherId); |
|
|
if (otherVideo && !otherVideo.paused) { |
|
|
otherVideo.pause(); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
</script> |
|
|
""", padding=False) |
|
|
|
|
|
|
|
|
gr.HTML(""" |
|
|
<div style="width: 100%; margin: 30px 0; padding: 0 20px;"> |
|
|
|
|
|
<!-- Hero Description --> |
|
|
<div style="text-align: center; margin: 25px auto; background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); padding: 30px; border-radius: 20px; box-shadow: 0 10px 30px rgba(0,0,0,0.1);"> |
|
|
<h2 style="color: #2c3e50; margin: 0 0 15px 0; font-size: 1.8em; font-weight: 700;"> |
|
|
🇺🇸 Experience the Power of AI-Generated Charlie Kirk Voice |
|
|
</h2> |
|
|
<p style="color: #555; font-size: 1.1em; line-height: 1.6; margin: 0 0 20px 0; width: 100%; padding: 0 20px;"> |
|
|
Transform any text into authentic Charlie Kirk speech with our cutting-edge AI voice synthesis technology. |
|
|
Whether you're creating content for entertainment, education, or social media, our advanced neural network |
|
|
captures Charlie Kirk's distinctive speaking style, intonation, and rhetorical patterns with remarkable accuracy. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<!-- Features Grid --> |
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin: 40px 0;"> |
|
|
|
|
|
<div style="background: white; padding: 25px; border-radius: 15px; box-shadow: 0 5px 20px rgba(0,0,0,0.08); border-left: 5px solid #e74c3c;"> |
|
|
<h3 style="color: #e74c3c; margin: 0 0 12px 0; font-size: 1.3em; font-weight: 600;"> |
|
|
🎯 Ultra-Realistic Voice |
|
|
</h3> |
|
|
<p style="color: #666; margin: 0; line-height: 1.5; font-size: 0.95em;"> |
|
|
Our AI model is trained on thousands of hours of Charlie Kirk speeches, capturing his unique vocal characteristics, |
|
|
pronunciation patterns, and speaking rhythm to deliver incredibly lifelike results. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<div style="background: white; padding: 25px; border-radius: 15px; box-shadow: 0 5px 20px rgba(0,0,0,0.08); border-left: 5px solid #3498db;"> |
|
|
<h3 style="color: #3498db; margin: 0 0 12px 0; font-size: 1.3em; font-weight: 600;"> |
|
|
⚡ Lightning Fast Generation |
|
|
</h3> |
|
|
<p style="color: #666; margin: 0; line-height: 1.5; font-size: 0.95em;"> |
|
|
Generate high-quality Charlie Kirk AI voice clips in seconds, not minutes. Our optimized infrastructure |
|
|
ensures rapid processing while maintaining exceptional audio quality. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<div style="background: white; padding: 25px; border-radius: 15px; box-shadow: 0 5px 20px rgba(0,0,0,0.08); border-left: 5px solid #27ae60;"> |
|
|
<h3 style="color: #27ae60; margin: 0 0 12px 0; font-size: 1.3em; font-weight: 600;"> |
|
|
🎨 Creative Content Creation |
|
|
</h3> |
|
|
<p style="color: #666; margin: 0; line-height: 1.5; font-size: 0.95em;"> |
|
|
Perfect for memes, podcasts, educational content, entertainment videos, or any creative project |
|
|
that needs an authentic Charlie Kirk voice performance. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- Celebrity Voices Section --> |
|
|
<div style="background: linear-gradient(135deg, #ff6b6b 0%, #feca57 50%, #48dbfb 100%); color: white; padding: 40px; border-radius: 20px; margin: 40px 0; text-align: center;"> |
|
|
<h2 style="margin: 0 0 20px 0; font-size: 1.8em; font-weight: 700;"> |
|
|
🎭 Try More Celebrity AI Voices |
|
|
</h2> |
|
|
<p style="margin: 0 0 25px 0; font-size: 1.1em; opacity: 0.95; line-height: 1.5;"> |
|
|
Explore our premium collection of celebrity AI voices! Our high-quality service delivers |
|
|
lightning-fast results with exceptional audio quality. Experience the best AI voice generation |
|
|
with our reliable and responsive platform. |
|
|
</p> |
|
|
<div style="display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;"> |
|
|
<a href="https://trumpaivoice.net/explore" target="_blank" style=" |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 18px 35px; |
|
|
background: rgba(255,255,255,0.9); |
|
|
color: #333; |
|
|
text-decoration: none; |
|
|
border-radius: 15px; |
|
|
font-weight: 700; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 200px; |
|
|
box-shadow: 0 6px 20px rgba(0,0,0,0.3); |
|
|
transition: all 0.3s ease; |
|
|
border: none; |
|
|
">🌟 Explore Celebrity Voices</a> |
|
|
<a href="https://trumpaivoice.net/showcase" target="_blank" style=" |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
padding: 18px 35px; |
|
|
background: rgba(255,255,255,0.2); |
|
|
color: white; |
|
|
text-decoration: none; |
|
|
border-radius: 15px; |
|
|
font-weight: 700; |
|
|
font-size: 16px; |
|
|
text-align: center; |
|
|
min-width: 200px; |
|
|
box-shadow: 0 6px 20px rgba(0,0,0,0.2); |
|
|
transition: all 0.3s ease; |
|
|
border: 2px solid rgba(255,255,255,0.3); |
|
|
">🎭 View Showcase</a> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<!-- Tips Section --> |
|
|
<div style="background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 50%, #fecfef 100%); padding: 25px; border-radius: 15px; margin: 40px 0;"> |
|
|
<h3 style="color: #8b5cf6; text-align: center; margin: 0 0 20px 0; font-size: 1.4em; font-weight: 700;"> |
|
|
💡 Pro Tips for Best Results |
|
|
</h3> |
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px;"> |
|
|
|
|
|
<div style="background: rgba(255,255,255,0.8); padding: 15px; border-radius: 10px;"> |
|
|
<strong style="color: #8b5cf6;">📖 Clear Text:</strong> |
|
|
<span style="color: #555;"> Use proper punctuation and avoid special characters for optimal results.</span> |
|
|
</div> |
|
|
|
|
|
<div style="background: rgba(255,255,255,0.8); padding: 15px; border-radius: 10px;"> |
|
|
<strong style="color: #8b5cf6;">⏱️ Length Matters:</strong> |
|
|
<span style="color: #555;"> Shorter texts (20-60 words) typically produce the most natural-sounding results.</span> |
|
|
</div> |
|
|
|
|
|
<div style="background: rgba(255,255,255,0.8); padding: 15px; border-radius: 10px;"> |
|
|
<strong style="color: #8b5cf6;">🎯 Charlie Kirk Style:</strong> |
|
|
<span style="color: #555;"> Text written in Charlie Kirk's speaking style will sound more authentic and natural.</span> |
|
|
</div> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
|
|
|
</div> |
|
|
""", padding=False) |
|
|
|
|
|
|
|
|
|
|
|
gr.HTML(""" |
|
|
<div style="text-align: center; margin: 0px auto -5px auto;"> |
|
|
<p style="margin: 0; font-size: 16px; color: #999; font-weight: 400;"> |
|
|
Click <a href="https://trumpaivoice.net/showcase" target="_blank" style="color: #667eea; text-decoration: none;"> charlie kirk ai voices showcase </a> to see more videos |
|
|
</p> |
|
|
</div> |
|
|
""", padding=False) |
|
|
|
|
|
|
|
|
task_url_state = gr.State("") |
|
|
|
|
|
|
|
|
submit_btn.click( |
|
|
generate_charlie_kirk_voice_with_realtime_updates, |
|
|
inputs=[text_input, word_num_slider], |
|
|
outputs=[status_output, audio_output, action_links, task_url_state] |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |