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

尝试了用Python中tkinter写了第一个GUI程序后,便想着把原来只在控制台上玩过语音合成的程序变成可以有窗口交互的GUI程序。因为有过用VB写应用系统的经验,对窗体还是有一定的认识,所以用着老一套的思维,在窗体中加入一个text文本框和一个按钮两个组件,然后期待能在文本框中输入文字,点击按钮后将文本框的文字提出并生成语音读出。
那么我们需要解决两个问题:1.两个组件的使用,2.点击按钮后的文字转语音的处理。
第一个问题的解决看tkinter的文档,第二个问题的解决来自百度AI开放平台中语音部分的文档,具体如何使用可以参看这个视频,一看就会。https://www.bilibili.com/video/BV1Lb411K7uZ?from=search&seid=3916851868959770975
然后我们就会发现我们只需要把视频中执行的内容放在组件按钮点击后执行的函数里去,将“你好百度”四个字的语音文字来源改为从文本框中获取。这样我们便可以完成这个糙得不得了的为了获得小小成就感的GUI程序。
下面附上具体代码:

# 主窗口的位置和大小
# geometry('wxh+-x+-y')进行设置,w为宽度,h为高度
# +x代表距屏幕左边的距离,-x代表距屏幕右边的距离
# +y表示距屏幕上边的距离,-y代表距屏幕下边的距离

from tkinter import *
from aip import AipSpeech
from tkinter import messagebox
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'

def textToSound(e):
	client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
	contents = 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")


root = Tk()
root.title("This is a TextToSound GUI")
root.geometry("500x300+100+200")
but01 = Button(root)
but01["text"] = '点我生成音频'
txt01 = Text(root,width = 50,height = 12,bg ='white')
txt01.pack()
but01.pack()
but01.bind("<Button-1>",textToSound)

root.mainloop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章