luis5463 commited on
Commit
ddf82f6
·
verified ·
1 Parent(s): 75ba37d

design like this

Browse files
Files changed (1) hide show
  1. index.html +265 -125
index.html CHANGED
@@ -13,7 +13,9 @@
13
  <style>
14
  body {
15
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
16
- background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
 
 
17
  }
18
  .wave-bg {
19
  position: fixed;
@@ -22,185 +24,271 @@
22
  width: 100%;
23
  height: 100%;
24
  z-index: -1;
25
- opacity: 0.5;
26
  }
27
  .glass-card {
28
- background: rgba(255, 255, 255, 0.8);
29
- backdrop-filter: blur(10px);
30
- -webkit-backdrop-filter: blur(10px);
31
- border-radius: 16px;
32
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
33
- border: 1px solid rgba(255, 255, 255, 0.3);
34
  }
35
  .recording {
36
- animation: pulse 1.5s infinite;
37
  }
38
  @keyframes pulse {
39
- 0% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.4); }
40
- 70% { box-shadow: 0 0 0 15px rgba(99, 102, 241, 0); }
41
- 100% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0); }
 
 
 
 
 
 
 
 
 
42
  }
43
  .btn-gradient {
44
- background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 100%);
45
  color: white;
46
- transition: all 0.3s ease;
 
 
 
47
  }
