【pyhton】python如何实现将word等文档中的文字转换成语音

✨✨ 欢迎大家来到景天科技苑✨✨
🎈🎈 养成好习惯,先赞后看哦~🎈🎈
🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。所属的专栏:python综合应用,基础语法到高阶实战教学
景天的主页:景天科技苑

文章目录
- Python中文字转语音
- 步骤 1: 安装必要的库
- 步骤 2: 读取Word文档
- 步骤 3: 使用pyttsx3库将文本转换为音频
- pyttsx3基本用法
- 初始化引擎
- 文本转语音
- 更改语音属性
- pyttsx3高级用法
- 保存语音到文件
- 实时监听和修改语音属性
- 支持多语言
- 错误处理
- 实际案例
- 案例1:朗读word文件,并将语音保存到本地
- 案例2:制作语音提示脚本
- 扩展功能
- 结合GUI开发
- 结合自然语言处理
- 结合语音识别
- 总结
Python中文字转语音
在Python中实现文字转语音(Text-to-Speech, TTS)功能,能够广泛应用于多种场景,如语音助手、有声读物、无障碍阅读等。本文将结合具体案例,详细介绍如何在Python中实现文字转语音功能,包括不同的库和方法,以及它们的应用场景和优缺点。
将Word文档转换成音频文件并不是Python直接支持的标准功能,因为Word文档主要包含文本、格式和可能的图片,而音频文件则包含声音数据。但是,你可以通过几个步骤来间接实现这个功能,即首先读取Word文档中的文本,然后使用文本到语音(Text-To-Speech, TTS)技术将文本转换为音频。
这里有一个基本的步骤说明,以及使用Python和一些外部库来实现它的方法:
步骤 1: 安装必要的库
在Python中,实现文字转语音功能通常需要安装一些外部库。
你需要安装python-docx来读取Word文档,以及一个TTS库,如gTTS(使用Google的TTS API)或pyttsx3(一个跨平台的TTS引擎)。
- python-docx:用来读取Word文档,并转换成文字。
- pyttsx3:这是一个跨平台的Python库,用于将文本转换为语音。它支持多种语音合成引擎,如Microsoft SAPI 5、Google、Pico TTS等。pyttsx3的优点是简单易用,但它不直接支持暂停、继续和停止功能。
pip install python-docx pyttsx3
步骤 2: 读取Word文档
使用python-docx库来读取Word文档中的文本。
from docx import Documentdef read_word_doc(file_path):doc = Document(file_path)full_text = []for para in doc.paragraphs:full_text.append(para.text)return '\n'.join(full_text)# 使用示例
text = read_word_doc('测试.docx')
print(text)
步骤 3: 使用pyttsx3库将文本转换为音频
pyttsx3是一个强大的文本到语音(Text-to-Speech, TTS)转换库,它允许开发者将文本转换为语音,且支持离线工作,兼容Python 2和Python 3。本文将详细介绍pyttsx3的安装、基本用法、高级功能,并通过实际案例展示其在实际项目中的应用。
pyttsx3基本用法
初始化引擎
在使用pyttsx3之前,首先需要初始化TTS引擎:
import pyttsx3
engine = pyttsx3.init()
文本转语音
通过say方法添加要转换的文本,并通过runAndWait方法执行转换并等待完成:
engine.say("你好,世界!")
engine.runAndWait()
更改语音属性
pyttsx3允许用户配置语音的多种属性,包括语速、音量和语音类型。
- 设置语速:通过
setProperty方法设置语速,单位是词/分钟(words per minute, wpm)。 - 设置音量:音量范围是0.0到1.0,表示当前系统音量的比例。
- 设置语音类型:不同的操作系统可能有不同的语音包可供选择。通过
getProperty('voices')方法获取当前可用的语音列表,然后选择一个语音进行设置。
# 设置语速
engine.setProperty('rate', 150)# 设置音量
engine.setProperty('volume', 0.7)# 获取语音列表并设置语音
voices = engine.getProperty('voices')
for voice in voices:print(f"语音 ID: {voice.id}")print(f"语音名称: {voice.name}")
# 假设我们选择第一个语音
engine.setProperty('voice', voices[0].id)engine.say("这是更改后的语音、语速和音量。")
engine.runAndWait()
pyttsx3高级用法
保存语音到文件
pyttsx3不仅可以将文本转换为语音并实时播放,还可以将语音保存到文件中。通过save_to_file方法实现:
text = '你好,我是景天'
filename = './output.wav'
engine.save_to_file(text, filename)
engine.runAndWait()
实时监听和修改语音属性
虽然pyttsx3没有直接提供实时监听语音输出的API,但可以在朗读过程中根据条件动态调整语速、音量等属性。然而,需要注意的是,这种修改不会立即应用于当前正在播放的语音,而是会影响后续的语音输出。
支持多语言
pyttsx3支持多语言,但这取决于安装的语音包和操作系统的支持。在不同的操作系统上,可以通过选择不同的语音包来实现多语言支持。
错误处理
在实际应用中,应该添加错误处理机制来应对可能的异常情况,比如无法加载语音包、语音属性设置失败等。
实际案例
案例1:朗读word文件,并将语音保存到本地
假设我们有一个文本文件测试.docx,我们想要使用pyttsx3来朗读这个文件的内容。以下是实现步骤:
#将word文档转换为文字
from docx import Documentdef read_word_doc(file_path):doc = Document(file_path)full_text = []for para in doc.paragraphs:full_text.append(para.text)return '\n'.join(full_text)# 使用示例
text = read_word_doc('测试.docx')
print(text)#文字转语音
import pyttsx3def text_to_speech_pyttsx3(text):# 在使用pyttsx3之前,首先需要初始化TTS引擎:engine = pyttsx3.init()#打印语速,单位是词/分钟.默认是200rate = engine.getProperty("rate")print("语速",rate)#设置语速engine.setProperty('rate',190)#设置音量,音量范围是0.0到1.0,表示当前系统音量的比例。默认是1print("当前音量",engine.getProperty('volume'))# engine.setProperty('volume', 0.7)# 获取语音列表并设置语音#不同的操作系统可能有不同的语音包可供选择。通过getProperty('voices')方法获取当前可用的语音列表,然后选择一个语音进行设置。voices = engine.getProperty('voices')for voice in voices:print(f"语音 ID: {voice.id}")print(f"语音名称: {voice.name}")#通过say方法添加要转换的文本,engine.say(text)#将语音保存为MP3文件engine.save_to_file(text,"test.mp3")# 并通过runAndWait方法执行转换并等待完成:engine.runAndWait()# 使用示例
text_to_speech_pyttsx3(text)
我们的操作系统支持两种语音类型

