| | {% extends "base.html" %} |
| |
|
| | {% block title %}About - TTS Arena{% endblock %} |
| |
|
| | {% block current_page %}About{% endblock %} |
| |
|
| | {% block extra_head %} |
| | <style> |
| | .about-container { |
| | max-width: 800px; |
| | margin: 0 auto; |
| | } |
| | |
| | .about-section { |
| | background: white; |
| | border-radius: var(--radius); |
| | padding: 24px; |
| | margin-bottom: 24px; |
| | box-shadow: var(--shadow); |
| | } |
| | |
| | .about-section h2 { |
| | color: var(--primary-color); |
| | margin-bottom: 16px; |
| | font-size: 24px; |
| | } |
| | |
| | .about-section p { |
| | margin-bottom: 16px; |
| | line-height: 1.6; |
| | color: #444; |
| | } |
| | |
| | .about-section p:last-child { |
| | margin-bottom: 0; |
| | } |
| | |
| | .feature-list { |
| | list-style: none; |
| | padding: 0; |
| | } |
| | |
| | .feature-list li { |
| | margin-bottom: 12px; |
| | padding-left: 28px; |
| | position: relative; |
| | } |
| | |
| | .feature-list li::before { |
| | content: "•"; |
| | color: var(--primary-color); |
| | font-size: 24px; |
| | position: absolute; |
| | left: 8px; |
| | top: -4px; |
| | } |
| | |
| | .credits-list { |
| | display: grid; |
| | grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); |
| | gap: 24px; |
| | margin-top: 16px; |
| | } |
| | |
| | .credit-item { |
| | display: flex; |
| | align-items: center; |
| | justify-content: space-between; |
| | padding-bottom: 8px; |
| | border-bottom: 1px solid var(--border-color); |
| | } |
| | |
| | .credit-item a { |
| | color: var(--primary-color); |
| | text-decoration: none; |
| | } |
| | |
| | .credit-item a:hover { |
| | text-decoration: underline; |
| | } |
| | |
| | .social-links { |
| | display: flex; |
| | gap: 12px; |
| | } |
| | |
| | .social-icon { |
| | width: 20px; |
| | height: 20px; |
| | } |
| | |
| | .citation-box { |
| | background-color: var(--light-gray); |
| | border-radius: var(--radius); |
| | padding: 16px; |
| | margin-top: 16px; |
| | position: relative; |
| | font-family: monospace; |
| | white-space: pre-wrap; |
| | word-break: break-word; |
| | font-size: 14px; |
| | line-height: 1.5; |
| | } |
| | |
| | .copy-citation { |
| | position: absolute; |
| | top: 8px; |
| | right: 8px; |
| | background-color: white; |
| | border: 1px solid var(--border-color); |
| | border-radius: var(--radius); |
| | width: 36px; |
| | height: 36px; |
| | display: flex; |
| | align-items: center; |
| | justify-content: center; |
| | cursor: pointer; |
| | transition: background-color 0.2s; |
| | } |
| | |
| | .copy-citation:hover { |
| | background-color: var(--light-gray); |
| | } |
| | |
| | .copy-citation svg { |
| | color: var(--text-color); |
| | } |
| | |
| | .faq-item { |
| | margin-bottom: 20px; |
| | } |
| | |
| | .faq-question { |
| | font-weight: 600; |
| | margin-bottom: 8px; |
| | color: var(--primary-color); |
| | } |
| | |
| | .faq-answer { |
| | line-height: 1.6; |
| | } |
| | |
| | @media (prefers-color-scheme: dark) { |
| | .about-section { |
| | background-color: var(--light-gray); |
| | border-color: var(--border-color); |
| | } |
| | |
| | .about-section p { |
| | color: var(--text-color); |
| | } |
| | |
| | .citation-box { |
| | background-color: var(--secondary-color); |
| | border-color: var(--border-color); |
| | } |
| | |
| | .copy-citation { |
| | background-color: var(--light-gray); |
| | border-color: var(--border-color); |
| | } |
| | |
| | .copy-citation:hover { |
| | background-color: rgba(255, 255, 255, 0.1); |
| | } |
| | |
| | .copy-citation svg { |
| | color: var(--text-color); |
| | } |
| | |
| | .faq-question { |
| | color: var(--primary-color); |
| | } |
| | |
| | .social-icon.icon-x { |
| | filter: invert(1); |
| | } |
| | } |
| | |
| | </style> |
| | {% endblock %} |
| |
|
| | {% block content %} |
| | <div class="about-container"> |
| | <div class="about-section"> |
| | <h2>Welcome to TTS Arena 2.0</h2> |
| | <p> |
| | TTS Arena evaluates leading speech synthesis models in an interactive, community-driven platform. |
| | Inspired by LMsys's <a href="https://chat.lmsys.org/" target="_blank" rel="noopener">Chatbot Arena</a>, we've created |
| | a space where anyone can compare and rank text-to-speech technologies through direct, side-by-side evaluation. |
| | </p> |
| | <p> |
| | Our second version now supports conversational models for podcast-like content generation, expanding the arena's scope to reflect the diverse applications of modern speech synthesis. |
| | </p> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>Motivation</h2> |
| | <p> |
| | The field of speech synthesis has long lacked reliable methods to measure model quality. Traditional |
| | metrics like WER (word error rate) often fail to capture the nuances of natural speech, while subjective |
| | measures such as MOS (mean opinion score) typically involve small-scale experiments with limited participants. |
| | </p> |
| | <p> |
| | TTS Arena addresses these limitations by inviting the entire community to participate in the evaluation |
| | process, making both the opportunity to rank models and the resulting insights accessible to everyone. |
| | </p> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>How The Arena Works</h2> |
| | <p> |
| | The concept is straightforward: enter text that will be synthesized by two competing models. After |
| | listening to both samples, vote for the one that sounds more natural and engaging. To prevent bias, |
| | model names are revealed only after your vote is submitted. |
| | </p> |
| | <ul class="feature-list"> |
| | <li>Enter your own text or select a random sentence</li> |
| | <li>Listen to two different TTS models synthesize the same content</li> |
| | <li>Compare conversational models for podcast-like content</li> |
| | <li>Vote for the model that sounds more natural, clear, and expressive</li> |
| | <li>Track model rankings on our leaderboard</li> |
| | </ul> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>Frequently Asked Questions</h2> |
| | <div class="faq-item"> |
| | <div class="faq-question">What happened to the TTS Arena V1 leaderboard?</div> |
| | <div class="faq-answer"> |
| | The TTS Arena V1 leaderboard is now deprecated. While you can no longer vote on it, the results and leaderboard are still available for reference at <a href="https://huggingface.co/spaces/TTS-AGI/TTS-Arena" target="_blank" rel="noopener">TTS Arena V1</a>. The leaderboard is static and will not change. |
| | </div> |
| | </div> |
| | <div class="faq-item"> |
| | <div class="faq-question">How are models ranked in TTS Arena?</div> |
| | <div class="faq-answer"> |
| | Models are ranked using an Elo rating system, similar to chess rankings. When you vote for a model, its rating increases while the other model's rating decreases. The amount of change depends on the current ratings of both models. |
| | </div> |
| | </div> |
| | <div class="faq-item"> |
| | <div class="faq-question">Is the TTS Arena V2 leaderboard affected by votes from V1?</div> |
| | <div class="faq-answer"> |
| | No, the TTS Arena V2 leaderboard is a completely fresh start. Votes from V1 do not affect the V2 leaderboard in any way. All models in V2 start with a clean slate. |
| | </div> |
| | </div> |
| | <div class="faq-item"> |
| | <div class="faq-question">Can I suggest a model to be added to the arena?</div> |
| | <div class="faq-answer"> |
| | Yes! We welcome suggestions for new models. Please reach out to us through the Hugging Face community or create an issue in our GitHub repository. If you are developing a new model and wish for it to be added anonymously for pre-release evaluation, please <a href="mailto:me@mrfake.name" target="_blank" rel="noopener">reach out to us to discuss</a>. |
| | </div> |
| | </div> |
| | <div class="faq-item"> |
| | <div class="faq-question">How can I contribute to the project?</div> |
| | <div class="faq-answer"> |
| | You can contribute by voting on models, suggesting improvements, reporting bugs, or even contributing code. Check our GitHub repository for more information on how to get involved. |
| | </div> |
| | </div> |
| | <div class="faq-item"> |
| | <div class="faq-question">What's new in TTS Arena 2.0?</div> |
| | <div class="faq-answer"> |
| | TTS Arena 2.0 introduces support for conversational models (for podcast-like content), improved UI/UX, and a more robust backend infrastructure for handling more models and votes. |
| | </div> |
| | </div> |
| | <div class="faq-item"> |
| | <div class="faq-question">Do I need to login to use TTS Arena?</div> |
| | <div class="faq-answer"> |
| | Login is optional and not required to vote. If you choose to login (with Hugging Face), texts you enter will be associated with your account, and you'll have access to a personal leaderboard showing the models you favor the most. |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>Citation</h2> |
| | <p> |
| | If you use TTS Arena in your research, please cite it as follows: |
| | </p> |
| | <div class="citation-box" id="citation-text">@misc{tts-arena-v2, |
| | title = {TTS Arena 2.0: Benchmarking Text-to-Speech Models in the Wild}, |
| | author = {mrfakename and Srivastav, Vaibhav and Fourrier, Clémentine and Pouget, Lucain and Lacombe, Yoach and main and Gandhi, Sanchit and Passos, Apolinário and Cuenca, Pedro}, |
| | year = 2025, |
| | publisher = {Hugging Face}, |
| | howpublished = "\url{https://huggingface.co/spaces/TTS-AGI/TTS-Arena-V2}" |
| | }<button class="copy-citation" onclick="copyToClipboard()" title="Copy citation"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy-icon lucide-copy"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg></button></div> |
| | <script> |
| | function copyToClipboard() { |
| | const text = document.getElementById('citation-text').innerText; |
| | navigator.clipboard.writeText(text).then(() => { |
| | const btn = document.querySelector('.copy-citation'); |
| | const originalContent = btn.innerHTML; |
| | btn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>'; |
| | setTimeout(() => { |
| | btn.innerHTML = originalContent; |
| | }, 2000); |
| | }); |
| | } |
| | </script> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>Credits</h2> |
| | <p> |
| | Thank you to the following individuals who helped make this project possible: |
| | </p> |
| | <div class="credits-list"> |
| | <div class="credit-item"> |
| | <span>Vaibhav (VB) Srivastav</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/reach_vb" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/reach-vb" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Clémentine Fourrier</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/clefourrier" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/clefourrier" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Lucain Pouget</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/Wauplin" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/Wauplin" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Yoach Lacombe</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/yoachlacombe" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/ylacombe" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Main Horse</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/main_horse" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/main-horse" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Sanchit Gandhi</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/sanchitgandhi99" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/sanchit-gandhi" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Apolinário Passos</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/multimodalart" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/multimodalart" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | <div class="credit-item"> |
| | <span>Pedro Cuenca</span> |
| | <div class="social-links"> |
| | <a href="https://twitter.com/pcuenq" target="_blank" rel="noopener" title="Twitter"> |
| | <img src="{{ url_for('static', filename='twitter.svg') }}" alt="Twitter" class="social-icon icon-x"> |
| | </a> |
| | <a href="https://huggingface.co/pcuenq" target="_blank" rel="noopener" title="Hugging Face"> |
| | <img src="{{ url_for('static', filename='huggingface.svg') }}" alt="Hugging Face" class="social-icon"> |
| | </a> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>Privacy Statement</h2> |
| | <p> |
| | We may store text you enter and generated audio. If you are logged in, we may associate your votes with your Hugging Face username. |
| | You agree that we may collect, share, and/or publish any data you input for research and/or |
| | commercial purposes. |
| | </p> |
| | </div> |
| |
|
| | <div class="about-section"> |
| | <h2>License</h2> |
| | <p> |
| | Generated audio clips cannot be redistributed and may be used for personal, non-commercial use only. |
| | The code for the Arena is licensed under the Zlib license. |
| | Random sentences are sourced from a filtered subset of the |
| | <a href="https://www.cs.columbia.edu/~hgs/audio/harvard.html" target="_blank" rel="noopener">Harvard Sentences</a>. |
| | </p> |
| | </div> |
| | </div> |
| | {% endblock %} |