Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"/> | |
| <meta content="width=1280, height=720, initial-scale=1.0" name="viewport"/> | |
| <title>Graph – Speaker Memory Network</title> | |
| <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"/> | |
| <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;600;700&family=Roboto+Mono:wght@300;400;500&display=swap" rel="stylesheet"/> | |
| <link href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/css/all.min.css" rel="stylesheet"/> | |
| <style> | |
| body { | |
| margin: 0; | |
| padding: 0; | |
| width: 1280px; | |
| height: 720px; | |
| overflow: hidden; | |
| font-family: 'Space Grotesk', sans-serif; | |
| background-color: #050505; | |
| color: #ffffff; | |
| } | |
| .slide-container { | |
| width: 1280px; | |
| height: 720px; | |
| display: flex; | |
| position: relative; | |
| background-color: #000000; | |
| /* Subtle grid background */ | |
| background-image: | |
| linear-gradient(rgba(0, 243, 255, 0.03) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(0, 243, 255, 0.03) 1px, transparent 1px); | |
| background-size: 50px 50px; | |
| } | |
| /* Left Content Panel */ | |
| .left-panel { | |
| flex: 0 0 35%; | |
| padding: 50px; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| background: rgba(10, 10, 15, 0.9); | |
| border-right: 1px solid rgba(0, 243, 255, 0.1); | |
| position: relative; | |
| z-index: 2; | |
| } | |
| .slide-header { | |
| margin-bottom: 40px; | |
| } | |
| .slide-title { | |
| font-size: 42px; | |
| font-weight: 700; | |
| line-height: 1.1; | |
| margin-bottom: 12px; | |
| color: #ffffff; | |
| } | |
| .slide-title span { | |
| color: #00f3ff; | |
| display: block; | |
| } | |
| .subtitle { | |
| font-family: 'Roboto Mono', monospace; | |
| color: #888; | |
| font-size: 14px; | |
| letter-spacing: 1px; | |
| text-transform: uppercase; | |
| } | |
| /* Feature List */ | |
| .feature-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 24px; | |
| } | |
| .feature-item { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 16px; | |
| } | |
| .feature-icon { | |
| width: 40px; | |
| height: 40px; | |
| background: rgba(0, 243, 255, 0.1); | |
| border: 1px solid rgba(0, 243, 255, 0.3); | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: #00f3ff; | |
| flex-shrink: 0; | |
| font-size: 18px; | |
| } | |
| .feature-icon.memory { | |
| color: #ff9933; | |
| background: rgba(255, 153, 51, 0.1); | |
| border-color: rgba(255, 153, 51, 0.3); | |
| } | |
| .feature-text h3 { | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: #e0e0e0; | |
| margin: 0 0 4px 0; | |
| } | |
| .feature-text p { | |
| font-size: 14px; | |
| color: #999; | |
| margin: 0; | |
| line-height: 1.4; | |
| } | |
| /* Right Visualization Panel */ | |
| .right-panel { | |
| flex: 1; | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: hidden; | |
| padding: 40px; | |
| } | |
| .viz-container { | |
| width: 100%; | |
| height: 100%; | |
| position: relative; | |
| border-radius: 12px; | |
| overflow: hidden; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| box-shadow: 0 0 40px rgba(0, 0, 0, 0.5); | |
| } | |
| .viz-image { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| /* Enhancing the generated image look */ | |
| filter: brightness(0.9) contrast(1.1); | |
| } | |
| /* Overlay UI Elements on Image */ | |
| .overlay-ui { | |
| position: absolute; | |
| top: 20px; | |
| right: 20px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| z-index: 5; | |
| } | |
| .data-card { | |
| background: rgba(0, 0, 0, 0.7); | |
| backdrop-filter: blur(8px); | |
| border-left: 3px solid #00f3ff; | |
| padding: 10px 15px; | |
| border-radius: 0 4px 4px 0; | |
| min-width: 180px; | |
| } | |
| .data-label { | |
| font-family: 'Roboto Mono', monospace; | |
| font-size: 10px; | |
| color: #888; | |
| margin-bottom: 2px; | |
| text-transform: uppercase; | |
| } | |
| .data-value { | |
| font-family: 'Space Grotesk', sans-serif; | |
| font-size: 14px; | |
| color: #fff; | |
| font-weight: 600; | |
| } | |
| .scan-anim { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 4px; | |
| background: rgba(0, 243, 255, 0.5); | |
| box-shadow: 0 0 10px rgba(0, 243, 255, 0.8); | |
| opacity: 0.6; | |
| z-index: 10; | |
| } | |
| /* Bottom Status Bar */ | |
| .status-bar { | |
| position: absolute; | |
| bottom: 30px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| background: rgba(20, 20, 20, 0.8); | |
| border: 1px solid #333; | |
| border-radius: 30px; | |
| padding: 8px 24px; | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| z-index: 5; | |
| } | |
| .status-dot { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background-color: #00ff9d; | |
| box-shadow: 0 0 8px #00ff9d; | |
| } | |
| .status-text { | |
| font-family: 'Roboto Mono', monospace; | |
| font-size: 12px; | |
| color: #ccc; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="slide-container"> | |
| <!-- Left Panel --> | |
| <div class="left-panel"> | |
| <div class="slide-header"> | |
| <div class="subtitle"> | |
| <p>IDENTITY LAYER</p> | |
| </div> | |
| <h1 class="slide-title"> | |
| Speaker ID & | |
| <span>Long-term Memory</span> | |
| </h1> | |
| </div> | |
| <div class="feature-list"> | |
| <!-- Feature 1 --> | |
| <div class="feature-item"> | |
| <div class="feature-icon"> | |
| <i class="fas fa-fingerprint"></i> | |
| </div> | |
| <div class="feature-text"> | |
| <h3>Diarization + Embeddings</h3> | |
| <p>Pyannote based speaker extraction separates overlapping voices with high precision.</p> | |
| </div> | |
| </div> | |
| <!-- Feature 2 --> | |
| <div class="feature-item"> | |
| <div class="feature-icon memory"> | |
| <i class="fas fa-database"></i> | |
| </div> | |
| <div class="feature-text"> | |
| <h3>Persistent Profiles</h3> | |
| <p>Vector database (Chroma/FAISS) stores voice signatures locally. Recognized across sessions.</p> | |
| </div> | |
| </div> | |
| <!-- Feature 3 --> | |
| <div class="feature-item"> | |
| <div class="feature-icon"> | |
| <i class="fas fa-user-shield"></i> | |
| </div> | |
| <div class="feature-text"> | |
| <h3>Consent-First</h3> | |
| <p>Strict enrollment flows. "Who is speaking?" answered locally without biometric cloud upload.</p> | |
| </div> | |
| </div> | |
| <!-- Feature 4 --> | |
| <div class="feature-item"> | |
| <div class="feature-icon memory"> | |
| <i class="fas fa-project-diagram"></i> | |
| </div> | |
| <div class="feature-text"> | |
| <h3>Context Linking</h3> | |
| <p>Queryable API allows agents to recall: "What did Speaker A say about the budget last week?"</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Right Panel --> | |
| <div class="right-panel"> | |
| <div class="viz-container"> | |
| <!-- Using generated speaker ID visualization --> | |
| <img alt="Speaker Network Visualization" class="viz-image" src="3ZzGLLcZ.png"/> | |
| <!-- Animated Scanner Line Simulation --> | |
| <div class="scan-anim" style="top: 30%"></div> | |
| <!-- Overlay Data Cards --> | |
| <div class="overlay-ui"> | |
| <div class="data-card"> | |
| <p class="data-label">Active Speakers</p> | |
| <p class="data-value">3 Detected</p> | |
| </div> | |
| <div class="data-card"> | |
| <p class="data-label">Profile Match</p> | |
| <p class="data-value">Speaker_02 (98.4%)</p> | |
| </div> | |
| <div class="data-card" style="border-left-color: #ff9933"> | |
| <p class="data-label">Memory Context</p> | |
| <p class="data-value">Session #4 linked</p> | |
| </div> | |
| </div> | |
| <!-- Bottom Status --> | |
| <div class="status-bar"> | |
| <div class="status-dot"></div> | |
| <p class="status-text">VECTOR DB: CONNECTED • 128 DIMENSIONS • LOCAL STORAGE</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </body> | |
| </html> | |