Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Supertonic - Lightning-Fast, On-Device TTS</title> | |
| <meta name="description" | |
| content="Supertonic - A lightweight, super-fast text-to-speech synthesis system with on-device capabilities. Multi-language support with ONNX Runtime."> | |
| <link rel="stylesheet" href="styles.css"> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link | |
| href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" | |
| rel="stylesheet"> | |
| <link | |
| href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap" | |
| rel="stylesheet"> | |
| <link rel="stylesheet" | |
| href="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css"> | |
| <!-- Import map for ES modules --> | |
| <script type="importmap"> | |
| { | |
| "imports": { | |
| "onnxruntime-web": "https://cdn.jsdelivr.net/npm/onnxruntime-web@1.23.0/dist/ort.webgpu.min.mjs", | |
| "fft.js": "https://esm.sh/fft.js@4.0.4" | |
| } | |
| } | |
| </script> | |
| <!-- Privacy-friendly analytics by Plausible --> | |
| <script async src="https://plausible.io/js/pa-sinHiv4XIaXgFEvrm77a0.js"></script> | |
| <script> | |
| window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}}; | |
| plausible.init() | |
| </script> | |
| </head> | |
| <body> | |
| <header class="header"> | |
| <img src="img/supertone.svg" alt="Supertone" class="header-logo"> | |
| </header> | |
| <div id="lightning-bg" aria-hidden="true"> | |
| <svg class="hero-lightning" viewBox="0 0 855.4 868.1" xmlns="http://www.w3.org/2000/svg" | |
| role="presentation" focusable="false"> | |
| <path | |
| d="M581.9 -75.4 h0 c-29.7 71 -63.1 135.1 -107.2 212.4 l83.1 -12.5 c-73.7 130.8 -158.9 265 -254.7 381.2 l83.5 -12.6 C278.2 625.3 133.6 746.6 0.6 855.2 c214.7 -136.9 388.4 -279.3 556.2 -428.3 l-96.5 14.5 c138.8 -123.7 270.7 -264.7 395.1 -402.3 l-127.7 19.2 c41.1 -45.6 80 -90.3 116.9 -133.7 h-262.7 Z" /> | |
| </svg> | |
| </div> | |
| <!-- Side Navigation Dots --> | |
| <nav class="side-nav"> | |
| <a href="#hero" class="nav-dot" data-tooltip="Home"></a> | |
| <a href="#benchmark" class="nav-dot" data-tooltip="Model comparison"></a> | |
| <a href="#demo" class="nav-dot" data-tooltip="Intro Video"></a> | |
| <a href="#interactive-demo" class="nav-dot" | |
| data-tooltip="Try It"></a> | |
| <a href="#text-handling" class="nav-dot" data-tooltip="Text handling"></a> | |
| <a href="#features" class="nav-dot" data-tooltip="Features"></a> | |
| <a href="#languages" class="nav-dot" data-tooltip="Programming languages"></a> | |
| <a href="#research" class="nav-dot" data-tooltip="Research"></a> | |
| <a href="#business" class="nav-dot" data-tooltip="Business"></a> | |
| </nav> | |
| <!-- Hero Section --> | |
| <section class="hero" id="hero"> | |
| <div class="container"> | |
| <div class="hero-content"> | |
| <h1 class="hero-title"> | |
| <span class="hero-title-text">Supertonic</span> | |
| <img src="img/supertonic_wordmark.svg" alt="Supertonic" class="hero-wordmark"> | |
| </h1> | |
| <div class="hero-headings"> | |
| <p class="hero-subtitle"> | |
| <img src="img/supertonic_symbol.svg" alt="" aria-hidden="true" class="hero-subtitle-icon"> | |
| <span>Lightning Fast, On-Device TTS.</span> | |
| </p> | |
| <p class="hero-description"> | |
| <span>Incredibly lightweight and blazingly fast,</span> | |
| <span>running natively in your environment via ONNX.</span> | |
| </p> | |
| </div> | |
| <div class="hero-buttons"> | |
| <a href="https://github.com/supertone-inc/supertonic/" | |
| class="btn btn-secondary" target="_blank"> | |
| GitHub <span class="arrow">↗</span> | |
| </a> | |
| <a href="https://huggingface.co/Supertone/Supertonic" | |
| class="btn btn-secondary" target="_blank"> | |
| Models <span class="arrow">↗</span> | |
| </a> | |
| <a href="https://supertone.ai/" | |
| class="btn btn-secondary" id="btn-supertone" target="_blank"> | |
| Supertone <span class="arrow">↗</span> | |
| </a> | |
| </div> | |
| <div class="hero-stats"> | |
| <div class="hero-stat"> | |
| <div class="hero-stat-label">Parameters</div> | |
| <div class="hero-stat-value">66M</div> | |
| </div> | |
| <div class="hero-stat"> | |
| <div class="hero-stat-label">PROGRAMMING LANGUAGES</div> | |
| <div class="hero-stat-value">8+</div> | |
| </div> | |
| <div class="hero-stat"> | |
| <div class="hero-stat-label">On-Device</div> | |
| <div class="hero-stat-value">100%</div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="hero-bg" aria-hidden="true"></div> | |
| </section> | |
| <!-- Benchmark Section --> | |
| <section class="benchmark" id="benchmark"> | |
| <div class="container"> | |
| <div class="comparison-container"> | |
| <div class="comparison-header"> | |
| <div class="comparison-header-wrapper"> | |
| <div class="comparison-title-group"> | |
| <h2 class="section-title model-comparison">Model comparison</h2> | |
| <h3 class="section-subtitle supertonic-is-faster-than-ever">A new standard in TTS speed</h3> | |
| </div> | |
| </div> | |
| <img src="img/supertonic-cps.png" alt="Supertonic CPS" class="comparison-cps-image" /> | |
| </div> | |
| <div class="comparison-content"> | |
| <div class="comparison-text"> | |
| <h3 class="section-subtitle comparison-subtitle">Characters per second</h3> | |
| <p>Supertonic can process over 12,000 characters on high-end GPUs,<br>and up to about 2,500 characters on consumer laptops.</p> | |
| </div> | |
| <img src="img/supertonic-graph.png" alt="Supertonic Graph" style="max-width: 100%; display: block; margin: 0 auto;" /> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Demo Video Section --> | |
| <section class="intro-video" id="demo"> | |
| <div class="container"> | |
| <h2 class="section-title">See It In Action</h2> | |
| <h3 class="section-subtitle">Experience the speed and quality</h3> | |
| <div class="video-container"> | |
| <iframe | |
| src="https://www.youtube.com/embed/USdrptxgSnI" | |
| title="YouTube video player" | |
| frameborder="0" | |
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | |
| referrerpolicy="strict-origin-when-cross-origin" | |
| allowfullscreen> | |
| </iframe> | |
| </div> | |
| <div class="demo-videos-grid"> | |
| <div class="demo-video-item"> | |
| <div class="video-container"> | |
| <iframe | |
| src="https://www.youtube.com/embed/EbHrtSmfoiE" | |
| title="YouTube video player" | |
| frameborder="0" | |
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | |
| referrerpolicy="strict-origin-when-cross-origin" | |
| allowfullscreen> | |
| </iframe> | |
| </div> | |
| <h3>Raspberry Pi</h3> | |
| <p>Watch Supertonic running on a Raspberry Pi, demonstrating on-device, real-time text-to-speech synthesis</p> | |
| </div> | |
| <div class="demo-video-item"> | |
| <div class="video-container"> | |
| <iframe | |
| src="https://www.youtube.com/embed/hCKqKmDbzUE" | |
| title="YouTube video player" | |
| frameborder="0" | |
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | |
| referrerpolicy="strict-origin-when-cross-origin" | |
| allowfullscreen> | |
| </iframe> | |
| </div> | |
| <h3><a href="https://chromewebstore.google.com/detail/mdbiaajonlkomihpcaffhkagodbcgbme" target="_blank" rel="noopener noreferrer">Browser Extension <span class="arrow">↗</span></a></h3> | |
| <p>Turns any webpage into audio in under one second, delivering lightning-fast, on-device text-to-speech with zero network dependency—free, private, and effortless.</p> | |
| </div> | |
| <div class="demo-video-item"> | |
| <div class="video-container"> | |
| <iframe | |
| src="https://www.youtube.com/embed/tP_ceNiPc7g" | |
| title="YouTube video player" | |
| frameborder="0" | |
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | |
| referrerpolicy="strict-origin-when-cross-origin" | |
| allowfullscreen> | |
| </iframe> | |
| </div> | |
| <h3>E-Reader</h3> | |
| <p>Experience Supertonic on an Onyx Boox Go 6 e-reader in airplane mode, achieving an average RTF of 0.3× with zero network dependency</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Interactive TTS Demo Section --> | |
| <section class="interactive-demo" id="interactive-demo"> | |
| <div class="container"> | |
| <h2 class="section-title">Try It Yourself</h2> | |
| <h3 class="section-subtitle">Generate speech directly in your browser</h3> | |
| <div class="demo-container"> | |
| <div class="demo-content"> | |
| <!-- Title row for the two-column grid --> | |
| <div class="demo-title-row"> | |
| <div class="demo-title-left">Text</div> | |
| <div class="demo-title-center"> | |
| <img src="img/supertonic_lighteninggraphic.svg" alt="Lightning" class="lightning-icon"> | |
| </div> | |
| <div class="demo-title-right">Speech</div> | |
| </div> | |
| <div class="demo-input-section"> | |
| <div class="demo-input-label"> | |
| <label for="demoTextInput">Enter text to | |
| synthesize:</label> | |
| </div> | |
| <textarea | |
| id="demoTextInput" | |
| placeholder="Type any text here to convert it into speech... (minimum 10 characters)" | |
| rows="3">This text-to-speech system runs entirely in your browser, providing fast and private operation without sending any data to external servers.</textarea> | |
| <div id="presetControlsRow"> | |
| <div id="presetButtonGroup"> | |
| <span class="preset-icon" aria-hidden="true"> | |
| <svg viewBox="0 0 24 24" width="18" height="18" focusable="false"> | |
| <rect x="4" y="6" width="14" height="2" fill="#000"/> | |
| <rect x="4" y="10" width="10" height="2" fill="#000"/> | |
| <rect x="4" y="14" width="14" height="2" fill="#000"/> | |
| <rect x="4" y="18" width="10" height="2" fill="#000"/> | |
| </svg> | |
| </span> | |
| <button class="btn btn-secondary text-toggle" data-preset="quote" id="presetQuoteBtn">Quote</button> | |
| <button class="btn btn-secondary text-toggle" data-preset="paragraph" id="presetParagraphBtn">Paragraph</button> | |
| <button class="btn btn-secondary text-toggle" data-preset="fullstory" id="presetFullStoryBtn">Full story</button> | |
| <button class="btn btn-secondary text-toggle" data-preset="book" id="presetBookBtn">Book</button> | |
| <button class="btn btn-secondary text-toggle" data-preset="freeform" id="freeformBtn">Freeform</button> | |
| </div> | |
| <span class="demo-char-counter" id="demoCharCounter"> | |
| <span id="demoCharCount">126</span> characters | |
| <span class="demo-char-status" id="demoCharStatus">✓</span> | |
| </span> | |
| </div> | |
| </div> | |
| <div class="demo-output-section"> | |
| <!-- Controls at the top of the right pane --> | |
| <div class="demo-controls"> | |
| <div class="demo-param"> | |
| <div class="demo-param-header"> | |
| <label> | |
| Voice: | |
| </label> | |
| <div class="voice-toggle-container"> | |
| <span class="voice-toggle-text active" data-voice="F">Female</span> | |
| <span class="voice-toggle-text" data-voice="M">Male</span> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="demo-param"> | |
| <div class="demo-param-header"> | |
| <label for="demoTotalSteps"> | |
| Quality (Steps): <span class="param-value" id="demoTotalStepsValue">5</span> | |
| </label> | |
| <span class="param-hint">Higher = Better quality, slower inference</span> | |
| </div> | |
| <input type="range" id="demoTotalSteps" value="5" min="2" max="16" step="1"> | |
| </div> | |
| <div class="demo-param"> | |
| <div class="demo-param-header"> | |
| <label for="demoDurationFactor"> | |
| Speech Length: <span class="param-value" id="demoDurationFactorValue">1</span> | |
| </label> | |
| <span class="param-hint">Higher = Longer speech duration</span> | |
| </div> | |
| <input type="range" id="demoDurationFactor" value="1.0" min="0.75" max="1.1" step="0.05"> | |
| </div> | |
| </div> | |
| <div class="demo-param-header"> | |
| <label class="demo-api-keys-label"> | |
| <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> | |
| <rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect> | |
| <path d="M7 11V7a5 5 0 0 1 10 0v4"></path> | |
| </svg> | |
| API Keys | |
| </label> | |
| <span class="param-hint">Optional for performance comparison</span> | |
| </div> | |
| <div class="demo-elevenlabs-config"> | |
| <input type="password" id="demoElevenLabsApiKey" placeholder="ElevenLabs Flash v2.5"> | |
| <input type="password" id="demoSecondaryApiKey" placeholder="OpenAI TTS-1"> | |
| <input type="password" id="demoTertiaryApiKey" placeholder="Gemini 2.5 Flash TTS"> | |
| </div> | |
| <button id="demoGenerateBtn" class="demo-generate-btn" disabled> | |
| <img src="img/supertonic_lighteninggraphic.svg" alt="Generate" width="20" height="20" /> | |
| <span class="text">Generate Speech</span> | |
| <span class="shimmer" aria-hidden="true"></span> | |
| </button> | |
| </div> | |
| <div id="demoResults" class="demo-results"> | |
| <div class="demo-placeholder"> | |
| <div class="demo-placeholder-icon">🎙️</div> | |
| <p>Your generated speech will appear here</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Performance Comparison Table --> | |
| <div id="demoComparisonSection" class="demo-comparison-section" style="display: none;"> | |
| <h3 class="demo-comparison-title">⚡ Performance Comparison</h3> | |
| <div class="demo-comparison-table"> | |
| <div class="demo-comparison-header"> | |
| <div class="demo-comparison-cell">System</div> | |
| <div class="demo-comparison-cell">Status</div> | |
| <div class="demo-comparison-cell">Processing Time</div> | |
| <div class="demo-comparison-cell">Audio Duration</div> | |
| <div class="demo-comparison-cell">RTF (Real-Time Factor)</div> | |
| </div> | |
| <div class="demo-comparison-row supertonic-row"> | |
| <div class="demo-comparison-cell"> | |
| <strong>Supertonic</strong> | |
| <span class="system-badge supertonic">On-Device</span> | |
| </div> | |
| <div class="demo-comparison-cell" id="supertonicStatus">⏳ Running...</div> | |
| <div class="demo-comparison-cell" id="supertonicTime">-</div> | |
| <div class="demo-comparison-cell" id="supertonicDuration">-</div> | |
| <div class="demo-comparison-cell" id="supertonicRTF">-</div> | |
| </div> | |
| <div class="demo-comparison-row elevenlabs-row"> | |
| <div class="demo-comparison-cell"> | |
| <strong>ElevenLabs Flash v2.5</strong> | |
| <span class="system-badge elevenlabs">Cloud API</span> | |
| </div> | |
| <div class="demo-comparison-cell" id="elevenlabsStatus">⏳ Running...</div> | |
| <div class="demo-comparison-cell" id="elevenlabsTime">-</div> | |
| <div class="demo-comparison-cell" id="elevenlabsDuration">-</div> | |
| <div class="demo-comparison-cell" id="elevenlabsRTF">-</div> | |
| </div> | |
| <div class="demo-comparison-row openai-row"> | |
| <div class="demo-comparison-cell"> | |
| <strong>OpenAI TTS-1</strong> | |
| <span class="system-badge openai">Cloud API</span> | |
| </div> | |
| <div class="demo-comparison-cell" id="openaiStatus">⏳ Running...</div> | |
| <div class="demo-comparison-cell" id="openaiTime">-</div> | |
| <div class="demo-comparison-cell" id="openaiDuration">-</div> | |
| <div class="demo-comparison-cell" id="openaiRTF">-</div> | |
| </div> | |
| <div class="demo-comparison-row gemini-row"> | |
| <div class="demo-comparison-cell"> | |
| <strong>Gemini 2.5 Flash TTS</strong> | |
| <span class="system-badge gemini">Cloud API</span> | |
| </div> | |
| <div class="demo-comparison-cell" id="geminiStatus">⏳ Running...</div> | |
| <div class="demo-comparison-cell" id="geminiTime">-</div> | |
| <div class="demo-comparison-cell" id="geminiDuration">-</div> | |
| <div class="demo-comparison-cell" id="geminiRTF">-</div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Moved below content: status box and info banner --> | |
| <div class="demo-status-box" id="demoStatusBox"> | |
| <div class="demo-status-content"> | |
| <div class="demo-status-text" id="demoStatusText"> | |
| <strong>Initializing...</strong> Loading models... | |
| </div> | |
| </div> | |
| <div class="demo-backend-badge" id="demoBackendBadge">Loading</div> | |
| </div> | |
| <div id="demoError" class="demo-error"></div> | |
| </div> | |
| <div class="supertonic-2-container"> | |
| <a href="https://huggingface.co/spaces/Supertone/supertonic-2" target="_blank" rel="noopener noreferrer"> | |
| <img src="img/supertonic-2.png" alt="Supertonic 2" class="supertonic-2-logo"> | |
| </a> | |
| <p> | |
| Supertonic 2 now supports 5 languages and 10 voices. Try the demo here. | |
| </p> | |
| <div class="transformers-buttons"> | |
| <a href="https://huggingface.co/spaces/Supertone/supertonic-2" class="btn btn-secondary" target="_blank" rel="noopener noreferrer"> | |
| <span class="btn-label">Try Supertonic 2</span> | |
| <span class="arrow">↗</span> | |
| </a> | |
| </div> | |
| </div> | |
| <div class="transformers-container"> | |
| <img src="img/hugging_supertonic.svg" alt="Hugging Face Supertonic" class="transformers-logo"> | |
| <p> | |
| Supertonic is now fully supported in <a href="https://huggingface.co/docs/transformers.js/en/index" target="_blank" rel="noopener noreferrer">Transformers.js</a> 🤗!<br> | |
| It uses a quantized ONNX version of Supertonic for faster inference. | |
| </p> | |
| <div class="transformers-buttons"> | |
| <a href="https://huggingface.co/spaces/webml-community/Supertonic-TTS-WebGPU" class="btn btn-secondary" target="_blank" rel="noopener noreferrer"> | |
| <span class="btn-label">Try it out</span> | |
| <span class="arrow">↗</span> | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Natural Text Handling Section --> | |
| <section class="text-handling" id="text-handling"> | |
| <div class="container"> | |
| <h2 class="section-title">Text handling</h2> | |
| <h3 class="section-subtitle">Handles text like humans</h3> | |
| <div class="features-grid text-handling-grid"> | |
| <article class="feature-card text-handling-card" data-card="financial"> | |
| <div class="text-handling-card-body"> | |
| <div class="text-handling-top"> | |
| <div> | |
| <h3 class="text-handling-label">Financial Expressions</h3> | |
| <p class="text-handling-desc">Currency symbols, codes, and abbreviations (M, K, $)</p> | |
| </div> | |
| <button class="text-handling-player" type="button" aria-pressed="false" aria-label="Play Financial Expressions sample"></button> | |
| </div> | |
| <div class="text-handling-buttons" role="group" aria-label="System selection"> | |
| <button type="button" class="provider-option" data-provider="Supertone" aria-pressed="false"> | |
| <img src="img/icon-provider-supertonic.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Supertone</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="ElevenLabs" aria-pressed="false"> | |
| <img src="img/icon-provider-elevenlabs.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>ElevenLabs</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="OpenAI" aria-pressed="false"> | |
| <img src="img/icon-provider-openai.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>OpenAI</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Gemini" aria-pressed="false"> | |
| <img src="img/icon-provider-gemini.png" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Gemini</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Microsoft" aria-pressed="false"> | |
| <img src="img/icon-provider-microsoft.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Microsoft</span> | |
| </button> | |
| </div> | |
| <p class="text-handling-sample"> | |
| The startup secured <span class="text-highlight">$5.2M</span> in venture capital,<br> | |
| a huge leap from their initial <span class="text-highlight">$450K</span> seed round. | |
| </p> | |
| <div class="text-handling-footer"> | |
| <div class="text-model"> | |
| <img src="img/icon-provideo-model.svg" alt="" aria-hidden="true" class="text-model-icon"> | |
| <span class="text-model-label">Supertonic</span> | |
| </div> | |
| </div> | |
| </div> | |
| </article> | |
| <article class="feature-card text-handling-card" data-card="time-date"> | |
| <div class="text-handling-card-body"> | |
| <div class="text-handling-top"> | |
| <div> | |
| <h3 class="text-handling-label">Time and Date</h3> | |
| <p class="text-handling-desc">Time and date formats, abbreviated weekdays/months</p> | |
| </div> | |
| <button class="text-handling-player" type="button" aria-pressed="false" aria-label="Play Time and Date sample"></button> | |
| </div> | |
| <div class="text-handling-buttons" role="group" aria-label="System selection"> | |
| <button type="button" class="provider-option" data-provider="Supertone" aria-pressed="false"> | |
| <img src="img/icon-provider-supertonic.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Supertone</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="ElevenLabs" aria-pressed="false"> | |
| <img src="img/icon-provider-elevenlabs.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>ElevenLabs</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="OpenAI" aria-pressed="false"> | |
| <img src="img/icon-provider-openai.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>OpenAI</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Gemini" aria-pressed="false"> | |
| <img src="img/icon-provider-gemini.png" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Gemini</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Microsoft" aria-pressed="false"> | |
| <img src="img/icon-provider-microsoft.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Microsoft</span> | |
| </button> | |
| </div> | |
| <p class="text-handling-sample"> | |
| The train delay was announced at <span class="text-highlight">4:45 PM</span> on | |
| <span class="text-highlight">Wed, Apr 3, 2024</span> due to track maintenance. | |
| </p> | |
| <div class="text-handling-footer"> | |
| <div class="text-model"> | |
| <img src="img/icon-provideo-model.svg" alt="" aria-hidden="true" class="text-model-icon"> | |
| <span class="text-model-label">Supertonic</span> | |
| </div> | |
| </div> | |
| </div> | |
| </article> | |
| <article class="feature-card text-handling-card" data-card="phone-number"> | |
| <div class="text-handling-card-body"> | |
| <div class="text-handling-top"> | |
| <div> | |
| <h3 class="text-handling-label">Phone Numbers</h3> | |
| <p class="text-handling-desc">Area codes, hyphens, extensions (ext.)</p> | |
| </div> | |
| <button class="text-handling-player" type="button" aria-pressed="false" aria-label="Play Phone Numbers sample"></button> | |
| </div> | |
| <div class="text-handling-buttons" role="group" aria-label="System selection"> | |
| <button type="button" class="provider-option" data-provider="Supertone" aria-pressed="false"> | |
| <img src="img/icon-provider-supertonic.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Supertone</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="ElevenLabs" aria-pressed="false"> | |
| <img src="img/icon-provider-elevenlabs.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>ElevenLabs</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="OpenAI" aria-pressed="false"> | |
| <img src="img/icon-provider-openai.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>OpenAI</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Gemini" aria-pressed="false"> | |
| <img src="img/icon-provider-gemini.png" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Gemini</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Microsoft" aria-pressed="false"> | |
| <img src="img/icon-provider-microsoft.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Microsoft</span> | |
| </button> | |
| </div> | |
| <p class="text-handling-sample"> | |
| You can reach the hotel front desk at <span class="text-highlight">(212) 555-0142 ext. 402</span> anytime. | |
| </p> | |
| <div class="text-handling-footer"> | |
| <div class="text-model"> | |
| <img src="img/icon-provideo-model.svg" alt="" aria-hidden="true" class="text-model-icon"> | |
| <span class="text-model-label">Supertonic</span> | |
| </div> | |
| </div> | |
| </div> | |
| </article> | |
| <article class="feature-card text-handling-card" data-card="technical-unit"> | |
| <div class="text-handling-card-body"> | |
| <div class="text-handling-top"> | |
| <div> | |
| <h3 class="text-handling-label">Technical Units</h3> | |
| <p class="text-handling-desc">Numbers with units, abbreviated technical notations</p> | |
| </div> | |
| <button class="text-handling-player" type="button" aria-pressed="false" aria-label="Play Technical Units sample"></button> | |
| </div> | |
| <div class="text-handling-buttons" role="group" aria-label="System selection"> | |
| <button type="button" class="provider-option" data-provider="Supertone" aria-pressed="false"> | |
| <img src="img/icon-provider-supertonic.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Supertone</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="ElevenLabs" aria-pressed="false"> | |
| <img src="img/icon-provider-elevenlabs.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>ElevenLabs</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="OpenAI" aria-pressed="false"> | |
| <img src="img/icon-provider-openai.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>OpenAI</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Gemini" aria-pressed="false"> | |
| <img src="img/icon-provider-gemini.png" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Gemini</span> | |
| </button> | |
| <button type="button" class="provider-option" data-provider="Microsoft" aria-pressed="false"> | |
| <img src="img/icon-provider-microsoft.svg" alt="" aria-hidden="true" class="provider-option-icon"> | |
| <span>Microsoft</span> | |
| </button> | |
| </div> | |
| <p class="text-handling-sample"> | |
| Our drone battery lasts <span class="text-highlight">2.3h</span> when flying at | |
| <span class="text-highlight">30kph</span> with full camera payload. | |
| </p> | |
| <div class="text-handling-footer"> | |
| <div class="text-model"> | |
| <img src="img/icon-provideo-model.svg" alt="" aria-hidden="true" class="text-model-icon"> | |
| <span class="text-model-label">Supertonic</span> | |
| </div> | |
| </div> | |
| </div> | |
| </article> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Features Section --> | |
| <section class="features" id="features"> | |
| <div class="container"> | |
| <h2 class="section-title">Why Supertonic?</h2> | |
| <h3 class="section-subtitle">Performance by design</h3> | |
| <div class="features-grid"> | |
| <div class="feature-card"> | |
| <div class="feature-icon"> | |
| <img src="img/spec0.svg" alt=""> | |
| </div> | |
| <h3>Blazingly Fast</h3> | |
| <p>Optimized ONNX Runtime inference delivers speech | |
| synthesis at unprecedented speeds. No more | |
| waiting.</p> | |
| </div> | |
| <div class="feature-card"> | |
| <div class="feature-icon"> | |
| <img src="img/spec1.svg" alt=""> | |
| </div> | |
| <h3>Ultra Lightweight</h3> | |
| <p>Minimal footprint means it runs smoothly on any | |
| device - from servers to embedded systems.</p> | |
| </div> | |
| <div class="feature-card"> | |
| <div class="feature-icon"> | |
| <img src="img/spec2.svg" alt=""> | |
| </div> | |
| <h3>On-Device Capable</h3> | |
| <p>Complete privacy and zero latency. All | |
| processing | |
| happens locally - no cloud dependencies.</p> | |
| </div> | |
| <div class="feature-card"> | |
| <div class="feature-icon"> | |
| <img src="img/spec3.svg" alt=""> | |
| </div> | |
| <h3>Natural Text Handling</h3> | |
| <p>Seamlessly processes numbers, dates, currency, abbreviations, and complex expressions without pre-processing.</p> | |
| </div> | |
| <div class="feature-card"> | |
| <div class="feature-icon"> | |
| <img src="img/spec4.svg" alt=""> | |
| </div> | |
| <h3>Highly Configurable</h3> | |
| <p>Adjust inference steps, batch processing, and | |
| other parameters to match your specific needs.</p> | |
| </div> | |
| <div class="feature-card"> | |
| <div class="feature-icon"> | |
| <img src="img/spec5.svg" alt=""> | |
| </div> | |
| <h3>Flexible Deployment</h3> | |
| <p>Deploy seamlessly across servers, browsers, and edge | |
| devices with multiple runtime backends.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Language Support Section --> | |
| <section class="languages" id="languages"> | |
| <div class="container"> | |
| <div class="languages-layout"> | |
| <div class="languages-text-section"> | |
| <div class="languages-header"> | |
| <h2 class="section-title">Programming Languages</h2> | |
| <h3 class="languages-subtitle">Fast setup,<br>instant execution.<br><br>Experience Supertonic in your favorite language.</h3> | |
| </div> | |
| </div> | |
| <div class="languages-placeholder"> | |
| <div class="languages-code-card"> | |
| <div class="languages-tablist" role="tablist" | |
| aria-label="Programming language code snippets"> | |
| <button class="language-option active" type="button" | |
| data-language="python" role="tab" aria-selected="true" | |
| tabindex="0"> | |
| <img class="component-2" src="img/lang_1.svg" | |
| alt="Python logo"> | |
| <span class="language-label">Python</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="javascript" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_2.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">JavaScript</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="java" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_3.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">Java</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="cpp" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_4.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">C++</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="csharp" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_8.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">C#</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="go" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_5.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">Go</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="swift" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_6.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">Swift</span> | |
| </button> | |
| <button class="language-option" type="button" | |
| data-language="rust" role="tab" aria-selected="false" | |
| tabindex="-1"> | |
| <img class="component-2" src="img/lang_7.svg" | |
| alt="" aria-hidden="true"> | |
| <span class="language-label">Rust</span> | |
| </button> | |
| </div> | |
| <div class="languages-code-body"> | |
| <pre class="code-snippet" data-language-snippet aria-live="polite"></pre> | |
| <button type="button" class="code-copy-btn" aria-label="Copy code snippet"> | |
| <img src="img/btn_cv.svg" alt=""> | |
| </button> | |
| <div class="code-copy-toast" role="status" aria-live="polite"></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="languages-icons-container"> | |
| <div class="languages-icons-grid"> | |
| <button type="button" class="language-icon component-22 active" | |
| data-language="python" aria-label="Python" aria-pressed="true"> | |
| <img class="lang_btn" src="img/lang_1.svg" alt=""> | |
| </button> | |
| <button type="button" class="language-icon component-3" | |
| data-language="javascript" aria-label="JavaScript" | |
| aria-pressed="false"> | |
| <img class="lang_btn" src="img/lang_2.svg" alt="" aria-hidden="true"> | |
| </button> | |
| <button type="button" class="language-icon component-4" | |
| data-language="java" aria-label="Java" aria-pressed="false"> | |
| <img class="lang_btn" src="img/lang_3.svg" alt="" aria-hidden="true"> | |
| </button> | |
| <button type="button" class="language-icon component-5" | |
| data-language="cpp" aria-label="C++" aria-pressed="false"> | |
| <img class="lang_btn" src="img/lang_4.svg" alt=""> | |
| </button> | |
| <button type="button" class="language-icon component-6" | |
| data-language="csharp" aria-label="C#" aria-pressed="false"> | |
| <img class="text-model" src="img/lang_8.svg" alt=""> | |
| </button> | |
| <button type="button" class="language-icon component-7" | |
| data-language="go" aria-label="Go" aria-pressed="false"> | |
| <img class="lang_btn" src="img/lang_5.svg" alt=""> | |
| </button> | |
| <button type="button" class="language-icon component-8" | |
| data-language="swift" aria-label="Swift" aria-pressed="false"> | |
| <img class="lang_btn" src="img/lang_6.svg" alt=""> | |
| </button> | |
| <button type="button" class="language-icon component-9" | |
| data-language="rust" aria-label="Rust" aria-pressed="false"> | |
| <img class="lang_btn" src="img/lang_7.svg" alt=""> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Research Papers Section --> | |
| <section class="research-papers" id="research"> | |
| <div class="container"> | |
| <h2 class="section-title">Research & Innovation</h2> | |
| <h3 class="section-subtitle">Built on our cutting-edge research</h3> | |
| <div class="papers-grid"> | |
| <a class="paper-card" href="https://arxiv.org/abs/2503.23108" | |
| target="_blank" rel="noopener"> | |
| <h3>SupertonicTTS: Towards Highly Efficient and | |
| Streamlined Text-to-Speech System</h3> | |
| <p class="paper-authors">Hyeongju Kim, Jinhyeok Yang, | |
| Yechan Yu, Seunghun Ji, Jacob Morton, Frederik Bous, | |
| Joon Byun, Juheon Lee</p> | |
| <p class="paper-description"> | |
| Presents <span class="paper-highlight">SupertonicTTS</span>, a highly | |
| efficient TTS framework built on flow-matching and | |
| ConvNeXt blocks. Features context-sharing batch | |
| expansion, | |
| character-level processing, and cross-attention | |
| alignment without the need for external G2P | |
| modules or aligners. | |
| </p> | |
| <span class="paper-link"> | |
| <span class="link-text">Read Paper</span><span class="arrow">↗</span> | |
| </span> | |
| </a> | |
| <a class="paper-card" href="https://arxiv.org/abs/2509.11084" | |
| target="_blank" rel="noopener"> | |
| <h3>Length-Aware Rotary Position Embedding for | |
| Text-Speech Alignment</h3> | |
| <p class="paper-authors">Hyeongju Kim, Juheon Lee, | |
| Jinhyeok Yang, Jacob Morton</p> | |
| <p class="paper-description"> | |
| Introduces <span class="paper-highlight">LARoPE</span>, an improved | |
| position embedding method that enables faster | |
| convergence, | |
| more accurate alignment, and better stability in | |
| extended speech generation up to 30 seconds. | |
| Achieves state-of-the-art word error rate on | |
| zero-shot TTS benchmarks. | |
| </p> | |
| <span class="paper-link"> | |
| <span class="link-text">Read Paper</span><span class="arrow">↗</span> | |
| </span> | |
| </a> | |
| <a class="paper-card" href="https://arxiv.org/abs/2509.19091" | |
| target="_blank" rel="noopener"> | |
| <h3>Training Flow Matching Models with Reliable Labels | |
| via Self-Purification</h3> | |
| <p class="paper-authors">Hyeongju Kim, Yechan Yu, June | |
| Young Yi, Juheon Lee</p> | |
| <p class="paper-description"> | |
| Proposes <span class="paper-highlight">Self-Purifying Flow Matching | |
| (SPFM)</span>, a principled approach to handle | |
| noisy training data. | |
| Identifies unreliable samples during training | |
| without pretrained models, ensuring accurate | |
| conditioning | |
| even with label contamination. | |
| </p> | |
| <span class="paper-link"> | |
| <span class="link-text">Read Paper</span><span class="arrow">↗</span> | |
| </span> | |
| </a> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Business Inquiry Section --> | |
| <section class="business-inquiry" id="business"> | |
| <div class="container"> | |
| <div class="business-content"> | |
| <div class="business-text"> | |
| <h2> | |
| <span style="display:block;">On-Device SDK Solutions</span> | |
| <span style="display:block;">for Your Business</span> | |
| </h2> | |
| <h6 class="business-subheadline"> | |
| Looking to integrate Supertonic into your product?<br> | |
| We offer customized on-device SDK solutions tailored to your business needs. Our lightweight, high-performance TTS technology can be seamlessly integrated into mobile apps, IoT devices, automotive systems, and more. | |
| </h6> | |
| <div class="business-buttons"> | |
| <a href="mailto:contact@supertone.ai" | |
| class="btn btn-secondary" id="btn-contact" target="_blank"> | |
| <span class="btn-label">Contact</span> | |
| <span class="arrow">↗</span> | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Footer --> | |
| <footer class="footer"> | |
| <div class="container"> | |
| <div class="footer-content"> | |
| <img src="img/logo.svg" alt="Supertonic logo" class="footer-logo"> | |
| <div class="footer-text"> | |
| <p> | |
| Developed by <a href="https://www.supertone.ai/" | |
| target="_blank" rel="noopener">Supertone</a> · | |
| © 2025 Supertone Inc. | |
| </p> | |
| <div class="footer-links"> | |
| <a href="https://github.com/supertone-inc/supertonic/" | |
| target="_blank">GitHub</a> | |
| <a href="https://huggingface.co/Supertone/Supertonic" | |
| target="_blank">Models</a> | |
| <a href="https://www.supertone.ai/" | |
| target="_blank" rel="noopener">Supertone</a> | |
| <a href="mailto:contact@supertone.ai" target="_blank">Contact</a> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </footer> | |
| <svg class="lightning-filters" width="0" height="0" aria-hidden="true" focusable="false"> | |
| <filter id="lightning-flicker-filter"> | |
| <feColorMatrix type="matrix" | |
| values="0 0 0 0 1 | |
| 0 0 0 0 1 | |
| 0 0 0 0 1 | |
| 0 0 0 1 0"></feColorMatrix> | |
| </filter> | |
| <filter id="lightning-flash-filter"> | |
| <feColorMatrix type="matrix" | |
| values="0 0 0 0 1 | |
| 0 0 0 0 1 | |
| 0 0 0 0 1 | |
| 0 0 0 1 0"></feColorMatrix> | |
| </filter> | |
| </svg> | |
| <!-- Billing Confirmation Modal --> | |
| <div id="billingModal" class="billing-modal"> | |
| <div class="billing-modal-overlay"></div> | |
| <div class="billing-modal-content"> | |
| <div class="billing-modal-header"> | |
| <svg class="billing-modal-icon" width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
| <path d="M12 2L1 21h22L12 2z" fill="currentColor"/> | |
| <path d="M12 9.5v5M12 17.5h.01" stroke="#fff" stroke-width="2" stroke-linecap="round"/> | |
| <circle cx="12" cy="17.5" r="1" fill="#fff"/> | |
| </svg> | |
| <h3 class="billing-modal-title">Confirm API Usage</h3> | |
| </div> | |
| <div class="billing-modal-body"> | |
| <p class="billing-modal-message" id="billingModalMessage"></p> | |
| <div class="billing-modal-details"> | |
| <div class="billing-detail-item"> | |
| <span class="billing-detail-label">Characters:</span> | |
| <span class="billing-detail-value" id="billingCharCount">0</span> | |
| </div> | |
| <div class="billing-detail-item"> | |
| <span class="billing-detail-label">TTS Model:</span> | |
| <span class="billing-detail-value" id="billingProviders"></span> | |
| </div> | |
| </div> | |
| <p class="billing-modal-warning">⚠️ You will be charged by each API provider according to their respective pricing policies.</p> | |
| </div> | |
| <div class="billing-modal-footer"> | |
| <button class="billing-modal-btn billing-modal-btn-cancel" id="billingModalCancel">Cancel</button> | |
| <button class="billing-modal-btn billing-modal-btn-confirm" id="billingModalConfirm">Proceed</button> | |
| </div> | |
| </div> | |
| </div> | |
| <script src="preset-texts.js"></script> | |
| <script type="module" src="script.js"></script> | |
| </body> | |
| </html> | |