python如何将word文档内容转换成语音

在Python中实现文字转语音(Text-to-Speech, TTS)功能,能够广泛应用于多种场景,如语音助手、有声读物、无障碍阅读等,将Word文档转换成音频文件并不是Python直接支持的标准功能,因为Word文档主要包含文本、格式和可能的图片,而音频文件则包含声音数据。但是,你可以通过几个步骤来间接实现这个功能,即首先读取Word文档中的文本,然后使用文本到语音(Text-To-Speech, TTS)技术将文本转换为音频。

一.安装必要的库

1.我们需要安装一些读取文档python-docx以及一个pyttsx3库

pip install python-docx pyttsx3

二.读取word文档的内容

1.使用python-docx库来读取word文档的文本

输出的结果如下:

F:\miniconda3\envs\chatglm3-demo\python.exe F:\pythonProject\word_转语音\测试.py 
浔阳江头夜送客,枫叶荻花秋瑟瑟。 主人下马客在船,举酒欲饮无管弦。 醉不成欢惨将别,别时茫茫江浸月。 忽闻水上琵琶声,主人忘归客不发。 寻声暗问弹者谁,琵琶声停欲语迟。 移船相近邀相见,添酒回灯重开宴。 千呼万唤始出来,犹抱琵琶半遮面。

三.使用pyttsx3库将文本转换成音频

pyttsx3是一个强大的文本到语音(Text-to-Speech, TTS)转换库,它允许开发者将文本转换为语音,且支持离线工作。

pyttsx3基本用法

1.在使用pyttsx3之前,首先需要初始化TTS引擎

import pyttsx3
engine = pyttsx3.init()

2.更改语音属性(pyttsx3允许用户配置语音的多种属性,包括语速、音量和语音类型。)

设置语速
# 设置语速
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('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()

最后我们将识别到word文档内容以及我们转成的语音内容结合到一起,看一下输出效果

# 定义一个函数 red_word,用于读取给定路径的 .docx 文件内容
from docx import Document
import pyttsx3

# 定义一个函数 red_word,用于读取给定路径的 .docx 文件内容
def red_word(file_path):
    # 以二进制读模式打开指定的 .docx 文件
    with open(file_path,'rb') as file:
        # 使用 Document 对象读取文件内容
        doc = Document(file)
        # 初始化一个空列表,用于存储文档中的所有段落文本
        full_text = []
        # 遍历文档中的每一个段落
        for para in doc.paragraphs:
            # 将每个段落的文本内容添加到 full_text 列表中
            full_text.append(para.text)
        # 将所有段落文本用换行符连接成一个字符串并返回
        return '\n'.join(full_text)

def speech_pyttsx3(file_path):
    # 在使用pyttsx3之前,首先需要初始化TTS引擎:
    engine = pyttsx3.init()
    # 设置语速
    engine.setProperty('rate', 150)
    # 设置语速
    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}")

    # 通过say方法添加要转换的文本,
    engine.say(text)

    # 将语音保存为MP3文件
    engine.save_to_file(text, "琵琶行.mp3")
    # 并通过runAndWait方法执行转换并等待完成:
    engine.runAndWait()

# 测试案例
if __name__ == '__main__':
    # 调用 red_word 函数,读取指定路径的 .docx 文件,并将结果存储在 text 变量中
    text = red_word(r'F:\pythonProject\word_转语音\琵琶行.docx')
    # 输出读取到的文本内容
    print(text)
    text_pyttsx3 = speech_pyttsx3(text)

这个时候我们就可以看到生成的后缀为.mp3文件,这个时候我们就将识别到的文件内容转成语音了,希望通过我的文章可以让大家更快掌握对于文字转语音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值