diff --git a/frontend/src/components/OnboardingWizard/PersonalizationStep/components/VoiceAvatarPlaceholder.tsx b/frontend/src/components/OnboardingWizard/PersonalizationStep/components/VoiceAvatarPlaceholder.tsx
index f651302a..c1471841 100644
--- a/frontend/src/components/OnboardingWizard/PersonalizationStep/components/VoiceAvatarPlaceholder.tsx
+++ b/frontend/src/components/OnboardingWizard/PersonalizationStep/components/VoiceAvatarPlaceholder.tsx
@@ -1,7 +1,7 @@
import React, { useMemo, useRef, useState, useEffect } from 'react';
import { Box, Typography, Paper, Stack, Button, Alert, TextField, CircularProgress, Slider, FormControlLabel, Checkbox, MenuItem, Tooltip, Chip, Divider, Grid, IconButton, Modal, Fade, Backdrop, LinearProgress } from '@mui/material';
import { keyframes } from '@mui/system';
-import { Mic, GraphicEq, Timer, CloudUpload, Stop, PlayArrow, InfoOutlined, TextFields, HelpOutline, AutoAwesome, Campaign, MicNone, Podcasts, RestartAlt, Undo, Headphones, Article, VideoLibrary, TrendingUp, CheckCircle, RecordVoiceOver } from '@mui/icons-material';
+import { Mic, GraphicEq, Timer, CloudUpload, Stop, PlayArrow, InfoOutlined, TextFields, HelpOutline, AutoAwesome, Campaign, MicNone, Podcasts, RestartAlt, Undo, Headphones, Article, VideoLibrary, TrendingUp, CheckCircle, RecordVoiceOver, Settings } from '@mui/icons-material';
import { createVoiceClone, createVoiceDesign, getLatestVoiceClone, setBrandVoice } from '../../../../api/brandAssets';
import { OperationButton } from '../../../shared/OperationButton';
@@ -58,6 +58,7 @@ export const VoiceAvatarPlaceholder: React.FC<{ domainName?: string; onVoiceSet?
const [accuracy, setAccuracy] = useState(0.7);
const [languageBoost, setLanguageBoost] = useState('auto');
const [qualityPreset, setQualityPreset] = useState<'clean' | 'noisy' | 'accent'>('clean');
+ const [showAdvancedOptions, setShowAdvancedOptions] = useState(false);
const [qwenLanguage, setQwenLanguage] = useState('auto');
const [referenceText, setReferenceText] = useState('');
const [voiceDescription, setVoiceDescription] = useState('');
@@ -826,12 +827,40 @@ export const VoiceAvatarPlaceholder: React.FC<{ domainName?: string; onVoiceSet?
-
- Read this script to capture your voice:
-
-
-
- "Hi, I'm excited to use AI to scale my content creation. This voice clone will help me stay consistent across all my channels. At our company, we value transparency and innovation, and we strive to deliver the best solutions for our clients every single day. Imagine a world where creativity knows no bounds, where your ideas can take flight and reach millions of people instantly."
+
+
+ Read this script to capture your voice:
+
+ setShowAdvancedOptions(!showAdvancedOptions)}
+ sx={{
+ color: showAdvancedOptions ? '#7C3AED' : '#9CA3AF',
+ bgcolor: showAdvancedOptions ? 'rgba(124, 58, 237, 0.1)' : 'transparent',
+ '&:hover': { bgcolor: 'rgba(124, 58, 237, 0.15)' }
+ }}
+ >
+
+
+
+
+
+ "Hi, I'm excited to use AI to scale my content creation. This voice clone will help me stay consistent across all my channels. At our company, we value transparency and innovation, and we strive to deliver the best solutions for our clients every single day."
@@ -893,7 +922,7 @@ export const VoiceAvatarPlaceholder: React.FC<{ domainName?: string; onVoiceSet?
{(audioPreviewUrl || audioFile || (inputType === 'text' && voiceDescription?.trim().length > 0)) && }
{/* Inputs for Voice Cloning (Mic/Upload) - Shown only after sample available */}
- {inputType !== 'text' && (audioPreviewUrl || audioFile) && (
+ {inputType !== 'text' && (audioPreviewUrl || audioFile) && showAdvancedOptions && (
0 && (
+ {inputType === 'text' && voiceDescription?.trim().length > 0 && showAdvancedOptions && (