· 3 min read

免费使用微软文本转语音(TTS)服务

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

系统自带的文字转语音(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()

参考

Back to Blog

Related Posts

View All Posts »
使用门罗币XMR进行监控收款(入门篇)

使用门罗币XMR进行监控收款(入门篇)

使用USDT收款相对比较简单,只需监控特定地址在USDT智能合约上的交易记录,只统计向该地址转账的交易并与订单信息进行比对,即可完成收款。然而,门罗币的匿名性导致第三方监控无法获取发送方地址和金额,交易信息只能通过接收方使用私钥进行监控。

Mosh: SSH远程登录的替代者

Mosh: SSH远程登录的替代者

Mosh的连接可在网络断开连接后自动重连,而不会中断会话,Mosh在高延迟和不稳定的网络条件下具有更快的响应速度和更少的延迟,这使得在远程连接中使用命令行工具更加流畅,并且Mosh会根据当前网络状况自适应调整连接参数,这有助于提高连接质量

给Kindle电子书添加生词提示

给Kindle电子书添加生词提示

生词提示是亚马逊Kindle电子阅读器一项特有功能,提供电子书文本中较难的单词释义。本篇介绍如何自己手动制作带有生词提示的电子书。