48
  .btn-gradient:hover {
49
- transform: translateY(-2px);
50
- box-shadow: 0 10px 20px rgba(99, 102, 241, 0.2);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
  .feature-card:hover {
53
- transform: translateY(-5px);
54
- transition: all 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
  </style>
57
  </head>
58
  <body class="bg-gray-50">
59
  <div id="wave-bg" class="wave-bg"></div>
60
- <div class="min-h-screen flex flex-col items-center justify-start px-4 pt-8">
61
- <header class="w-full max-w-4xl mx-auto py-6">
62
- <div class="flex flex-col items-center">
63
- <div class="w-20 h-20 bg-indigo-500 rounded-full flex items-center justify-center shadow-lg mb-6">
64
- <i data-feather="mic" class="w-10 h-10 text-white"></i>
65
  </div>
66
- <h1 class="text-5xl font-bold text-gray-800 mb-3 bg-gradient-to-r from-indigo-500 to-purple-600 bg-clip-text text-transparent">VoiceCloneAI</h1>
67
- <p class="text-xl text-gray-600 max-w-lg text-center">Transform your voice into a digital masterpiece with our cutting-edge AI technology</p>
68
- </div>
 
69
  </header>
70
- <main class="w-full max-w-4xl glass-card p-8 mb-8">
71
- <div class="grid md:grid-cols-2 gap-8">
72
- <div class="space-y-6">
73
- <h2 class="text-2xl font-semibold text-gray-800">Create Your Voice Clone</h2>
74
- <p class="text-gray-600">Record or upload samples to train your unique voice model</p>
75
- <div class="flex flex-col items-center space-y-4">
 
 
 
76
  <div class="relative">
77
- <div id="recordBtn" class="w-24 h-24 rounded-full bg-indigo-500 flex items-center justify-center cursor-pointer hover:bg-indigo-600 transition">
78
- <i data-feather="mic" class="w-10 h-10 text-white"></i>
79
  </div>
80
- <div class="absolute -bottom-6 left-0 right-0 text-center text-sm text-gray-500" id="recordingStatus">Click to record</div>
81
  </div>
82
 
83
- <div class="w-full h-4 bg-gray-200 rounded-full overflow-hidden">
84
- <div id="soundWave" class="h-full bg-indigo-400 rounded-full w-0"></div>
85
  </div>
86
 
87
  <div class="relative w-full text-center">
88
- <span class="text-gray-500 text-sm">or</span>
89
  </div>
90
 
91
  <div class="w-full">
92
- <label class="flex flex-col items-center px-4 py-6 bg-white rounded-lg border border-dashed border-gray-300 cursor-pointer hover:bg-gray-50">
93
- <div class="flex items-center space-x-2 text-indigo-500">
94
- <i data-feather="upload" class="w-5 h-5"></i>
95
- <span>Upload Voice File</span>
96
  </div>
97
  <input type="file" id="voiceUpload" accept="audio/*" class="hidden" />
98
- <p class="mt-1 text-xs text-gray-500">MP3, WAV, OGG (max 50MB)</p>
99
  </label>
100
  </div>
101
  </div>
102
- <div class="flex items-center space-x-2 text-gray-500">
103
- <i data-feather="info" class="w-4 h-4"></i>
104
- <span class="text-sm">Find a quiet place and speak naturally</span>
 
105
  </div>
106
  </div>
107
 
108
- <div class="space-y-6">
109
- <h2 class="text-2xl font-semibold text-gray-800">Your Transcription</h2>
110
- <p class="text-gray-600">See your text appear in real-time</p>
111
- <div class="bg-gray-100 rounded-lg p-6 min-h-40 flex flex-col items-center justify-center">
112
- <div id="voicePreview" class="text-center text-gray-500 w-full">
113
- <i data-feather="user" class="w-8 h-8 mx-auto mb-2"></i>
114
- <p class="mb-4">Your voice clone will be generated here</p>
115
- <div class="w-full mb-4">
116
- <textarea id="textToGenerate" class="w-full p-3 border border-gray-300 rounded-lg resize-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" rows="3" placeholder="Enter text to generate with your voice clone"></textarea>
117
- </div>
118
- <div id="voiceParams" class="w-full space-y-3 hidden">
119
- <div>
120
- <label class="block text-sm text-gray-600 mb-1">Voice Similarity</label>
121
- <input type="range" min="0" max="100" value="75" class="w-full accent-indigo-500">
 
 
 
 
 
 
 
 
 
122
  </div>
123
  <div>
124
- <label class="block text-sm text-gray-600 mb-1">Pitch</label>
125
- <input type="range" min="0" max="100" value="50" class="w-full accent-indigo-500">
126
  </div>
127
  <div>
128
- <label class="block text-sm text-gray-600 mb-1">Speed</label>
129
- <input type="range" min="50" max="150" value="100" class="w-full accent-indigo-500">
130
  </div>
131
  </div>
132
  </div>
133
- </div>
134
  </div>
 
135
  <div class="flex flex-wrap gap-4">
136
- <button id="trainBtn" class="px-6 py-3 btn-gradient rounded-lg flex items-center space-x-2 shadow-md">
137
- <i data-feather="cpu" class="w-4 h-4"></i>
138
  <span>Train Model</span>
139
  </button>
140
- <button id="generateBtn" class="px-6 py-3 btn-gradient rounded-lg flex items-center space-x-2 shadow-md" style="background: linear-gradient(135deg, #10B981 0%, #3B82F6 100%);">
141
- <i data-feather="play" class="w-4 h-4"></i>
142
  <span>Generate Voice</span>
143
  </button>
144
- <button id="downloadBtn" class="px-6 py-3 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition flex items-center space-x-2">
145
- <i data-feather="download" class="w-4 h-4"></i>
146
  <span>Download</span>
147
  </button>
148
  </div>
149
- </div>
150
  </div>
151
  </main>
152
- <section class="w-full max-w-4xl glass-card p-8 mb-8">
153
- <h2 class="text-2xl font-semibold text-gray-800 mb-6">Advanced Voice Cloning Features</h2>
154
- <div class="grid md:grid-cols-3 gap-6">
155
- <div class="bg-gray-50 p-6 rounded-lg feature-card transition hover:shadow-lg">
156
- <div class="w-12 h-12 bg-indigo-100 rounded-lg flex items-center justify-center mb-4">
157
- <i data-feather="layers" class="text-indigo-500"></i>
158
  </div>
159
- <h3 class="font-medium text-lg mb-2 text-gray-800">Multi-Speaker Support</h3>
160
- <p class="text-gray-600">Train models for multiple voices</p>
161
  </div>
162
- <div class="bg-gray-50 p-6 rounded-lg">
163
- <div class="w-12 h-12 bg-indigo-100 rounded-lg flex items-center justify-center mb-4">
164
- <i data-feather="settings" class="text-indigo-500"></i>
165
  </div>
166
- <h3 class="font-medium text-lg mb-2 text-gray-800">Fine-Tuning</h3>
167
- <p class="text-gray-600">Adjust pitch, speed and emotion</p>
168
  </div>
169
- <div class="bg-gray-50 p-6 rounded-lg">
170
- <div class="w-12 h-12 bg-indigo-100 rounded-lg flex items-center justify-center mb-4">
171
- <i data-feather="cloud" class="text-indigo-500"></i>
172
  </div>
173
- <h3 class="font-medium text-lg mb-2 text-gray-800">API Access</h3>
174
- <p class="text-gray-600">Integrate with your applications</p>
175
  </div>
176
- </div>
177
  </section>
178
- <footer class="w-full max-w-4xl py-6 text-center text-gray-500 text-sm">
179
- <div class="flex items-center justify-center space-x-4 mb-2">
180
- <a href="#" class="hover:text-indigo-500"><i data-feather="twitter"></i></a>
181
- <a href="#" class="hover:text-indigo-500"><i data-feather="github"></i></a>
182
- <a href="#" class="hover:text-indigo-500"><i data-feather="linkedin"></i></a>
 
 
 
 
 
 
183
  </div>
184
- <p>© 2023 VoiceCloneAI - Advanced Voice Cloning Technology</p>
185
- </footer>
186
- </div>
 
187
 
188
  <script>
189
  feather.replace();
190
-
191
  // Initialize Vanta.js waves background
192
  VANTA.WAVES({
193
  el: "#wave-bg",
194
  color: 0x6366f1,
195
- waveHeight: 15,
196
- shininess: 50,
197
- waveSpeed: 0.3,
198
- zoom: 0.7
 
 
199
  });
200
-
201
  // Add font
202
  const link = document.createElement('link');
203
- link.href = 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap';
204
  link.rel = 'stylesheet';
205
  document.head.appendChild(link);
206
  // Recording and Upload
@@ -231,8 +319,7 @@
231
  alert('Voice file uploaded successfully!');
232
  }, 3000);
