edge-tts
Microsoft Edge's TTS
Decision gist · record as of 2026-08-14
Yes, if you need free, zero-setup text-to-speech without local model management. The package is actively maintained, has no known vulnerabilities, and low install friction. The LGPLv3 copyleft license is permissive for most use cases. Main trade-off: you depend on Microsoft's online service availability; not suitable for offline-only or privacy-critical applications.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- edge-playback command requires mpv player installed (except on Windows).
- Requires Python 3.7 or later.
- Low friction installation with a pure Python wheel.
License · maintenance · safety
copyleft license (copyleft) — Licensed under LGPLv3 (copyleft). You may use and modify the package freely, but any derivative works must also be distributed under LGPLv3 and include source code availability.
last release 2026-03-22 (145 days) · last repo commit 2026-03-22 · 11,725 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 13,002,561 downloads/mo, #1,299 on PyPI
Alternatives
Verify before relying
pip install edge-tts
edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.srt
# Or in Python:
import asyncio
from edge_tts import Communicate
async def main():
communicate = Communicate("Hello, world!", "en-US")
await communicate.save("hello.mp3")
asyncio.run(main())- Whether the package handles network failures gracefully or requires manual retry logic
- Rate limiting or quota constraints from Microsoft's service
- Audio quality or latency characteristics compared to other TTS providers
- Offline fallback options or local model support
What it is and what it does
edge-tts wraps Microsoft Edge's online text-to-speech service, letting you generate speech audio and synchronized subtitles from text in your Python code or via command-line commands. It supports multiple voices across many languages, with control over speech rate, volume, and pitch. The package works asynchronously and depends on aiohttp for HTTP communication with the Edge service.
You can use it either as a standalone tool via edge-tts and edge-playback commands or import it as a Python module for programmatic access. The service requires no API key but depends on Microsoft's online service being available. Custom SSML is not supported due to Microsoft's restrictions on what the service will accept.
Use it for
- Generate MP3 audio files with synchronized SRT subtitles from text for video production or accessibility
- Build a command-line tool that reads text aloud with voice selection and playback
- Add speech synthesis to a Python application without managing local TTS models
- Create multilingual audio samples by iterating over available voices and text in different languages
- Automate podcast or audiobook generation from written content with subtitle support
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need free, zero-setup text-to-speech without local model management.
The package is actively maintained, has no known vulnerabilities, and low install friction. The LGPLv3 copyleft license is permissive for most use cases. Main trade-off: you depend on Microsoft's online service availability; not suitable for offline-only or privacy-critical applications.
Install
edge-tts on PyPI
Before you install
Low friction installation with a pure Python wheel. Actively maintained with recent commits and substantial community adoption (11725 stars). Requires only four runtime dependencies (aiohttp, certifi, tabulate, typing-extensions).
edge-playback command requires mpv player installed (except on Windows). Requires Python 3.7 or later.
License in practice
Licensed under LGPLv3 (copyleft). You may use and modify the package freely, but any derivative works must also be distributed under LGPLv3 and include source code availability.
Quickstart
pip install edge-tts
edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.srt
# Or in Python:
import asyncio
from edge_tts import Communicate
async def main():
communicate = Communicate("Hello, world!", "en-US")
await communicate.save("hello.mp3")
asyncio.run(main())
Verify before relying
- Whether the package handles network failures gracefully or requires manual retry logic
- Rate limiting or quota constraints from Microsoft's service
- Audio quality or latency characteristics compared to other TTS providers
- Offline fallback options or local model support
Package facts
| License | copyleft license copyleft |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packagesaiohttpcertifitabulatetyping-extensions |
| Maintenance | Actively maintained 145 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 13,002,561 / month, #1,299 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)Operating System :: OS IndependentProgramming Language :: Python :: 3 |
Evidence: edge_tts-7.2.8-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “microsoft edge tts”
- edge-ttsConverts text to speech using Microsoft Edge's online TTS service,…
- kokoro-onnxConverts text to speech using ONNX Runtime, supporting multiple…
- piper-ttsPiper TTS is a local neural text-to-speech engine that converts text…
Give your agent the search over MCP, or paste the wish link into any chat.
More Linguistic packages
Detects and normalizes text encoding from unknown or ambiguous sources, supporting all IANA character sets that Python's core library provides codecs for, with the ability to register custom codecs.
tiktoken is a fast BPE tokenizer that converts text into token sequences compatible with OpenAI models, supporting multiple encoding schemes including o200k_base and model-specific encodings.
Install it if you work with OpenAI APIs or need to understand token boundaries in GPT-family models.
Detects character encoding and language in byte sequences with high accuracy, supporting 99 encodings and returning confidence scores, language tags, and MIME types.
Install it if you need to detect character encoding or language in byte data; the rewrite makes it substantially faster and more accurate than its predecessors.
Converts Unicode text to ASCII by transliterating non-ASCII characters into their closest ASCII equivalents, with no runtime dependencies.
However, if transliteration quality or ongoing maintenance matters, consider unidecode instead despite its GPL-only license.
Lark is a parsing library that builds abstract syntax trees from context-free grammars, supporting multiple parsing algorithms (Earley, LALR(1), CYK) with automatic line and column tracking.
Python bindings to the tree-sitter parsing library, enabling incremental parsing and syntax tree analysis for source code.
See also pyttsx3 · gTTS · omnivoice · pocket-tts · TTS · mlx-audio · chatterbox-tts · coqui-tts · piper-tts · livekit-plugins-soniox