python语音分割_用7行Python代码构建自己的有声读物

2981f87138817cfab6cbbba33b713ef0.gif点击关注我哦2981f87138817cfab6cbbba33b713ef0.giffe2694b9fec7dc1130587458a82cfcb2.png

欢迎关注 “小白玩转Python”,发现更多 “有趣”

有声读物是我们可以通过音频听取一本书或者其他作品的内容,是现下一种很受欢迎的阅读方式。类似的APP有:喜马拉雅、得到和樊登读书等。

但是如果你有一本pdf格式的书籍,那么你不需要借助上述app,也可以实现自己的有声读物哦~只需要跟随小编学习如何用7行代码实现自己的有声读物。

一、基本实现

Python中有大量不同用途的库,在本文中,我们只需要用到两个库(pyttsx3,PyPDF2)来构建我们的有声读物。

可以通过pip来安装这两个库,

pip install PyPDF2pip install pyttsx3

1. 读取PDF文件

 PyPDF2是Python中专门用来处理pdf文件的库,它允许在内存中对pdf进行操作。PyPDF2的主要功能如下所示:

· 提取文件信息,如题目、作者等· 按页分割文件· 按页合并文件· 裁剪页· 将多个页面合并为一个页面· 加密和解密pdf文件

通过这个库,我们将 pdf 文件一页一页地拆分,读取每一页上的文本,并将文本发送到下一步。

import PyPDF2pdfReader = PyPDF2.PdfFileReader(open('file.pdf', 'rb'))

2. 初始化扬声器

Python的pyttsx3库能够实现脱机将文本转换到语音。将上一步中识别到的文本传递给语音文本转换器。

import pyttsx3speaker = pyttsx3.init()

3. 播放有声读物

使用 PyPDF2实现从 pdf 文件中逐页提取文本。通过读取文本并将其输入到 pyttsx3的扬声器引擎,循环遍历每一页,它会大声朗读 pdf 页面上的文本,最后停止pyttsx3的扬声器引擎。

for page_num in range(pdfReader.numPages):    text =  pdfReader.getPage(page_num).extractText()    speaker.say(text)    speaker.runAndWait()speaker.stop()

上述步骤的所有代码如下所示:

import pyttsx3, PyPDF2pdfReader = PyPDF2.PdfFileReader(open('file.pdf', 'rb'))speaker = pyttsx3.init()for page_num in range(pdfReader.numPages):    text =  pdfReader.getPage(page_num).extractText()    speaker.say(text)    speaker.runAndWait()speaker.stop()

二、改变音色、语速和音量

我们可以调整有声读物的速度和音量,当然也可以改变它的音色(例如男声改为女声)。

1. 速度

初始化 pyttsx3库,并使用 getProperty (“ rate”)获得当前的通话速率。使用 setProperty (‘ rate’ ,x)更改说话的频率,其中 x = 100表示正常速度。

# Initialize the speakerspeaker = pyttsx3.init()rate = speaker.getProperty('rate')   print(rate)speaker.setProperty('rate', 125)

2. 音色

初始化 pyttsx3库,并使用 getProperty (“ voice”)获取说话者的当前性别。使用 setProperty (“ voice” ,voice [ x ])改变说话者的性别。这里 x = 0表示男性,x = 1表示女性。

voices = speaker.getProperty('voices')print(voices)#changing index, changes voices, 0 for malespeaker.setProperty('voice', voices[0].id)#changing index, changes voices, 1 for femalespeaker.setProperty('voice', voices[1].id)

3. 音量

初始化 pyttsx3库,并使用 getProperty (“ volume”)获取当前音量。使用 setProperty (‘ volume’ ,x)更改扬声器的音量。音量范围是从0到1,其中0是静音,1是最大音量。

volume = engine.getProperty('volume')print(volume)engine.setProperty('volume',1.0)

4.将声音保存到音频文件:

使用下面的方法就可以将音频输出(audiobook)保存到 mp3文件中。

engine.save_to_file(text, 'audio.mp3')engine.runAndWait()

三、结论:

在本文中,我们介绍了一个基本有声读物的实现,它可以使用几行 python 代码读取整个 pdf 文档并朗读出来。为了获得更好的音频效果,还可以改变音色、调整速率和音量。

·  END  ·

HAPPY LIFE

95477d2a98f5f2cd04e53e4785f825e0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stata生成脉冲响应图怎么导出_Stata:面板VAR模型(pvar2命令)

🌈2021年寒假Stata研讨班:高级计量经济学及Stata应用研讨班👉2021空间计量研讨班:空间计量及Geoda、Stata、ArcGis、Matlab应用PVAR这个程序最初是由Inessa Love编写的。它允许用户估计面板向量自回归和产生方差分解和脉冲响应函数…

一台电脑同时启动多个java_如何在一台同时登录多个微信?