233
  });
234
-
235
- const recordingStatus = document.getElementById('recordingStatus');
236
  const soundWave = document.getElementById('soundWave');
237
 
238
  let isRecording = false;
@@ -244,14 +331,16 @@ const recordingStatus = document.getElementById('recordingStatus');
244
 
245
  if (isRecording) {
246
  recordBtn.classList.add('recording');
247
- recordingStatus.textContent = 'Recording...';
 
248
 
249
- // Simulate sound wave animation
250
  interval = setInterval(() => {
251
- progress += 0.5;
252
  if (progress > 100) progress = 0;
253
  soundWave.style.width = `${progress}%`;
254
- }, 50);
 
255
 
256
  // After 5 seconds, stop recording
257
  setTimeout(() => {
@@ -262,56 +351,107 @@ const recordingStatus = document.getElementById('recordingStatus');
262
  stopRecording();
263
  }
264
  });
265
-
266
  function stopRecording() {
267
  isRecording = false;
268
  recordBtn.classList.remove('recording');
269
  recordingStatus.textContent = 'Click to record';
 
270
  clearInterval(interval);
271
  soundWave.style.width = '0%';
 
272
  }
273
  function updateVoicePreview() {
274
  const voicePreview = document.getElementById('voicePreview');
275
  const voiceParams = document.getElementById('voiceParams');
276
 
277
  voicePreview.innerHTML = `
278
- <div class="flex items-center justify-center mb-4">
279
- <div class="relative">
280
- <img src="http://static.photos/people/200x200/42" class="w-24 h-24 rounded-full object-cover border-4 border-indigo-200">
281
- <div class="absolute -bottom-2 -right-2 bg-indigo-500 text-white rounded-full p-1">
282
  <i data-feather="check" class="w-4 h-4"></i>
283
  </div>
284
  </div>
 
 
 
 
 
285
  </div>
286
- <p class="text-center text-gray-700 mb-4">Voice model trained successfully!</p>
287
  `;
288
  voiceParams.classList.remove('hidden');
289
 
290
  feather.replace();
 
 
 
 
 
 
291
  }
292
-
293
  // Add event listeners for new buttons
294
  document.getElementById('trainBtn').addEventListener('click', () => {
295
  const recordingStatus = document.getElementById('recordingStatus');
296
- recordingStatus.textContent = 'Training voice model...';
 
297
  recordBtn.classList.add('recording');
298
 
299
- // Simulate training process
300
  setTimeout(() => {
301
  stopRecording();
302
  updateVoicePreview();
 
 
 
 
 
 
 
 
 
 
303
  }, 5000);
304
  });
 