看下生成的mp3文件

能正常播放

案例2:制作语音提示脚本
在自动化脚本或系统管理中,经常需要通过语音来提供用户提示。使用pyttsx3可以轻松实现这一功能。例如,一个自动备份脚本在完成备份后,可以通过语音通知用户:
import pyttsx3def notify_user(message):engine = pyttsx3.init()engine.say(message)engine.runAndWait()# 假设在某个自动备份函数的最后调用
notify_user("备份已完成,请放心使用。")
扩展功能
结合GUI开发
pyttsx3可以与其他GUI开发库(如Tkinter或PyQt)结合使用,开发具有图形界面的TTS应用。用户可以通过图形界面选择文本、设置语音属性并启动朗读过程。
结合自然语言处理
pyttsx3也可以与自然语言处理库(如NLTK或spaCy)结合使用,实现更复杂的文本处理和分析。例如,可以对文本进行分词、词性标注、命名实体识别等处理,然后将处理后的文本转换为语音输出。
结合语音识别
通过结合语音识别库,可以实现完整的语音交互系统。用户可以通过语音输入指令,系统解析指令并执行相应操作,同时通过pyttsx3将结果转换为语音输出反馈给用户。
总结
pyttsx3是一个功能强大且易于使用的文本到语音转换库,适用于各种需要语音交互的场合。通过本文的介绍,相信读者已经对pyttsx3有了更深入的了解,并能够在实际项目中灵活运用。无论是为应用程序添加语音交互功能,还是开发语音助手、自动化脚本等,pyttsx3都是一个非常实用的工具。希望本文能够帮助读者快速上手pyttsx3,并在自己的项目中实现语音功能。
相关文章:
【pyhton】python如何实现将word等文档中的文字转换成语音
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
Claude Enterprise推出计划
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
【前端】CSS控制style样式失效
在CSS中,可以通过几种方式控制或禁用特定的style样式。 使用all: unset来重置所有可继承的属性,并清除所有的样式: .element {all: unset;} 使用inherit值来使属性获取其父元素的值: .element {color: inherit;font-size: inh…...
How can I load the openai api configuration through js in html?
题意:怎样在HTML中通过JavaScript加载OpenAI API配置 问题背景: I am trying to send a request through js in my html so that openai analyzes it and sends a response, but if in the js I put the following: 我正在尝试通过HTML中的JavaScript发…...
Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result=22, HTTP code = 404
Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result22, HTTP code 404 在学习共享库时使用通过git拉取jenkinsfile时,报错在排查gitlab服务状态,网络通讯,防火墙规则以及Jenkins凭据均可以正常使用,最后发现的…...
【与C++的邂逅】--- string容器使用
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 本篇博客我们将来了解string容器本身以及接口的使用。 string是串,本质是一个字符数组,可以对其进行增删查改。 &am…...
1-18 平滑处理——高斯滤波 opencv树莓派4B 入门系列笔记
目录 一、提前准备 二、代码详解 cv2.GaussianBlur函数用于对图像进行高斯滤波。高斯滤波是一种平滑图像的技术,用于减少噪声和细节。函数的三个参数如下: 三、运行结果 四、完整工程贴出 一、提前准备 1、树莓派4B 及 64位系统 2、提前安装opencv库…...
小爱打工,你躺平!让「微信AI小助理」接管你的文件处理,一个字:爽!
前两天,搞了个微信 AI 小助理-小爱(AI),爸妈玩的不亦乐乎。 零风险!零费用!我把AI接入微信群,爸妈玩嗨了,附教程(下) 最近一直在迭代中,挖掘小爱的无限潜力: 链接丢给…...
管理学习(一)马云《赢在中国》创业演讲整理
目录 一、小公司也需要制度二、不要害怕冒险三、创业者要的不是技术,而是胆识四、不要惧怕和大企业竞争五、理念不一样,老板永远是对的六、要真实地为客户创造价值七、跟风险投资谈判,说到要做到八、风险投资,只能帮你不能救你九、…...
Opencv中的直方图(2)计算图像的直方图函数calcHist()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算一组数组的直方图。 函数 cv::calcHist 计算一个或多个数组的直方图。用于递增直方图bin的元组的元素是从相同位置的相应输入数组中获取的。…...
Buzzer:一款针对eBPF的安全检测与模糊测试工具
关于Buzzer Buzzer是一款功能强大的模糊测试工具链,该工具基于Go语言开发,可以帮助广大研究人员简单高效地开发针对eBPF的模糊测试策略。 功能介绍 下面给出的是当前版本的Buzzer整体架构: 元素解析: 1、ControlUnit:…...
若依框架登录鉴权详解(动态路由)
若依框架登录鉴权:1.获取token(过期在响应拦截器中实现),2.基于RBAC模型获取用户、角色和权限信息(在路由前置守卫),3.根据用户权限动态生成(从字符串->组件,根据permission添加动…...
孤儿进程、僵尸进程、守护进程(精灵进程)
目录 一、孤儿进程 二、僵尸进程 三、守护进程(精灵进程) 一、孤儿进程 定义:孤儿进程是指那些其父进程已经结束,但它们依然在运行的进程 创建一个孤儿进程: #include <stdio.h> #include <stdlib.h> #in…...
Centos9 网卡配置文件
1、Centos stream 9 网络介结 Centos以前版本,NetworkManage以ifcfg格式存储网络配置文件在/etc/sysconfig/networkscripts/目录中。但是,Centos steam 9现已弃用ifcfg格式,默认情况下,NetworkManage不再创建此格式的新配置文件。…...
ios免签H5
1、windows下载mobileconfig文件制作工具,可在csdn搜索iPhone_Mobileconfig_Tool下载安装;IOS 从APP Store 下载Apple Configurator 2 2、用申请的域名SSL证书给mobieconfig文件签名,最好下载Apache证书,里面包含 AE86211.crt…...
RedHat9.x-基本操作
本例以RedHat9.3为例 安装ifconfig命令 # dnf -y install net-tools 安装图形化 # dnf -y groupinstall "Server with GUI" 安装tmux # dnf -y install tmux -- screen已弃用 network-scripts 已弃用...
华为 HCIP-Datacom H12-821 题库 (5)
有需要题库的可以看主页置顶 需要题库的加Q裙 V群仅进行学习交流 1.以下关于堆叠 MAD 检测说法错误的是? A、堆系统互为代理进行 MAD 检测时,两个堆系统可以使用相同的D omain ID B、MAD 检测的方式分为直连检测、代理检测 C、MAD 代理检测要求所有堆叠…...
vue中oninput和@input区别
使用oninput绑定,此方法会导致中文输入法情况下,v-model和value不一致,原因是在中文输入法情况下vue中的v-model会自动return,v-mode绑定的值不变,value绑定的值可变。 :οninput"valuevalue.replace(/\D/g,)&qu…...
分布式锁(Redis的setnx、Redisson)
一、使用Redis的setnx实现分布式锁 1、使用Redis的setnx实现分布式锁出现的问题 (1) 宕机时的锁释放问题 在分布式系统中,如果一个节点获取了锁,但在执行任务过程中发生故障,没有释放锁,其他节点可能会一…...
从0开始深度学习(4)——线性回归概念
1 线性回归 回归(regression)指能为一个或多个自变量与因变量之间的关系进行建模。 1.1 线性模型 线性假设是指目标可以表示为特征的加权和,以房价和面积、房龄为例,可以有下面的式子: w称为权重(weigh…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
