将文字变成语音的GUI程序(基于百度AI开放平台)【面向对象的写法】

这篇文章的程序与前一篇面向过程的写法实现的功能一样,但是换成了面向对象的写法,要理解这个写法,需要面向对象的知识和tkinter中各类之间的继承关系。下面这张图是从bilibili上屠夫的女婿大佬的所讲视频中截取的,供大家参考。
在这里插入图片描述
下面是面向对象方式编写的代码:

# GUI经典写法:面向对象的写法
# Frame框架是一个容器,放其他组件的容器
# 下面是一个测试经典的GUI程序的写法,使用面向对象的方式
from tkinter import *
from tkinter import messagebox
from aip import AipSpeech
import os

#此处我将我的APP_ID、API_KEY和SECRET_KEY去掉了,如果你想要运行成功,需要自行去百度智能云申请自己的账号并创建的语音合成应用,获得你的专属APP_ID、API_KEY和SECRET_KEY值放入下方。
APP_ID = '你的 APP_ID'
API_KEY = '你的 API_KEY'
SECRET_KEY = '你的 SECRET_KEY'

class Application(Frame):
	"""一个经典的GUI程序"""

	def __init__(self,master=None):#构造器,构造一个组件对象
		super().__init__(master)   #super代表的是父类的定义,而不是父类对象。
		self.master = master
		self.pack()
		self.createWidget()

	def createWidget(self):
		"""创建组件"""
		self.txt01 = Text(root,width = 50,height = 12,bg ='white')
		self.txt01.pack()
		self.btn01 = Button(self)
		self.btn01["text"] = "语音合成"
		self.btn01.pack()
		self.btn01['command'] = self.textToSound		

	def textToSound(self):
		client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
		contents = self.txt01.get(1.0, END)
		result  = client.synthesis(str(contents), 'zh', 1, {'vol': 5,})

		# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
		if not isinstance(result, dict):
			with open('auido.mp3', 'wb') as f:
				f.write(result)
				messagebox.showinfo("信息提示","语音合成成功!")
				os.startfile("auido.mp3")

if __name__ == '__main__':
	root = Tk()
	root.geometry("600x400+200+300")
	root.title("一个经典的GUI程序")
	app = Application(master=root)
	root.mainloop()

发布了88 篇原创文章 · 获赞 22 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/xuechen_gemgirl/article/details/105654576