305
  document.getElementById('generateBtn').addEventListener('click', () => {
306
  const text = document.getElementById('textToGenerate').value.trim();
307
  if (!text) {
308
- alert('Please enter some text to generate');
 
 
 
 
 
 
 
 
309
  return;
310
  }
311
- alert(`Generating audio from your voice clone: "${text}"`);
 
 
 
 
 
 
 
 
 
312
  });
313
- document.getElementById('downloadBtn').addEventListener('click', () => {
314
- alert('Voice model download started');
 
 
 
 
 
 
 
 
 
 
 
 
315
  });
316
  </script>
317
  <script>
 
13
  <style>
14
  body {
15
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
16
+ background: linear-gradient(135deg, #0f0f23 0%, #1a1a2e 50%, #16213e 100%);
17
+ color: #ffffff;
18
+ min-height: 100vh;
19
  }
20
  .wave-bg {
21
  position: fixed;
 
24
  width: 100%;
25
  height: 100%;
26
  z-index: -1;
27
+ opacity: 0.3;
28
  }
29
  .glass-card {
30
+ background: rgba(255, 255, 255, 0.05);
31
+ backdrop-filter: blur(20px);
32
+ -webkit-backdrop-filter: blur(20px);
33
+ border-radius: 24px;
34
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
35
+ border: 1px solid rgba(255, 255, 255, 0.1);
36
  }
37
  .recording {
38
+ animation: pulse 2s infinite;
39
  }
40
  @keyframes pulse {
41
+ 0% {
42
+ box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.6),
43
+ 0 0 0 0 rgba(139, 92, 246, 0.4);
44
+ }
45
+ 50% {
46
+ box-shadow: 0 0 0 20px rgba(99, 102, 241, 0.2),
47
+ 0 0 0 40px rgba(139, 92, 246, 0.1);
48
+ }
49
+ 100% {
50
+ box-shadow: 0 0 0 40px rgba(99, 102, 241, 0),
51
+ 0 0 0 60px rgba(139, 92, 246, 0);
52
+ }
53
  }
54
  .btn-gradient {
55
+ background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 50%, #EC4899 100%);
56
  color: white;
57
+ transition: all 0.4s ease;
58
+ border: none;
59
+ position: relative;
60
+ overflow: hidden;
61
  }
62
  .btn-gradient:hover {
63
+ transform: translateY(-3px);
64
+ box-shadow: 0 15px 30px rgba(99, 102, 241, 0.3);
65
+ }
66
+ .btn-gradient::before {
67
+ content: '';
68
+ position: absolute;
69
+ top: 0;
70
+ left: -100%;
71
+ width: 100%;
72
+ height: 100%;
73
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
74
+ transition: left 0.5s;
75
+ }
76
+ .btn-gradient:hover::before {
77
+ left: 100%;
78
+ }
79
+ .feature-card {
80
+ transition: all 0.4s ease;
81
+ background: rgba(255, 255, 255, 0.03);
82
+ border: 1px solid rgba(255, 255, 255, 0.1);
83
  }
