使用TTS实现文本转语音

#教程

看书久了眼睛累,尤其就电子书,盯着电脑屏幕或kindle 也累。用过喜马拉雅微信读书中的语音功能,一是书库有限,想读的书没有收录,二是会员比较贵,充值后也不能完全下载整本书的语音包。遂产生自己动手将文字转为语音,读给我听,这样轻松些。

本文主要转载自Python + edge-tts:一行代码,让你的文本轻松变成语音

技术条件

1.python环境

电脑安装好python,不会的话参考安装教程

2.edge-tts库

安装 edge-tts 库。

bash 复制代码
pip install edge-tts
  • 尝试一下,生成第一个 TTS 语音吧,默认会在本地生成一个 hello.mp3 的音频文件。
text 复制代码
edge-tts --text "Hello, world!" --write-media hello.mp3

参数介绍

这里使用的是默认的语音模型,你还可以通过 --list-voices 选项来查看可用的语音列表,然后通过 --voice 选项来选择你想要的声音。

text 复制代码
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
​
...
​
edge-tts --voice zh-CN-YunxiNeural --text "你好,我是程序员树先生" --write-media hello_tree.mp3
  • 你还可以通过 --rate 和 --volume 选项来调整语速和音量,-50% 代表降低语速/音量。
text 复制代码
edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_halved.mp3
edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_halved.mp3

实现代码

以上是在 cmd 命令行中执行的指令,我们也可以使用 python 进行读取文件内容转语音,

python 复制代码
import edge_tts
import asyncio
​
TEXT = ""
with open('C:\\Users\\Tree\\Desktop\\text2voicetest.txt', 'rb') as f:
    data = f.read()
    TEXT = data.decode('utf-8')
print(TEXT)
voice = 'zh-CN-YunxiNeural'   #Yunxi 青年 Yunjian 中年   Yunxia  童声  Yunyang  主持人
output = 'C:\\Users\\Tree\\Desktop\\text2voicetest.mp3'  #需要更改自己的桌面路径
rate = '-4%'
volume = '+0%'
​
​
async def my_function():
    tts = edge_tts.Communicate(text=TEXT, voice=voice, rate=rate, volume=volume)
    await tts.save(output)
​
​
if __name__ == '__main__':
    asyncio.run(my_function())

在桌面创建一个 text2voicetest.txt 文件,写上你想写的内容,直接运行上述代码,即可生成相应的 MP3 文件。

使用场景

  • 懒人听书;
  • 为博客文章或者电子书添加语音朗读;
  • 为游戏或者动画添加语音配音,让角色更有个性和表现力;
  • 为智能助理添加语音交互;
  • 学习不同语言的发音,或者听取不同声音的风格和情感。

项目地址

项目地址

相关推荐
蒙娜丽宁7 分钟前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev9 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
好喜欢吃红柚子23 分钟前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python27 分钟前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯37 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
千天夜1 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python
羊小猪~~1 小时前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
放飞自我的Coder1 小时前
【python ROUGE BLEU jiaba.cut NLP常用的指标计算】
python·自然语言处理·bleu·rouge·jieba分词
正义的彬彬侠2 小时前
【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价
python·机器学习·sklearn