您好,登錄后才能下訂單哦!
如何讓用Python寫一個語音播放軟件,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
單位經常使用廣播進行臨時事項的通知(將文字轉換為語音然后通過功放廣播),但是市面上多數語音播放軟件都是收費的,要么發音失真,要么不夠穩定——經常出現莫名其妙的故障,容易給工作帶來被動。學Python這么久不如動手寫一款自己的語音廣播軟件,即使發生故障也可以自行排除。
1
界面設計
在開始動工之前當然要分析需求,我要的核心功能是將一段文字通知輸入軟件,然后將其轉換為語音并播放出來。
這項功能雖然并不復雜,但也需要一個交互式的界面,所以決定使用Tkinter來實現這個功能。
***步:建立一個窗體
設置標題、大小等要素,為了避免顯示格式錯亂將其設定為不可改變大小,代碼如下:
第二步,設置一個控件
用于接受收入的文字,這里選擇帶滾動條的Text,代碼如下:
第三步,提供選項
作為一款語音播放軟件,最基本的語速、音調等風格設置還是要有的,這里使用Combobox控件提供固定選項,用戶可以根據情況選擇不同的發音、語速和語調。
第四步,建立功能事件的觸發接口
設置三個Button控件分別用于觸發“語音播放”、“文本清除”和“界面退出”功能。
最終界面效果如下:
2
語音播放
關于“清除”、“退出”等功能相對比較簡單,這里重點對本次的核心功能——語音播放進行詳細說明。
1).語音接口
文本轉換語音推薦使用百度云的REST API 接口,登錄網站http://ai.baidu.com/,依次進入控制臺——語音技術頁面,創建自己的語音應用(下圖),其中AppID 、API Key 、Secret Key 三個參數在代碼中會用到。
然后使用 pip install baidu-aip 安裝python SDK模塊,我們來看一下函數原型:
APP_ID = 'XXXXXX' API_KEY = 'XXXXXXXXXXXXX' SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXX' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.synthesis(text, 'zh', 1, {'per':1, 'vol':15, 'pit':9, 'spd':5 })
text:需要轉換的文字。
per:發音人選擇, 0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認為普通女聲。vol:音量,取值0-15,默認為5中音量
pit:音調,取值0-9,默認為5中語調。
spd:語速,取值0-9,默認為5中語速。‘zh’和1分別為語音模式和客戶端類型,該兩項均為固定值,不支持修改。
可以看到,我們需要的發音、音調、語速三種風格都可以通過修改參數來實現。
2).功能設計
解決了語音合成接口的問題,就可以結合界面設置來實現具體功能了。
首先,要將界面中的語音風格選項與語音合成函數參數一一對應起來,這是一個典型的鍵與值的對應關系,使用字典這種數據結構再合適不過了。
然后對于發音風格,選取了男聲、女聲、混合三種模式;
***對于音調和語速,沒必要設置過細的精度等級,這里分別選取了三個跨度明顯的等級進行區分。
當“播放”按鈕點擊時,要從Text控件中讀取文本,如果文本為空則彈出提示框要求重新輸入;若文本不為空則將文本轉換為音頻文件并使用playsound進行播放。
這里有一個問題需要特別注意,那就是在軟件運行過程中,生成并播放的音頻文件不可刪除、不可修改、不可覆蓋,所以每次轉換生成的音頻文件名稱絕對不能重復,否則在進行多次“播放”操作時,會因為新生成的音頻文件無法保存而發生故障。
3
打包封裝
到目前為止,這個軟件的運行要依賴于本地的python開發環境,不能方便地提供給他人使用,這里推薦Pyinstaller的第三方庫來對python程序進行打包,首先進入剛才的py文件所在目錄,執 行以下cmd命令。其中“-w”的作用是是不顯示命令窗口,tk_voice是剛才的py文件名稱。
pyinstaller -w tk_voice.py
這時,在同一目錄下會生成一個dist文件夾,這里面就是打包后的程序文件了。我們運行一下其中的.exe文件,就會出現之前設計的程序界面,在文本框中輸入一段測試文字:“全體人員請注意,全體人員請注意,請立即下樓集合開飯。”,點擊“播放”按鈕試一下效果:
插入音頻————測試.mp3
***,關于Pyinstaller的使用有幾點需要注意的地方:
該方法僅適用于windows系統,而且對系統版本有比較嚴格的要求,比如64位系統下打包的程序無法在32位系統下運行。
如果需要打包的程序中調用了外部的一些圖片或其他資源文件,則需要手動復制到打包后的文件夾內,因為對于這些文件Pyinstaller不會進行打包。
使用Pyinstaller打包如果出現中途失敗的情況,可能會導致原py文件內容丟失,所以打包之前***先進行備份。
使用import導入其他庫的時候盡量有選擇性,不要導入整個庫,不然打包后的文件會非常龐大。
使用python寫了一款語音播放軟件,主要涉及Tkinter、baidu-aip、playsound、pyinstaller幾個庫,能夠實現基本的語音合成及播放功能,能夠脫離python開發環境運行,便于自行維護和擴展,缺點是界面比較簡陋、功能比較單一,有興趣的小伙伴可以自行修改完善。
關于如何讓用Python寫一個語音播放軟件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。