
edge-tts
CLI调用微软 Edge 在线语音合成把文本转成语音,并可同时生成字幕文件,无需 API Key,支持中文等多语种音色。非微软官方项目,依赖该在线服务的可用性。
edge-tts
edge-tts is a Python module that allows you to use Microsoft Edge's online text-to-speech service from within your Python code or using the provided edge-tts or edge-playback command.
Installation
To install it, run the following command:
$ pip install edge-tts
If you only want to use the edge-tts and edge-playback commands, it would be better to use pipx:
$ pipx install edge-tts
Usage
Basic usage
If you want to use the edge-tts command, you can simply run it with the following command:
$ edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.srt
If you wish to play it back immediately with subtitles, you could use the edge-playback command:
$ edge-playback --text "Hello, world!"
Note that edge-playback requires the installation of the mpv command line player, except on Windows.
All edge-tts commands work with edge-playback with the exception of the --write-media, --write-subtitles and --list-voices options.
Changing the voice
You can change the voice used by the text-to-speech service by using the --voice option. The --list-voices option can be used to list all available voices.
$ edge-tts --list-voices
Name Gender ContentCategories VoicePersonalities
--------------------------------- -------- --------------------- --------------------------------------
af-ZA-AdriNeural Female General Friendly, Positive
af-ZA-WillemNeural Male General Friendly, Positive
am-ET-AmehaNeural Male General Friendly, Positive
am-ET-MekdesNeural Female General Friendly, Positive
ar-AE-FatimaNeural Female General Friendly, Positive
ar-AE-HamdanNeural Male General Friendly, Positive
ar-BH-AliNeural Male General Friendly, Positive
ar-BH-LailaNeural Female General Friendly, Positive
ar-DZ-AminaNeural Female General Friendly, Positive
ar-DZ-IsmaelNeural Male General Friendly, Positive
ar-EG-SalmaNeural Female General Friendly, Positive
...
$ edge-tts --voice ar-EG-SalmaNeural --text "مرحبا كيف حالك؟" --write-media hello_in_arabic.mp3 --write-subtitles hello_in_arabic.srt
Custom SSML
Support for custom SSML was removed because Microsoft prevents the use of any SSML that could not be generated by Microsoft Edge itself. This means that all the cases where custom SSML would be useful cannot be supported as the service only permits a single <voice> tag with a single <prosody> tag inside it. Any available customization options that could be used in the <prosody> tag are already available from the library or the command line itself.
Changing rate, volume and pitch
You can change the rate, volume and pitch of the generated speech by using the --rate, --volume and --pitch options. When using a negative value, you will need to use --[option]=-50% instead of --[option] -50% to avoid the option being interpreted as a command line option.
$ edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_lowered.mp3 --write-subtitles hello_with_rate_lowered.srt
$ edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_lowered.mp3 --write-subtitles hello_with_volume_lowered.srt
$ edge-tts --pitch=-50Hz --text "Hello, world!" --write-media hello_with_pitch_lowered.mp3 --write-subtitles hello_with_pitch_lowered.srt
Progress
When stderr is a terminal, a progress bar is drawn on it while the audio is generated:
42%|███████████████████▌ | 1.5MB 00:03<00:04
The percentage is the audio received so far against the total length estimated from the service's boundary metadata, so it tracks how much work is left rather than how much text has been read out. The bar is suppressed when stderr is redirected, when subtitles are being written to stderr with --write-subtitles -, and when --no-progress is passed.
$ edge-tts --no-progress --text "Hello, world!" --write-media hello.mp3
Python module
It is possible to use the edge-tts module directly from Python. Examples from the project itself include:
Other projects that use the edge-tts module include:
- hass-edge-tts
- Podcastfy
- tts-samples - a collection of mp3 sound samples to facilitate picking a voice for your project.
相关资源

notebooklm-py
CLI非官方 Python 库与 CLI,让 agent 操控 Google NotebookLM(现更名 Gemini Notebook):批量导入资料、基于来源带引用问答,生成播客、视频、幻灯片、测验与闪卡并批量下载,自带 agent skill。依赖未公开接口,需登录 Google 账号。
teng-lin/notebooklm-py19.8k
MLX-Audio
CLI在 Apple Silicon Mac 上离线运行的语音工具:命令行把文字合成语音(支持中文与声音克隆)、把录音转写成文字,可为课件和讲解视频配音、整理讲座与访谈录音,数据不出本机。需要 M 系列芯片 Mac 与 Python 3.10+,导出 MP3 需装 ffmpeg,首次运行会下载模型。
Blaizzy/mlx-audio8.1k
whisper-ctranslate2
CLI本地语音转写工具,与 OpenAI Whisper 命令行兼容但更快更省内存,可输出 SRT / VTT 字幕与文本,支持麦克风实时转写,适合整理课堂录音、访谈与会议。需要 Python,首次运行自动下载模型;区分说话人需另装 pyannote.audio 并提供 Hugging Face Token。
Softcatala/whisper-ctranslate21.4k
Podcastfy
CLI开源的 NotebookLM 播客功能替代品,把网页、PDF、图片、YouTube 视频或文字转成两人对话式播客音频,适合老师把讲义、作者把文章做成音频节目。默认需要 Gemini 与 OpenAI API Key,也可用本地模型加免费的 Edge 语音。
souzatharsis/podcastfy6.6k
Piper
CLI本地运行的神经网络语音合成引擎,离线把文字转成语音,支持中文在内的数十种语言音色,适合老师制作听力材料、给文章或课件配旁白。需要 Python,首次使用要先下载对应音色模型;项目目前在招募维护者。
OHF-Voice/piper1-gpl5.9k
Kokoro TTS
CLI基于开源 Kokoro 模型的本地语音合成命令行工具,能把 TXT、EPUB、PDF 按章节批量转成 MP3 或 WAV,支持中文、音色混合和调速,适合老师做听力材料、把讲义转成有声版。需要 Python 3.11–3.12,并先下载两个模型文件。
nazdridoy/kokoro-tts1.9k