Skip to content

HumeAI/expressive-tts-arena

Repository files navigation

Expressive TTS Arena

A web application for comparing and evaluating the expressiveness of different text-to-speech models

Overview

Expressive TTS Arena is an open-source web application for evaluating the expressiveness of voice generation and speech synthesis from different text-to-speech providers, including Hume AI and Elevenlabs.

For support or to join the conversation, visit our Discord.

Prerequisites

Project Structure

Expressive TTS Arena/
├── src/
│   ├── assets/
│   │   ├── styles.css          # Defines custom css
│   ├── database/
│   │   ├── __init__.py         # Makes database a package; expose ORM methods
│   │   ├── crud.py             # Defines operations for interacting with database
│   │   ├── database.py         # Sets up SQLAlchemy database connection
│   │   └── models.py           # SQLAlchemy database models
│   ├── integrations/
│   │   ├── __init__.py         # Makes integrations a package; exposes API clients
│   │   ├── anthropic_api.py    # Anthropic API integration
│   │   ├── elevenlabs_api.py   # ElevenLabs API integration
│   │   └── hume_api.py         # Hume API integration
│   ├── scripts/
│   │   ├── __init__.py         # Makes scripts a package
│   │   ├── init_db.py          # Script for initializing database
│   │   ├── test_db.py          # Script for testing database connection
│   ├── __init__.py             # Makes src a package
│   ├── config.py               # Global config and logger setup
│   ├── constants.py            # Global constants
│   ├── custom_types.py         # Global custom types
│   ├── frontend.py             # Gradio UI components
│   ├── main.py                 # Entry file
│   └── utils.py                # Utility functions
│── static/
│   ├── audio/                  # Directory for storing generated audio files
├── .dockerignore
├── .env.example
├── .gitignore
├── .pre-commit-config.yaml
├── Dockerfile
├── LICENSE.txt
├── pyproject.toml
├── README.md
├── uv.lock

Installation

  1. This project uses the uv package manager. Follow the installation instructions for your platform here.

  2. Configure environment variables:

    • Create a .env file based on .env.example
    • Add your API keys:
    HUME_API_KEY=YOUR_HUME_API_KEY
    ANTHROPIC_API_KEY=YOUR_ANTHROPIC_API_KEY
    ELEVENLABS_API_KEY=YOUR_ELEVENLABS_API_KEY
  3. Run the application:

    Standard

    uv run python -m src.main

    With hot-reloading

    uv run watchfiles "python -m src.main" src
  4. Test the application by navigating to the the localhost URL in your browser (e.g. localhost:7860 or http://127.0.0.1:7860)

  5. (Optional) If contributing, install pre-commit hook for automatic linting, formatting, and type-checking:

    uv run pre-commit install

User Flow

  1. Select a sample character, or input a custom character description and click "Generate Text", to generate your text input.
  2. Click the "Synthesize Speech" button to synthesize two TTS outputs based on your text and character description.
  3. Listen to both audio samples to compare their expressiveness.
  4. Vote for the most expressive result by clicking either "Select Option A" or "Select Option B".

License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •