当前位置: 首页 > news >正文

【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&#xff1a…...

若依框架登录鉴权详解(动态路由)

若依框架登录鉴权:1.获取token(过期在响应拦截器中实现),2.基于RBAC模型获取用户、角色和权限信息(在路由前置守卫),3.根据用户权限动态生成(从字符串->组件,根据permission添加动…...

孤儿进程、僵尸进程、守护进程(精灵进程)

目录 一、孤儿进程 二、僵尸进程 三、守护进程&#xff08;精灵进程&#xff09; 一、孤儿进程 定义&#xff1a;孤儿进程是指那些其父进程已经结束&#xff0c;但它们依然在运行的进程 创建一个孤儿进程&#xff1a; #include <stdio.h> #include <stdlib.h> #in…...

Centos9 网卡配置文件

1、Centos stream 9 网络介结 Centos以前版本&#xff0c;NetworkManage以ifcfg格式存储网络配置文件在/etc/sysconfig/networkscripts/目录中。但是&#xff0c;Centos steam 9现已弃用ifcfg格式&#xff0c;默认情况下&#xff0c;NetworkManage不再创建此格式的新配置文件。…...

ios免签H5

1、windows下载mobileconfig文件制作工具&#xff0c;可在csdn搜索iPhone_Mobileconfig_Tool下载安装&#xff1b;IOS 从APP Store 下载Apple Configurator 2 2、用申请的域名SSL证书给mobieconfig文件签名&#xff0c;最好下载Apache证书&#xff0c;里面包含 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 检测说法错误的是&#xff1f; A、堆系统互为代理进行 MAD 检测时&#xff0c;两个堆系统可以使用相同的D omain ID B、MAD 检测的方式分为直连检测、代理检测 C、MAD 代理检测要求所有堆叠…...

vue中oninput和@input区别

使用oninput绑定&#xff0c;此方法会导致中文输入法情况下&#xff0c;v-model和value不一致&#xff0c;原因是在中文输入法情况下vue中的v-model会自动return&#xff0c;v-mode绑定的值不变&#xff0c;value绑定的值可变。 :οninput"valuevalue.replace(/\D/g,)&qu…...

分布式锁(Redis的setnx、Redisson)

一、使用Redis的setnx实现分布式锁 1、使用Redis的setnx实现分布式锁出现的问题 &#xff08;1&#xff09; 宕机时的锁释放问题 在分布式系统中&#xff0c;如果一个节点获取了锁&#xff0c;但在执行任务过程中发生故障&#xff0c;没有释放锁&#xff0c;其他节点可能会一…...

从0开始深度学习(4)——线性回归概念

1 线性回归 回归&#xff08;regression&#xff09;指能为一个或多个自变量与因变量之间的关系进行建模。 1.1 线性模型 线性假设是指目标可以表示为特征的加权和&#xff0c;以房价和面积、房龄为例&#xff0c;可以有下面的式子&#xff1a; w称为权重&#xff08;weigh…...

C语言中的预处理指令中的其中一对——#ifdef和#ifndef

目录 开头1.什么是#ifdef和#ifndef?2.#ifdef和#ifndef的实际应用判断ABCD这个宏是否被定义过判断HELLO这个宏是否没被定义过防止头文件重复定义 下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们要学一下关于C语言中的预处理指令中的其中一对…...

交换机自动化备份配置(H3C_无人值守)

介绍&#xff1a; 在日常运维过程中&#xff0c;需要定时备份设备的配置&#xff0c;在设备数量过于庞大的情况下&#xff0c;对我们的运维工作会造成极大地不便&#xff0c;通过python自动化能够完美解决人工手动保存设备配置的问题。而且自动化运维在未来也一定是大势所趋&a…...

缓存预热有哪些方案?

一道经典面试题&#xff1a;缓存预热有哪些方案&#xff1f; 在系统业务高峰期到来之前&#xff0c;我们提前将一些热点数据加载到缓存中&#xff0c;进而提高系统的响应速度&#xff0c;这就是所谓的缓存预热。 那么怎么实现缓存预热呢&#xff1f; 一般来说&#xff0c;我…...

「iOS学习」——Masonry学习

iOS学习 前言Masonry的属性Masonry的使用基础APIAuto Boxing修饰语倍数中心点设置边距优先级使用 总结 前言 暑假我们学习了使用CocoaPods引入第三方库&#xff0c;实现使用SVG图片。而Masonry作为一个轻量级的布局架构&#xff0c;在使用中可以节省很多时间。故进行简单学习。…...

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署GitLab服务器

828华为云征文&#xff5c;华为云Flexus云服务器X实例之openEuler系统下部署Gitlab服务器 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、GitLab介绍2.1 GitLab简介2.2 GitLab主要特点 三、本次…...

51单片机的无线病床呼叫系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温湿度传感器模块矩阵按键时钟模块等模块构成。适用于病床呼叫系统、16床位呼叫等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间、温湿度信息、呼叫床位等信息&#xff1b; 2、DHT11采集病房温湿度信息&…...

计算机毕业设计 | SpringBoot+vue 游戏商城 steam网站管理系统(附源码)

1&#xff0c;项目背景 国家大力推进信息化建设的大背景下&#xff0c;城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区&#xff0c;商业和服务业也比较发达&#xff0c;公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息…...

【CH395的简单示例代码】

提供一个基于CH395的简单示例代码&#xff0c;这里将展示如何初始化CH395&#xff0c;并发送一个简单的HTTP请求。请注意&#xff0c;实际使用时还需要根据具体的硬件平台和开发环境调整代码。 假设我们使用的是一个具有SPI接口的微控制器&#xff0c;并且已经将CH395连接到该…...

AI模型:追求全能还是专精?

目录 引言 一、全能型AI模型的诱惑 1.1 通用智能的愿景 1.2 资源整合的优势 1.3 应对未知挑战的能力 1.4 挑战与不足 二、专精型AI模型的魅力 2.1 深度与精度的提升 2.2 成本控制与效率优化 2.3 易于监管与解释性增强 2.4 挑战与不足 三、全能型与专精型AI的全面评…...

ffmpeg音视频开发从入门到精通——ffmpeg 视频数据抽取

文章目录 FFmpeg视频处理工具使用总结环境配置主函数与参数处理打开输入文件获取流信息分配输出文件上下文猜测输出文件格式创建视频流并设置参数打开输出文件并写入头信息读取、转换并写入帧数据写入尾信息并释放资源运行程序注意事项源代码 FFmpeg视频处理工具使用总结 环境…...