教你用Python制作文本转语音工具 - 3

本文介绍了如何使用Python的Tkinter库和pyttsx3模块创建一个简单的文本转语音应用。首先定义了一个Play函数,获取用户输入的文本,然后使用pyttsx3模块将文本转换为语音并播放。最终通过Tkinter的事件绑定,实现了点击按钮触发语音播放的功能。
摘要由CSDN通过智能技术生成

上一篇文章

上一篇文章:https://blog.csdn.net/pythonlaoyu/article/details/13360493

3. 编写函数

3.1 编写框架

这个函数名称叫“Play”(即“播放”)。框架是:

def play():

	pass  # 什么都不做。因为是框架,所以只能这样
	

那个pass后面要改。现在的代码没有用,没人调用它,它也什么都不做

3.1.1 现在的代码

# 导入模块

import tkinter as tk
from tkinter import ttk

# 创建窗口

win = tk.Tk()  # 创建窗口对象win
win.title('文本转语音')  # 设置标题
win.geometry('300x200')  # 设置默认大小为300×200
win.resizable(False, False)  # 设置宽和高不可改变
win.config(background='white')  # 设置窗口颜色为白色(white)

# 创建提示信息

ttk.Label(win, text='输入文本', background='white').pack()  # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”

# 创建输入框

text = ttk.Entry(win, background='white')  # 创建输入框对象,并且背景色设为白色(white)
text.pack()  # 显示组件

# 创建按钮

button = ttk.Button(win, text='播放')  # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令后面再讲 
button.pack()  # 显示组件

def play():
	
	pass

tk.mainloop()  # 消息循环

3.1.2 代码结果

没什么变化,后面会改造

3.2 获得文本

怎么获得文本?这里用text.get()的方法获得:
注意!把pass去掉!

def play():

	text.get()  # 获得文本
	

这个文本现在没用,但是后面有用

3.2.1 现在的代码

# 导入模块

import tkinter as tk
from tkinter import ttk

# 创建窗口

win = tk.Tk()  # 创建窗口对象win
win.title('文本转语音')  # 设置标题
win.geometry('300x200')  # 设置默认大小为300×200
win.resizable(False, False)  # 设置宽和高不可改变
win.config(background='white')  # 设置窗口颜色为白色(white)

# 创建提示信息

ttk.Label(win, text='输入文本', background='white').pack()  # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”

# 创建输入框

text = ttk.Entry(win, background='white')  # 创建输入框对象,并且背景色设为白色(white)
text.pack()  # 显示组件

# 创建按钮

button = ttk.Button(win, text='播放')  # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令后面再讲 
button.pack()  # 显示组件

def play():
	
	text.get()

tk.mainloop()  # 消息循环

3.2.1 代码结果

还是没有什么变化,最后面有视频(过几天放)!

3.3 播放语音(即转语音)

先插入几行代码:

第3行插入这一句代码:import pyttsx3(确保你前面安装了pyttsx3),并换行
第5行插入以下代码:p3 = pyttsx3.init() # 初始化语音


然后把函数改成:

def play():
	
	p3.say(text.get())  # 获得文本并准备播放
	
	# 开始播放,播放完成之后停止播放
	p3.runAndWait()
	p3.stop()
	

很快就完成了!

3.3.1 现在的代码

# 导入模块

import pyttsx3

import tkinter as tk
from tkinter import ttk

p3 = pyttsx3.init()

# 创建窗口

win = tk.Tk()  # 创建窗口对象win
win.title('文本转语音')  # 设置标题
win.geometry('300x200')  # 设置默认大小为300×200
win.resizable(False, False)  # 设置宽和高不可改变
win.config(background='white')  # 设置窗口颜色为白色(white)

# 创建提示信息

ttk.Label(win, text='输入文本', background='white').pack()  # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”

# 创建输入框

text = ttk.Entry(win, background='white')  # 创建输入框对象,并且背景色设为白色(white)
text.pack()  # 显示组件

# 创建按钮

button = ttk.Button(win, text='播放')  # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令后面再讲 
button.pack()  # 显示组件

def play():
	
	p3.say(text.get())  # 获得文本并准备播放
	
	# 开始播放,播放完成之后停止播放
	p3.runAndWait()
	p3.stop()

tk.mainloop()  # 消息循环

3.3.2 代码结果

照样没有变化,只有代码有变化……

3.4 绑定函数,使点击按钮时播放语音

上次的按钮还没写command参数,所以点击之后没有效果,现在我们给按钮对象加一个参数:command,写上:
, command=lambda: play()


现在,你运行程序,输入随便一段文本,点击按钮。看看,是不是成功了?

3.4.1 现在的代码

# 导入模块

import pyttsx3

import tkinter as tk
from tkinter import ttk

p3 = pyttsx3.init()

# 创建窗口

win = tk.Tk()  # 创建窗口对象win
win.title('文本转语音')  # 设置标题
win.geometry('300x200')  # 设置默认大小为300×200
win.resizable(False, False)  # 设置宽和高不可改变
win.config(background='white')  # 设置窗口颜色为白色(white)

# 创建提示信息

ttk.Label(win, text='输入文本', background='white').pack()  # 创建标签对象,并且背景色设为白色(white)、文本为“输入文本”

# 创建输入框

text = ttk.Entry(win, background='white')  # 创建输入框对象,并且背景色设为白色(white)
text.pack()  # 显示组件

# 创建按钮

button = ttk.Button(win, text='播放', command= lambda: play())  # 创建按钮对象,文本为“播放”,但无法设置背景颜色。点击之后执行的命令是执行play函数
button.pack()  # 显示组件

def play():
	
	p3.say(text.get())  # 获得文本并准备播放
	
	# 开始播放,播放完成之后停止播放
	p3.runAndWait()
	p3.stop()

tk.mainloop()  # 消息循环

3.4.2 代码结果

这个我过几天再录视频(小学生嘛,时间不是那么充足)

4. 完成!

恭喜你!制作了一个文本转语音工具!
你运行试试,输入文本(如果想不到,可以用下面的),点击按钮,听😁!

5. 附录

5.1 文本

5.1.1 中文

你好!世界!世界会被我们改变!

5.1.2 英文

Hello! World! We will change the world!

5.2 资源

文章顶部有

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值