84
  .feature-card:hover {
85
+ transform: translateY(-8px) scale(1.02);
86
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
87
+ background: rgba(255, 255, 255, 0.08);
88
+ border: 1px solid rgba(99, 102, 241, 0.3);
89
+ }
90
+ .gradient-text {
91
+ background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 30%, #EC4899 100%);
92
+ -webkit-background-clip: text;
93
+ -webkit-text-fill-color: transparent;
94
+ background-clip: text;
95
+ }
96
+ .neon-glow {
97
+ text-shadow: 0 0 10px rgba(99, 102, 241, 0.5),
98
+ 0 0 20px rgba(99, 102, 241, 0.3),
99
+ 0 0 40px rgba(99, 102, 241, 0.1);
100
+ }
101
+ .audio-wave {
102
+ background: linear-gradient(90deg,
103
+ #6366F1 0%,
104
+ #8B5CF6 25%,
105
+ #EC4899 50%,
106
+ #F59E0B 75%,
107
+ #10B981 100%);
108
+ height: 4px;
109
+ border-radius: 2px;
110
+ animation: wave 2s ease-in-out infinite;
111
+ }
112
+ @keyframes wave {
113
+ 0%, 100% { transform: scaleX(0.8); opacity: 0.7; }
114
+ 50% { transform: scaleX(1); opacity: 1; }
115
+ }
116
+ .floating {
117
+ animation: floating 3s ease-in-out infinite;
118
+ }
119
+ @keyframes floating {
120
+ 0%, 100% { transform: translateY(0px); }
121
+ 50% { transform: translateY(-10px); }
122
  }
123
  </style>
124
  </head>
125
  <body class="bg-gray-50">
126
  <div id="wave-bg" class="wave-bg"></div>
127
+ <div class="min-h-screen flex flex-col items-center justify-start px-4 pt-12">
128
+ <header class="w-full max-w-6xl mx-auto py-8">
129
+ <div class="flex flex-col items-center">
130
+ <div class="w-24 h-24 bg-gradient-to-br from-indigo-500 via-purple-500 to-pink-500 rounded-full flex items-center justify-center shadow-2xl mb-8 floating">
131
+ <i data-feather="mic" class="w-12 h-12 text-white"></i>
132
  </div>
133
+ <h1 class="text-6xl font-black mb-4 gradient-text neon-glow">VoiceCloneAI</h1>
134
+ <p class="text-2xl text-gray-300 max-w-2xl text-center leading-relaxed">Transform your voice into a digital masterpiece with cutting-edge AI technology</p>
135
+ <div class="mt-6 audio-wave w-32"></div>
136
+ </div>
137
  </header>
138
+ <main class="w-full max-w-6xl glass-card p-12 mb-12">
139
+ <div class="grid lg:grid-cols-2 gap-12">
140
+ <div class="space-y-8">
141
+ <div>
142
+ <h2 class="text-3xl font-bold gradient-text mb-3">Create Your Voice Clone</h2>
143
+ <p class="text-gray-300 text-lg">Record or upload samples to train your unique voice model</p>
144
+ </div>
145
+
146
+ <div class="flex flex-col items-center space-y-6">
147
  <div class="relative">
148
+ <div id="recordBtn" class="w-28 h-28 rounded-full bg-gradient-to-br from-indigo-500 to-pink-500 flex items-center justify-center cursor-pointer shadow-2xl hover:shadow-3xl transition-all duration-300">
149
+ <i data-feather="mic" class="w-12 h-12 text-white"></i>
150
  </div>
151
+ <div class="absolute -bottom-8 left-0 right-0 text-center text-sm text-gray-400" id="recordingStatus">Click to record</div>
152
  </div>
153
 
154
+ <div class="w-full h-2 bg-gray-700 rounded-full overflow-hidden">
155
+ <div id="soundWave" class="h-full bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500 rounded-full w-0 transition-all duration-100"></div>
156
  </div>
157
 
158
  <div class="relative w-full text-center">
159
+ <span class="text-gray-400 text-lg font-medium">or</span>
160
  </div>
161
 
162
  <div class="w-full">
163
+ <label class="flex flex-col items-center px-6 py-8 bg-gray-800 rounded-xl border-2 border-dashed border-gray-600 cursor-pointer hover:border-indigo-400 transition-all duration-300">
164
+ <div class="flex items-center space-x-3 text-indigo-400">
165
+ <i data-feather="upload" class="w-6 h-6"></i>
166
+ <span class="text-lg font-medium">Upload Voice File</span>
167
  </div>
168
  <input type="file" id="voiceUpload" accept="audio/*" class="hidden" />
169
+ <p class="mt-2 text-sm text-gray-400">MP3, WAV, OGG (max 50MB)</p>
170
  </label>
171
  </div>
172
  </div>
173
+
174
+ <div class="flex items-center space-x-3 text-gray-400 bg-gray-800 p-4 rounded-xl">
175
+ <i data-feather="info" class="w-5 h-5 text-indigo-400"></i>
176
+ <span class="text-sm">Find a quiet place and speak naturally for best results</span>
177
  </div>
178
  </div>
179
 
180
+ <div class="space-y-8">
181
+ <div>
182
+ <h2 class="text-3xl font-bold gradient-text mb-3">Your Voice Clone</h2>
183
+ <p class="text-gray-300 text-lg">Preview and customize your generated voice</p>
184
+ </div>
185
+
186
+ <div class="bg-gray-800 rounded-xl p-8 min-h-48 flex flex-col items-center justify-center border border-gray-700">
187
+ <div id="voicePreview" class="text-center w-full">
188
+ <div class="flex flex-col items-center justify-center">
189
+ <div class="w-20 h-20 bg-gradient-to-br from-gray-600 to-gray-700 rounded-full flex items-center justify-center mb-4">
190
+ <i data-feather="user" class="w-8 h-8 text-gray-400"></i>
191
+ </div>
192
+ <p class="text-gray-400 mb-6">Your voice clone will be generated here</p>
193
+ </div>
194
+
195
+ <div class="w-full mb-6">
196
+ <textarea id="textToGenerate" class="w-full p-4 bg-gray-700 border border-gray-600 rounded-xl resize-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 text-white placeholder-gray-400" rows="3" placeholder="Enter text to generate with your voice clone"></textarea>
197
+ </div>
198
+
199
+ <div id="voiceParams" class="w-full space-y-4 hidden">
200
+ <div>
201
+ <label class="block text-sm text-gray-300 mb-2">Voice Similarity</label>
202
+ <input type="range" min="0" max="100" value="85" class="w-full accent-indigo-500 bg-gray-600 rounded-lg">
203
  </div>
204
  <div>
205
+ <label class="block text-sm text-gray-300 mb-2">Pitch & Emotion</label>
206
+ <input type="range" min="0" max="100" value="60" class="w-full accent-purple-500 bg-gray-600 rounded-lg">
207
  </div>
208
  <div>
209
+ <label class="block text-sm text-gray-300 mb-2">Speed & Tone</label>
210
+ <input type="range" min="50" max="150" value="100" class="w-full accent-pink-500 bg-gray-600 rounded-lg">
211
  </div>
212
  </div>
213
  </div>
 
214
  </div>
215
+
216
  <div class="flex flex-wrap gap-4">
217
+ <button id="trainBtn" class="px-8 py-4 btn-gradient rounded-xl flex items-center space-x-3 text-lg font-medium">
218
+ <i data-feather="cpu" class="w-5 h-5"></i>
219
  <span>Train Model</span>
220
  </button>
221
+ <button id="generateBtn" class="px-8 py-4 btn-gradient rounded-xl flex items-center space-x-3 text-lg font-medium" style="background: linear-gradient(135deg, #10B981 0%, #3B82F6 50%, #6366F1 100%);">
222
+ <i data-feather="play" class="w-5 h-5"></i>
223
  <span>Generate Voice</span>
224
  </button>
225
+ <button id="downloadBtn" class="px-8 py-4 border border-gray-600 text-gray-300 rounded-xl hover:bg-gray-700 hover:border-indigo-400 transition-all duration-300 flex items-center space-x-3 text-lg font-medium">
226
+ <i data-feather="download" class="w-5 h-5"></i>
227
  <span>Download</span>
228
  </button>
229
  </div>
230
+ </div>
231
  </div>
232
  </main>
233
+ <section class="w-full max-w-6xl glass-card p-12 mb-12">
234
+ <h2 class="text-3xl font-bold gradient-text mb-8 text-center">Advanced Voice Cloning Features</h2>
235
+ <div class="grid lg:grid-cols-3 gap-8">
236
+ <div class="feature-card p-8 rounded-xl">
237
+ <div class="w-16 h-16 bg-gradient-to-br from-indigo-500 to-purple-500 rounded-xl flex items-center justify-center mb-6">
238
+ <i data-feather="layers" class="w-8 h-8 text-white"></i>
239
  </div>
240
+ <h3 class="font-bold text-xl mb-3 text-white">Multi-Speaker Support</h3>
241
+ <p class="text-gray-300 leading-relaxed">Train and manage multiple voice models simultaneously with advanced speaker separation technology</p>
242
  </div>
243
+ <div class="feature-card p-8 rounded-xl">
244
+ <div class="w-16 h-16 bg-gradient-to-br from-purple-500 to-pink-500 rounded-xl flex items-center justify-center mb-6">
245
+ <i data-feather="settings" class="w-8 h-8 text-white"></i>
246
  </div>
247
+ <h3 class="font-bold text-xl mb-3 text-white">Advanced Fine-Tuning</h3>
248
+ <p class="text-gray-300 leading-relaxed">Precise control over pitch, emotion, speed, and tone with real-time preview and adjustment</p>
249
  </div>
250
+ <div class="feature-card p-8 rounded-xl">
251
+ <div class="w-16 h-16 bg-gradient-to-br from-pink-500 to-red-500 rounded-xl flex items-center justify-center mb-6">
252
+ <i data-feather="cloud" class="w-8 h-8 text-white"></i>
253
  </div>
254
+ <h3 class="font-bold text-xl mb-3 text-white">Enterprise API</h3>
255
+ <p class="text-gray-300 leading-relaxed">Seamless integration with your applications through our powerful and scalable API infrastructure</p>
256
  </div>
257
+ </div>
258
  </section>
259
+ <footer class="w-full max-w-6xl py-8 text-center">
260
+ <div class="flex items-center justify-center space-x-6 mb-4">
261
+ <a href="#" class="w-10 h-10 bg-gray-800 rounded-full flex items-center justify-center hover:bg-indigo-500 transition-all duration-300">
262
+ <i data-feather="twitter" class="w-5 h-5 text-gray-300"></i>
263
+ </a>
264
+ <a href="#" class="w-10 h-10 bg-gray-800 rounded-full flex items-center justify-center hover:bg-purple-500 transition-all duration-300">
265
+ <i data-feather="github" class="w-5 h-5 text-gray-300"></i>
266
+ </a>
267
+ <a href="#" class="w-10 h-10 bg-gray-800 rounded-full flex items-center justify-center hover:bg-blue-500 transition-all duration-300">
268
+ <i data-feather="linkedin" class="w-5 h-5 text-gray-300"></i>
269
+ </a>
270
  </div>
271
+ <p class="text-gray-400 text-sm"2024 VoiceCloneAI - Advanced Voice Cloning Technology</p>
272
+ <div class="mt-4 audio-wave w-24 mx-auto"></div>
273
+ </footer>
274
+ </div>
275
 
276
  <script>
277
  feather.replace();
 
278
  // Initialize Vanta.js waves background
279
  VANTA.WAVES({
280
  el: "#wave-bg",
281
  color: 0x6366f1,
282
+ waveHeight: 20,
283
+ shininess: 80,
284
+ waveSpeed: 0.5,
285
+ zoom: 0.8,
286
+ colorDark: 0x0f0f23,
287
+ colorLight: 0x6366f1
288
  });
 
289
  // Add font
290
  const link = document.createElement('link');
291
+ link.href = 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap';
292
  link.rel = 'stylesheet';
293
  document.head.appendChild(link);
294
  // Recording and Upload
 
319
  alert('Voice file uploaded successfully!');
320
  }, 3000);
