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

news2025/4/12 23:12:51

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,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 Document

def 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 Document


def 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 pyttsx3


def text_to_speech_pyttsx3(text):
    # 在使用pyttsx3之前,首先需要初始化TTS引擎:
    engine = pyttsx3.init()

    #打印语速,单位是词/分钟.默认是200
    rate = engine.getProperty("rate")
    print("语速",rate)

    #设置语速
    engine.setProperty('rate',190)

    #设置音量,音量范围是0.0到1.0,表示当前系统音量的比例。默认是1
    print("当前音量",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 pyttsx3

def 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.coloradmin.cn/o/2088137.html

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

相关文章

空间计量 | 空间误差模型SEM

在空间OLS回归分析中如果得到LM检验并且判断得到应该使用空间误差SEM模型时,接着本文档介绍空间误差SEM模型。首先空间误差SEM模型的数学模式公式如下: y βk * x u , u λ * Wu (为扰动项),Wu为误差(扰动项)空间…

登山第一梯:使用rviz显示bag包中的点云数据

第一步,连接ros master: roscore ​​​​​第二步,打开rviz(默认的rviz) rosrun rviz rviz ​第三步,查看bag包信息,获取topic信息 rosbag info [bag包路径] 有三个topic,分别时/bp…

SAP B1 三大基本表单标准功能介绍-物料主数据(上)

背景 在 SAP B1 中,科目表、业务伙伴主数据、物料主数据被称为三大基本表单,其中的标准功能是实施项目的基础。本系列文章将逐一介绍三大基本表单各个字段的含义、须填内容、功能等内容。 附上 SAP B1 10.0 的帮助文档:SAP Business One 10…

【测试】bug 相关知识点总结

目录 一、什么是 bug 二、描述 bug 的要素 三、bug 级别 四、bug 的生命周期 一、什么是 bug 在软件开发中,bug 是指软件程序中存在的错误、缺陷或故障。这些问题可能导致软件在运行时出现意外的行为、产生错误的结果、崩溃或无法正常工作。Bug 可以出现在软件…

【机器学习-神经网络】卷积神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

6.824 lab2B raft 记录

Raft 2B Task LOG Implement the leader and follower code to append new log entries 您的第一个目标应该是传递 TestBasicAgree3B()。 首先实现 Start(),然后编写代码 通过 AppendEntries RPC 发送和接收新的日志条…

非整周期截取信号对FFT分析的影响

原文出自微信公众号【小小的电子之路】 自然界中的模拟信号大部分都是无限长的,或者说对计算机而言可以说是无限长的,而计算机只能处理有限长的信号,怎么办呢?以快速傅里叶变换为例,我们通常是截取目标信号中有限长的一…

<Rust>egui学习之小部件(八):如何在窗口中添加滑动条slider部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第八篇博…

虚拟机Linux(Centos7)系统静态IP设置

文章目录 虚拟机Linux系统中通过DHCP获取IP地址的配置和静态IP设置1. 更改网络模式为NAT模式2. 设置虚拟机网络编辑器3. 配置网络文件3.1 修改网络配置文件3.2 添加静态IP、子网掩码和网关3.3 配置DNS 4. 重启网络服务5. 验证IP配置 虚拟机Linux系统中通过DHCP获取IP地址的配置…

LoRAMoE:缓解大模型的世界知识遗忘问题

人工智能咨询培训老师叶梓 转载标明出处 大模型(LLMs)在进行SFT时,通过增加指令数据量来提升其在多个下游任务中的性能或显著改善特定任务的表现。但研究者们发现,这种大规模的数据增加可能会导致模型遗忘其预训练阶段学习到的世…

加密与安全_前后端通过AES-CBC模式安全传输数据

文章目录 Pre概述前端加密是否有意义?环境准备加密方法、MODE和PADDING的选择前端后端应用:从传输到解密的全过程安全性增强动态生成密钥和初始向量1. 前端:动态生成密钥和IV2. 后端:解密动态密钥和IV 结语 Pre 加密与安全_解密A…

TMGM:欧元区通胀放缓将支持9月欧洲中央银行降息

八月份德国通胀率出乎意料的下降超过预期。欧洲中央银行可能会保持其放松的货币政策。美元/欧元矫正性下跌可能在本周结束前继续。 欧洲统计局将在周五公布八月份欧元区消费者价格(调和)指数(HICP)的预估数值,预期结果将支持9月份决策者降息的决定。 因为对经济增…

大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Python 如何进行声音处理(pydub, wave模块)

Python 是一种功能强大的编程语言,它提供了丰富的库和模块用于各种任务的执行,包括声音处理。对于声音处理,pydub 和 wave 模块是最常用的两个库。 一、Python中的声音处理基础知识 在深入探讨具体的模块之前,我们先了解一些声音…

深度学习基础--损失函数

前三章分别介绍了线性回归、浅层神经网络和深度神经网络。这些都属于函数家族,能够实现从输入到输出的映射,其具体的函数取决于模型参数 ϕ \phi ϕ。在训练这些模型时,我们的目标是找到能够为特定任务提供最优输入输出映射的参数。本章将详…

C语言 ——— 文件读取结束的判定

目录 判定文件读取结束的方式 被错误使用的feof函数 判定文件结束的正确使用 判定文件读取结束的方式 判断文本文件是否读取结束: 利用 fgetc 判断返回值是否为 EOF 利用 fgets 判断返回值是否为 NULL 判断二进制文件是否读取结束: 利用 fread 判…

00 Tkinter学习路线

Tkinter学习路线 此Tkinter以更新完毕,几乎涵盖了Tkinter所有知识点 此文章用于快速找到对应的知识点 01 Tkinter介绍 02 Tkinter窗口的管理与设置 03 Tkinter布局方式 04 Tkinter布局组件 05 Tkinter事件 06 Tkinter可变变量 07 Label 组件 08 Button 组件 09 Entr…

大模型技术 | 基于大模型构建本地知识库

前言 随着人工智能技术的发展,大模型已成为智能系统进步的关键力量。 模型以其庞大的数据容量和深度学习能力,为处理复杂任务提供了前所未有的可能性。但在特定应用场景下仍面临挑战,尤其是在需要快速、准确响应的情境中。为了克服这些限制…

.NET Razor类库-热加载 就是运行时编译

1.新建3个项目 1.1 一个.NET Standard2.1项目 IX.Sdk.SvnCICD4NuGet 1.2 一个.NET Razor类库项目 IX.Sdk.SvnCICD4NuGet.RazorWeb 1.3 一个.NET6 Web项目 IX.Sdk.SvnCICD4NuGet.Web 这3个项目的引用关系 Web引用 Razor类库 和 .NET Standard2.1 Razor类库引用.NET Standard2.1…

VBA学习(65):Excel VBA 凭证打印/SQL连接Eexcel文件/Listview控件/CommandButton命令按钮控件

本期内容信息量相当的大,内容涉及很多方面,请耐心阅读,肯定不会让你失望的!建议收藏! Excel中记账凭证的打印,几种思路 Excel表记账的缺点 最新的打印方法:勾选凭证列表,点打印即可…