Spaces:
				
			
			
	
			
			
					
		Running
		
			on 
			
			CPU Upgrade
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
			on 
			
			CPU Upgrade
	| {% 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; | |
| } | |
| /* Dark mode styles */ | |
| @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:[email protected]" 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 %} |