点击上方蓝字关注我相信大家对手机上的微信双开并不陌生,很多人由于工作需要,需要多开一个甚至多个微信。对于安卓手机来说,双开微信并不是什么难事。现在大部分国产安卓手机都自带微信双开功能(一般在设置里面搜索“分身”或者“双开”就能找…

利用Python进行数据分析(1) 简单介绍

一、处理数据的基本内容 数据分析 是指对数据进行控制、处理、整理、分析的过程。 在这里,“数据”是指结构化的数据,例如:记录、多维数组、Excel 里的数据、关系型数据库中的数据、数据表等。 二、说说 Python 这门语言 Python 是现在最受…

grep, egrep, fgrep笔记

grep, egrep, fgrep grep: 根据模式搜索文本,并将符合模式的文本行显示出来。Pattern: 文本字符和正则表达式的元字符组合而成匹配条件grep [options] PATTERN [FILE...] -i:不区分大小写 --color -v: 显示没有被模式匹配到的行 -o&#…

ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...

ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 原文:ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区1 学习资源用户在学习和应用过程中,可以参考的资源如下:1. ArcGIS资…

amd sata controller下载_AMD发布全新锐龙芯片组驱动:告别卡死、报错

AMD今天发布了全新的锐龙平台芯片组驱动,版本号2.04.04.111,从界面到功能都全面升级,并修复了此前存在的多个严重Bug。新驱动重新设计了安装界面,借鉴了Radeon Adrenalin 2020肾上腺素显卡驱动的诸多元素,更加时尚美观…

mysql数据库基础的简单操作指南

最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益。mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据库。比mssql最大的优势在于开源,免费。希望与大…

kill 进程_结束进程,查看后台进程

有一些进程想要结束怎么办呢?进程的优先是怎样的呢?如何查看后台正在运行的进程呢?下面我就来讲讲给进程发送信号(kill -l列出所有支持的信号)[rootqianfeng ~]# kill -l 编号 信号名1) SIGHUP 重新加载配置2) SIGINT 键盘中断CtrlC3) SIGQUIT 键盘退出…

软碟通

转载于:https://www.cnblogs.com/jcfxl/p/5739741.html

controller调用controller的方法_SpringCloud(5):Feign整合Ribbon和Hystrix来进行远程调用与服务熔断...

Feign前面我们虽然使用了Ribbon和Hystrix进行了负载均衡和服务熔断,但是我们的消费方代码中由于要调用提供方的服务,比如:String user this.restTemplate.getForObject("http://service-provider/user/" id, String.class);使用了…

vba excel 退出编辑状态_VBA小常识(15)—Application对象

VBA小常识(15)—Application对象学习自杨洋老师《全民一起学VBA》Application是位于最顶端的对象,代表excel程序本身,所有对象都属于它。1. application.cells当前处于激活状态的工作表,即“活动工作表”的单元格。此时…

c++ stack 遍历_划重点啦!带你解读图的两种遍历方式

01知识框架02图的遍历1深度优先遍历基本思想:首先访问图中起始顶点v,然后由v出发,访问与v邻接且未被访问的顶点再访问与v相邻且未被访问的顶点 w1...重复上述过程。当不能再继续向下访问时,依次退回到最近被的问的顶点&#xff0c…

for循环延时_单片机的独立按键学习,实现60秒循环数字的启动暂停与清零

想要学习单片机必须要准备单片机开发板一块,和单片机C语言版本的书籍,我会把每天录制视频的源代码到头条,并且录制相同文章名字视频到西瓜视频,如果你再学习独立按键这一块有不明白的地方可以点开我的头像,进入我的主页…

mysql创建全外连接的视图_关系型数据库 MySQL 表索引和视图详解

原创: JiekeXu JiekeXu之路 一、索引数据库索引通俗的讲就是和书本的目录一样,主要就是为了提高查询数据的效率。由于数据存储在数据库表中,所以索引是创建在数据库表对象上,由表中的一个字段或多个字段生成的键组成,这…

FatMouse's Speed hdu 1160(动态规划,最长上升子序列+记录路径)

http://acm.hdu.edu.cn/showproblem.php?pid1160 题意&#xff1a;现给出老鼠的体重与速度&#xff0c;要求你找出符合要求的最长子序列。 要求是 W[m[1]] < W[m[2]] < ... < W[m[n]]&#xff08;体重&#xff09; && S[m[1]] > S[m[2]] > ... > S[…

设计一个名为complex的类来表示复数_complex类java解决

作者&#xff1a;wzu_cza123出自&#xff1a;CSDN原文&#xff1a;blog.csdn.net/wzu_cza123/article/details/108857953?utm_mediumdistribute.pc_category.none-task-blog-hot-5.nonecase&depth_1-utm_sourcedistribute.pc_category.none-task-blog-hot-5.nonecase&…

小程序onload_微信小程序开发入门之共享账本(十四)

微信小程序开发入门之共享账本(十四)(备注&#xff1a;微信小程序的wxml文件相当于HTML文件&#xff0c;wxss文件相当于CSS文件&#xff0c;js文件就是JavaScript文件&#xff0c;数据库为NoSQL数据库&#xff0c;数据库脚本语言也同NoSQL&#xff0c;因为是运行在微信内&#…

POJ 3342 树形DP+Hash

这是很久很久以前做的一道题&#xff0c;可惜当时WA了一页以后放弃了。 今天我又重新捡了起来。&#xff08;哈哈1A了&#xff09; 题意&#xff1a; 没有上司的舞会判重 思路&#xff1a; hash一下树形DP 题目中给的人名hash到数字&#xff0c;再进行运算。 树形DP f[x…

3d人脸识别算法opencv_热招职位算法类

1.资深算法工程师leader-AI平台地点&#xff1a;深圳工作职责1、推进机器学习及计算机视觉领域的核心算法&#xff1b;2、构建机器学习及计算机视觉领域的关键应用&#xff1b;3、将算法于实际应用场景相结合&#xff0c;构建算法和应用的正反馈机制。任职资格1、较强的学术背景…

python vtk_VTK在python环境下的安装和调用

vtk,很好玩的一个可视化工具&#xff0c;有python接口。 一、安装&#xff1a; 1、平台&#xff1a;window7, python2.7 2、下载vtk: vtkpython-7.1.1-Windows-64bit.exe (http://www.vtk.org/files/release/7.1/vtkpython-7.1.1-Windows-64bit.exe 或 http://download.csdn.ne…