將文字變成語音的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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章