· 3 min read
免费使用微软文本转语音(TTS)服务
系统自带的文字转语音(TTS)不堪入耳,听了几分钟,耳朵严重不适。上传到微信读书可以使用微信读书的AI语音,但是考虑到平台限制等诸多因素,还是倾向于使用微软的TTS -- 最自然流畅的文本转语音,效果更佳。但是微软TTS属于付费服务,这里推荐一款借助edge浏览器接口免费使用的Python程序,开源免费。

系统自带的文字转语音(TTS)不堪入耳,听了几分钟,耳朵严重不适。上传到微信读书可以使用微信读书的AI语音,但是考虑到平台限制等诸多因素,还是倾向于使用微软的TTS,效果更佳。但是微软TTS属于付费服务,这里推荐一款借助edge浏览器接口免费使用的Python程序,开源免费。
下载安装
如果是简单使用,可以只安装运行程序
### 先安装pipx,以mac为例
brew install pipx
### 然后安装edge-tts
pipx install edge-tts或者使用rye安装edge-tts
rye install edge-tts
简单语句转换
直接命令行输入文本进行转语音,--voice参数必须选择中文,不然无法输出中文语音。
edge-tts --text "很可悲的是,我们今天社会上大多数人其实很少真正理解获得历史真实的价值与作用。因为,我们的历史教育几乎从来不教学生发现、尊重历史真实的方法和意义。" --write-media hello.mp3 --voice zh-cn-xiaoxiaoneural
可使用edge-tts --list-voices命令查看可选的语音包。
name: zh-cn-xiaoxiaoneural
gender: female
name: zh-cn-xiaoyineural
gender: female
name: zh-cn-yunjianneural
gender: male
name: zh-cn-yunxineural
gender: male
name: zh-cn-yunxianeural
gender: male
name: zh-cn-yunyangneural
gender: male
name: zh-cn-liaoning-xiaobeineural
gender: female
name: zh-cn-shaanxi-xiaonineural
gender: female
name: zh-hk-hiugaaineural
gender: female
name: zh-hk-hiumaanneural
gender: female
name: zh-hk-wanlungneural
gender: male
name: zh-tw-hsiaochenneural
gender: female
name: zh-tw-hsiaoyuneural
gender: female
name: zh-tw-yunjheneural
gender: male电子书(批量文本)转语音
首先添加Python依赖
pip install edge-tts
或者使用rye添加依赖edge-tts
rye add edge-tts
使用python进行逐行读取转语音
from ebooklib import epub
import ebooklib
import asyncio
import edge_tts
input_file = './book.txt'
voice = "zh-cn-xiaoxiaoneural"
output_file = "book.mp3"
async def _main() -> none:
with open(input_file) as f:
for text in f.readlines():
await asyncio.sleep(2) # 等待2秒,防止触发接口限频
communicate = edge_tts.communicate(text, voice)
with open(output_file, "ab") as file:
async for chunk in communicate.stream():
if chunk["type"] == "audio":
file.write(chunk["data"])
elif chunk["type"] == "wordboundary":
print(f"wordboundary: {chunk}") # 忽略
if __name__ == "__main__":
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(_main())
finally:
loop.close()


