用Python将给定的文本转换成语音并播放,首先要导入以下库。

import os

from pygame import mixer

import pyttsx3

之后,分两步进行文本转语音操作:

1.将文本生成音频文件

参数input_text是需要朗读的字符串,返回值output_path是生成的语音文件。

def m_generatetts(input_text): # 输出input_text,生成相应的语音文件

# 获取输入的文本内容

# input_text = text_entry.get("0.0", "end-1c")

# 初始化 TTS 引擎

engine = pyttsx3.init()

global cansaveornot

try:

# 设置语速、音量等参数(根据需求自行调整)

engine.setProperty('rate', 150) # 默认值为 200

engine.setProperty('volume', 0.8) # 默认值为 1.0

if not os.path.exists('./tmp/'): # 检测文件夹是否存在,如果不存在则创建

os.makedirs('./tmp/')

# print("文件夹已检查并创建")

output_path = './tmp/outputtts.wav' # output_path是临时生成的TTS语音文件

if os.path.exists(output_path): # 如果检测到已经存在该文件,则先退出进程,然后删除掉该文件

mixer.quit() # 退出语音进程

os.remove(output_path) # 删除掉语音文件

# print(f"文件 {output_path} 删除成功!")

# 将文本转换为语音并保存到指定路径

engine.save_to_file(input_text, output_path) # 保存语音文件

engine.runAndWait()

# print("已保存为 %s" % output_path)

cansaveornot = 'yes' # 生成的文件保存成功才允许导出操作

return output_path

except Exception as e:

print("发生错误:", str(e))

2.播放音频文件

参数filepath是第一步生成出来的wav音频文件地址。

def m_playaudio(filepath): # filepath是WAV格式的语音文件地址,播放该文件

mixer.init()

size = 0.7

mixer.music.set_volume(size)

mixer.music.load(filepath)

mixer.music.play()

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: