在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文件,这个时候我们就将识别到的文件内容转成语音了,希望通过我的文章可以让大家更快掌握对于文字转语音。
908

被折叠的 条评论
为什么被折叠?



