python如何删除excel中不满足要求的工作簿(excel怎么删除工作表里不需要的)
764
2022-05-30
1. 转语音工具
微信读书有一个功能,可以将书里的文字转换为音频,而且声音优化的不错,比传统的机械朗读听起来舒服很多。
记得之前看到过Python有一个工具包,可以将文字转换为语音,支持英文和中文,而且可以调节语速语调、导出mp3等。
去Github查了下,这个库叫:pyttsx3
简单来说,pyttsx3可以文字转语音,而且是离线工作的,这一点就很实用。
安装比较容易,直接在命令行用pip安装:
pip install pyttsx3
1
我准备动手试试,将PDF书籍转成音频。
我们任选一本pdf电子书。
2. PDF转文本
既然是把PDF转化成语音,肯定是需要先读取PDF中的文字,再利用pyttsx3转语音。
Python中操作PDF的工具库主要是PyPDF2,但发现编码实在有点繁琐,我就换了另一个库pdfplumber,与PyPDF2语法类似,用起来还算流畅。
pdfplumber可以处理PDF包括文本、表格、格式在内的各种信息,小而强大。
# 读取PDF文档 pdf = pdfplumber.open("价值.pdf") # 获取页数 print("总页数:",len(pdf.pages)) print("-----------------------------------------") # 读取第4页 first_page = pdf.pages[3] print("本页:",first_page.page_number+1) print("-----------------------------------------") # 导出第4页文本 text = first_page.extract_text() print(text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
输出:
上面的代码做了几件事情: 「读取PDF文档、读取页数、读取第4页、输出第4页文本」
3. 文本转语音
接下来开始将第4页的文本转化为音频。
import pyttsx3 # 初始化来获取语音引擎 engine = pyttsx3.init() # 去掉文本中的换行符 text = text.replace('\n','') # 朗读文本 engine.say(text) engine.runAndWait()
1
2
3
4
5
6
7
8
9
10
11
上面代码使用pyttsx3将文本转化为音频,然后朗读出来。我是在jupyter notebook上做实验的,代码执行后,电脑会直接朗读。
也可以将生成的音频保存为mp3格式。
# 保存音频到本地,格式为mp3 engine.save_to_file(text, 'test.mp3') engine.runAndWait()
1
2
3
当然你还可以调整声音的类型、速度、大小。
# 调整人声类型 voices = engine.getProperty('voices') engine.setProperty('voice', voices[0].id) # 调整语速,范围一般在0~500之间 rate = engine.getProperty('rate') engine.setProperty('rate', 200) # 调整声量,范围在0~1之间 volume = engine.getProperty('volume') engine.setProperty('volume',0.8)
1
2
3
4
5
6
7
8
9
10
11
整体还是比较流畅的,虽然不如微信读书语音听着那般舒服,但做做小工具还是不错的。
4. 文本转语音
从微信下载下来的语音是 mp3 格式的,想调用百度语音 api,发现不支持 mp3,支持 wav。
准备:
需要安装 pydub 库,直接pip install pydub就好了。
还需要安装 ffmpeg.exe 文件,然后再配置一下就好了,请看:
ffmpeg.exe 的安装及配置,与常见问题
原理:
读取 mp3 音频的波形数据,然后再写入 wav 文件。
from pydub import AudioSegment import wave # 读取mp3的波形数据 sound = AudioSegment.from_file("666.mp3", format = 'MP3') # 将读取的波形数据转化为wav f = wave.open("777.wav", 'wb') f.setnchannels(1) # 频道数 f.setsampwidth(2) # 量化位数 f.setframerate(16000) # 取样频率 f.setnframes(len(sound._data)) # 取样点数,波形数据的长度 f.writeframes(sound._data) # 写入波形数据 f.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
运行效果图:
原 mp3 只有 2k 左右,转化后 31.5k,听着效果跟原音频没有差别,保真度很高!
Python 语音通话
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。