321
  });
322
+ const recordingStatus = document.getElementById('recordingStatus');
 
323
  const soundWave = document.getElementById('soundWave');
324
 
325
  let isRecording = false;
 
331
 
332
  if (isRecording) {
333
  recordBtn.classList.add('recording');
334
+ recordingStatus.textContent = '🎤 Recording... Speak now';
335
+ recordingStatus.className = 'absolute -bottom-8 left-0 right-0 text-center text-sm text-indigo-400 font-medium';
336
 
337
+ // Enhanced sound wave animation
338
  interval = setInterval(() => {
339
+ progress += Math.random() * 3;
340
  if (progress > 100) progress = 0;
341
  soundWave.style.width = `${progress}%`;
342
+ soundWave.style.opacity = `${0.3 + (progress / 100) * 0.7}`;
343
+ }, 100);
344
 
345
  // After 5 seconds, stop recording
346
  setTimeout(() => {
 
351
  stopRecording();
352
  }
353
  });
 
354
  function stopRecording() {
355
  isRecording = false;
356
  recordBtn.classList.remove('recording');
357
  recordingStatus.textContent = 'Click to record';
358
+ recordingStatus.className = 'absolute -bottom-8 left-0 right-0 text-center text-sm text-gray-400';
359
  clearInterval(interval);
360
  soundWave.style.width = '0%';
361
+ soundWave.style.opacity = '1';
362
  }
