Text-to-speech API endpoint compatible with OpenAI's TTS API endpoint, using Microsoft Edge TTS to generate speech for free locally
GPL-3.0 License
This project provides a local, OpenAI-compatible text-to-speech (TTS) API using edge-tts
. It emulates the OpenAI TTS endpoint (/v1/audio/speech
), enabling users to generate speech from text with various voice options and playback speeds, just like the OpenAI API.
edge-tts
uses Microsoft Edge's online text-to-speech service, so it is completely free.
View this project on Docker Hub
/v1/audio/speech
with similar request structure and behavior.edge-tts
equivalents.requirements.txt
.git clone https://github.com/your-username/openai-edge-tts.git
cd openai-edge-tts
.env
file in the root directory with the following variables:API_KEY=your_api_key_here
PORT=5050
DEFAULT_VOICE=en-US-AndrewNeural
DEFAULT_RESPONSE_FORMAT=mp3
DEFAULT_SPEED=1.0
DEFAULT_LANGUAGE=en-US
REQUIRE_API_KEY=True
docker-compose up --build
(Note: docker-compose is not the same as docker compose we're working on Docker Compose V2 to accommodate both. In the interim, use the commands below if you have issues with docker compose.)
Alternatively, run directly with Docker:
docker build -t openai-edge-tts .
docker run -p 5050:5050 --env-file .env openai-edge-tts
To run the container in the background, add -d
after the docker run
command:
docker run -d -p 5050:5050 --env-file .env openai-edge-tts
http://localhost:5050
.If you prefer to run this project directly with Python, follow these steps to set up a virtual environment, install dependencies, and start the server.
git clone https://github.com/your-username/openai-edge-tts.git
cd openai-edge-tts
Create and activate a virtual environment to isolate dependencies:
# For macOS/Linux
python3 -m venv venv
source venv/bin/activate
# For Windows
python -m venv venv
venv\Scripts\activate
Use pip
to install the required packages listed in requirements.txt
:
pip install -r requirements.txt
Create a .env
file in the root directory and set the following variables:
API_KEY=your_api_key_here
PORT=5050
DEFAULT_VOICE=en-US-AndrewNeural
DEFAULT_RESPONSE_FORMAT=mp3
DEFAULT_SPEED=1.0
DEFAULT_LANGUAGE=en-US
REQUIRE_API_KEY=True
Once configured, start the server with:
python app/server.py
The server will start running at http://localhost:5050
.
You can now interact with the API at http://localhost:5050/v1/audio/speech
and other available endpoints. See the Usage section for request examples.
/v1/audio/speech
Generates audio from the input text. Available parameters:
Required Parameter:
Optional Parameters:
"tts-1"
).edge-tts
voice (default: "en-US-AndrewNeural"
).mp3
, opus
, aac
, flac
, wav
, pcm
(default: mp3
).1.0
.Example request with curl
and saving the output to an mp3 file:
curl -X POST http://localhost:5050/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_here" \
-d '{
"input": "Hello, I am your AI assistant! Just let me know how I can help bring your ideas to life.",
"voice": "echo",
"response_format": "mp3",
"speed": 1.0
}' \
--output speech.mp3
Or, to be in line with the OpenAI API endpoint parameters:
curl -X POST http://localhost:5050/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_here" \
-d '{
"model": "tts-1",
"input": "Hello, I am your AI assistant! Just let me know how I can help bring your ideas to life.",
"voice": "alloy"
}' \
--output speech.mp3
And an example of a language other than English:
curl -X POST http://localhost:5050/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_here" \
-d '{
"model": "tts-1",
"input": "",
"voice": "ja-JP-KeitaNeural"
}' \
--output speech.mp3
edge-tts
voices for a given language / locale.edge-tts
voices, with language support information.Contributions are welcome! Please fork the repository and create a pull request for any improvements.
This project is licensed under GNU General Public License v3.0 (GPL-3.0)
Open up the Admin Panel and go to Settings -> Audio
Below, you can see a screenshot of the correct configuration for using this project to substitute the OpenAI endpoint
your_api_key_here
never needs to be replaced No "real" API key is required. Use whichever string you'd like.docker run -d -p 5050:5050 -e API_KEY=your_api_key_here -e PORT=5050 travisvn/openai-edge-tts:latest