【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,并在自己的项目中实现语音功能。

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

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

相关文章

【TomCat】安装部署

首先得进行Java的安装和部署java1.8对应tomcat9 TomCat下载Apache Tomcat - Apache Tomcat 10 Software Downloads

Verilog和Matlab实现RGB888互转YUV444

文章目录 一、色彩空间1.1 RGB色彩空间1.2 CMYK色彩空间1.3 YUV色彩空间 二、色彩空间转换公式2.1 RGB转CMYK2.2 CMYK转RGB2.3 RGB888转YUV4442.4 YUV444转RGB888 三、MATLAB实现RGB888转YUV4443.1 matlab代码3.2 matlab结果 四、Verilog实现RGB888转YUV444 一、色彩空间 色彩空…

【Python】数据可视化之分类图

目录 条形图 箱形图 散点图 分簇散点图 小提琴 分簇小提琴 条形图 条形图是一种直观的图表形式,它通过不同长度的矩形条(即“条形”)来展示数值变量的中心趋势估计值,其中每个矩形的高度直接对应于该组数据的某个中心量度&…

2024 年高教社杯全国大学生数学建模竞赛B题第三问详细解题思路(终版)

示例代码: import numpy as np import pandas as pd# 参数设定 params {m: 8, # 零配件数量n: 2, # 半成品数量p: [0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10, 0.10], # 零配件次品率c: [2, 8, 12, 2, 8, 12, 8, 12], # 购买单价d: [1, 1, 2, 1, 1, 2, 1, 2]…

《python语言程序设计》第8章第12题生物信息:找出基因,生物学家使用字母A C T和G构成字符2串建模一个基因组(上)

草稿一、用单一方法遍历文本 9.1代码 genome_text TTATGTTTTAAGGATGGGGCGTTAGTTdef div_word(word_to_judge):len_num len(word_to_judge)save_word ""if len_num % 3 0:print("This word is valid")if save_word.find("ATG") "ATG&qu…

以太网--TCP/IP协议(二)

上文中讲述了IP协议,本文主要来讲一下TCP协议。 TCP协议 (1)端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中,就是端到端通信。 (2)传输层端口 公认端口&#xff0…

统计学习方法与实战——统计学习方法之感知机

感知机 感知机三要素分析模型策略损失函数选择 算法原始形式对偶形式 相关问题 例子iris数据集分类实战数据集查看 显示结果sklearn 实战感知机 习题解答习题2.1解题步骤反证法 习题2.2习题2.3凸壳线性可分线性可分证明凸壳不相交证明充分性:凸壳不相交\Rightarrow⇒…

【优化】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

【优化】Nginx 配置页面请求不走缓存 禁用缓存 目录 【优化】Nginx 配置页面请求不走缓存 禁用缓存 对所有请求禁用缓存 对特定location禁用缓存 注意事项 全局禁用缓存 要配置Nginx使其不缓存内容,通常是指禁止浏览器缓存响应的内容,或者是在代理…

Java语言程序设计基础篇_编程练习题**17.21 (十六进制编辑器)

目录 题目:**17.21 (十六进制编辑器) 代码示例 结果展示 题目:**17.21 (十六进制编辑器) 编写一个 GUI 应用程序,让用户在文本域输入一个文件名,然后按回车键,在文本域显示它的十六进制表达形式。用户也可以修改十六…

HarmonyOS 是如何实现一次开发多端部署

一次开发多端部署遇到的几个关键问题 为了实现“一多”的目标,需要解决如下三个基础问题: 问题1:页面如何适配 不同设备间的屏幕尺寸、色彩风格等存在差异,页面如何适配。 问题2:功能如何兼容 不同设备的系统能力…

glsl着色器学习(九)屏幕像素空间和设置颜色

在上一篇文章中,使用的是裁剪空间进行绘制,这篇文章使用屏幕像素空间的坐标进行绘制。 上一篇的顶点着色器大概是这样子的 回归一下顶点着色的主要任务: 通常情况下,顶点着色器会进行一系列的矩阵变换操作,将输入的顶…

【笔记-流程记录】从零开始做一个人形怪兽(建模阶段)

大型 1.第一步还是找素模,打开材质球,吸管点一下,就会出现素模的贴图,一共有四个 比如,点进去第一个,再点漫反射,再点psd就会得到相应的贴图 2.然后我们依然是面片然后插入参考图 如果透视窗口…

KEIL中编译51程序 算法计算异常的疑问

KEIL开发 51 单片机程序 算法处理过程中遇到的问题 ...... by 矜辰所致前言 因为产品的更新换代, 把所有温湿度传感器都换成 SHT40 ,替换以前的 SHT21。在 STM32 系列产品上的替换都正常,但是在一块 51 内核的无线产品上面,数据…

高逼格、有难度、较前沿的商业计划书撰写策略

正在创业的老板们注意啦!在实施创业计划之前,一定要先写一份商业计划书。它不仅是获得投资的关键,更是梳理创业思路、明确发展方向的重要工具。通过撰写商业计划书,你可以更清晰地了解市场需求、竞争状况、产品定位等关键信息&…

腾讯地图SDK Android版开发 10 InfoWindow

腾讯地图SDK Android版开发 10 InfoWindow 前言介绍默认风格自定义样式实现方式交互操作播放信息窗口的动画开启多窗口模式 相关类和接口默认样式MarkerOptions 类Marker 类TencentMap类TencentMap.OnInfoWindowClickListener 接口类 自定义样式TencentMap 类TencentMap.InfoWi…

SealSuite 一站式 IT 管理与办公安全解决方案,助力出海企业夯实数字化底座

数字化办公时代,企业升级 IT 基础设施,已不再是选择题,而是必答题。 数字化办公时代,企业为何要升级 IT 基础设施? 随着时代变化与科技进步,人们的工作方式也发生了巨大变化。如今,远程办公、全…

C#编程语言及.NET 平台快速入门指南

Office Word 不显示 Citavi 插件,如何修复?_citavi安装后word无加载项-CSDN博客 https://blog.csdn.net/Viviane_2022/article/details/128946061?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_ta…

重生奇迹MU老大哥剑士职业宝刀未老

重生奇迹MU中,老大哥剑士职业一直以来备受玩家们的喜爱。这个职业不仅拥有强大的攻击力、防御力和战斗技巧,而且还能够通过使用各种宝刀来增强自身的战斗能力。即便经过了多年的沉淀,老大哥剑士依然是一名宝刀未老的男人,仍然能够…

Java项目: 基于SpringBoot+mybatis+maven学科竞赛管理系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven学科竞赛管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简…