363
  function updateVoicePreview() {
364
  const voicePreview = document.getElementById('voicePreview');
365
  const voiceParams = document.getElementById('voiceParams');
366
 
367
  voicePreview.innerHTML = `
368
+ <div class="flex flex-col items-center justify-center">
369
+ <div class="relative mb-4">
370
+ <img src="http://static.photos/technology/120x120/42" class="w-24 h-24 rounded-full object-cover border-4 border-indigo-400 shadow-lg">
371
+ <div class="absolute -bottom-2 -right-2 bg-gradient-to-br from-indigo-500 to-pink-500 text-white rounded-full p-2 shadow-lg">
372
  <i data-feather="check" class="w-4 h-4"></i>
373
  </div>
374
  </div>
375
+ <p class="text-center text-indigo-300 font-medium mb-4">Voice model trained successfully! 🎉</p>
376
+ <div class="audio-wave w-32 mb-4"></div>
377
+ </div>
378
+ <div class="w-full mb-6">
379
+ <textarea id="textToGenerate" class="w-full p-4 bg-gray-700 border border-indigo-400 rounded-xl resize-none focus:ring-2 focus:ring-indigo-500 text-white placeholder-gray-400" rows="3" placeholder="Try: 'Hello, this is my AI voice clone!'"></textarea>
380
  </div>
 
381
  `;
382
  voiceParams.classList.remove('hidden');
383
 
384
  feather.replace();
385
+
386
+ // Add floating animation to the success image
387
+ const successImage = voicePreview.querySelector('img');
388
+ if (successImage) {
389
+ successImage.classList.add('floating');
390
+ }
391
  }
 
392
  // Add event listeners for new buttons
393
  document.getElementById('trainBtn').addEventListener('click', () => {
394
  const recordingStatus = document.getElementById('recordingStatus');
395
+ recordingStatus.textContent = '🤖 Training AI model...';
396
+ recordingStatus.className = 'absolute -bottom-8 left-0 right-0 text-center text-sm text-purple-400 font-medium';
397
  recordBtn.classList.add('recording');
398
 
399
+ // Enhanced training simulation
400
  setTimeout(() => {
401
  stopRecording();
402
  updateVoicePreview();
403
+
404
+ // Show success notification
405
+ const notification = document.createElement('div');
406
+ notification.className = 'fixed top-4 right-4 bg-gradient-to-r from-green-500 to-blue-500 text-white px-6 py-3 rounded-xl shadow-2xl z-50';
407
+ notification.innerHTML = '🎯 Voice model trained successfully!';
408
+ document.body.appendChild(notification);
409
+
410
+ setTimeout(() => {
411
+ notification.remove();
412
+ }, 3000);
413
  }, 5000);
414
  });
415
+
416
  document.getElementById('generateBtn').addEventListener('click', () => {
417
  const text = document.getElementById('textToGenerate').value.trim();
418
  if (!text) {
419
+ // Enhanced error notification
420
+ const errorNotification = document.createElement('div');
421
+ errorNotification.className = 'fixed top-4 right-4 bg-gradient-to-r from-red-500 to-pink-500 text-white px-6 py-3 rounded-xl shadow-2xl z-50';
422
+ errorNotification.innerHTML = '⚠️ Please enter some text to generate';
423
+ document.body.appendChild(errorNotification);
424
+
425
+ setTimeout(() => {
426
+ errorNotification.remove();
427
+ }, 3000);
428
  return;
429
  }
430
+
431
+ // Enhanced success notification
432
+ const successNotification = document.createElement('div');
433
+ successNotification.className = 'fixed top-4 right-4 bg-gradient-to-r from-indigo-500 to-purple-500 text-white px-6 py-3 rounded-xl shadow-2xl z-50';
434
+ successNotification.innerHTML = `🔊 Generating: "${text.substring(0, 30)}${text.length > 30 ? '...' : ''}"`;
435
+ document.body.appendChild(successNotification);
436
+
437
+ setTimeout(() => {
438
+ successNotification.remove();
439
+ }, 3000);
440
  });
441
+
442
+ document.getElementById('downloadBtn').addEventListener('click', () => {
443
+ // Enhanced download notification
444
+ const downloadNotification = document.createElement('div');
445
+ downloadNotification.className = 'fixed top-4 right-4 bg-gradient-to-r from-yellow-500 to-orange-500 text-white px-6 py-3 rounded-xl shadow-2xl z-50';
446
+ downloadNotification.innerHTML = '📥 Downloading voice model...';
447
+ document.body.appendChild(downloadNotification);
448
+
449
+ setTimeout(() => {
450
+ downloadNotification.innerHTML = '✅ Download complete!';
451
+ setTimeout(() => {
452
+ downloadNotification.remove();
453
+ }, 2000);
454
+ }, 2000);
455
  });
456
  </script>
457
  <script>