偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用Python寫一個(gè)語(yǔ)音播放軟件

開(kāi)發(fā) 后端
本文使用python寫了一款語(yǔ)音播放軟件,主要涉及Tkinter、baidu-aip、playsound、pyinstaller幾個(gè)庫(kù),能夠?qū)崿F(xiàn)基本的語(yǔ)音合成及播放功能,能夠脫離python開(kāi)發(fā)環(huán)境運(yùn)行,便于自行維護(hù)和擴(kuò)展,缺點(diǎn)是界面比較簡(jiǎn)陋、功能比較單一,有興趣的小伙伴可以自行修改完善。

單位經(jīng)常使用廣播進(jìn)行臨時(shí)事項(xiàng)的通知(將文字轉(zhuǎn)換為語(yǔ)音然后通過(guò)功放廣播),但是市面上多數(shù)語(yǔ)音播放軟件都是收費(fèi)的,要么發(fā)音失真,要么不夠穩(wěn)定——經(jīng)常出現(xiàn)莫名其妙的故障,容易給工作帶來(lái)被動(dòng)。學(xué)Python這么久不如動(dòng)手寫一款自己的語(yǔ)音廣播軟件,即使發(fā)生故障也可以自行排除。

1

界面設(shè)計(jì)

在開(kāi)始動(dòng)工之前當(dāng)然要分析需求,我要的核心功能是將一段文字通知輸入軟件,然后將其轉(zhuǎn)換為語(yǔ)音并播放出來(lái)。

這項(xiàng)功能雖然并不復(fù)雜,但也需要一個(gè)交互式的界面,所以決定使用Tkinter來(lái)實(shí)現(xiàn)這個(gè)功能。

***步:建立一個(gè)窗體

設(shè)置標(biāo)題、大小等要素,為了避免顯示格式錯(cuò)亂將其設(shè)定為不可改變大小,代碼如下:

第二步,設(shè)置一個(gè)控件

用于接受收入的文字,這里選擇帶滾動(dòng)條的Text,代碼如下:

第三步,提供選項(xiàng)

作為一款語(yǔ)音播放軟件,最基本的語(yǔ)速、音調(diào)等風(fēng)格設(shè)置還是要有的,這里使用Combobox控件提供固定選項(xiàng),用戶可以根據(jù)情況選擇不同的發(fā)音、語(yǔ)速和語(yǔ)調(diào)。

第四步,建立功能事件的觸發(fā)接口

設(shè)置三個(gè)Button控件分別用于觸發(fā)“語(yǔ)音播放”、“文本清除”和“界面退出”功能。

最終界面效果如下:

2

語(yǔ)音播放

關(guān)于“清除”、“退出”等功能相對(duì)比較簡(jiǎn)單,這里重點(diǎn)對(duì)本次的核心功能——語(yǔ)音播放進(jìn)行詳細(xì)說(shuō)明。

1).語(yǔ)音接口

文本轉(zhuǎn)換語(yǔ)音推薦使用百度云的REST API 接口,登錄網(wǎng)站http://ai.baidu.com/,依次進(jìn)入控制臺(tái)——語(yǔ)音技術(shù)頁(yè)面,創(chuàng)建自己的語(yǔ)音應(yīng)用(下圖),其中AppID 、API Key 、Secret Key 三個(gè)參數(shù)在代碼中會(huì)用到。

然后使用 pip install baidu-aip 安裝python SDK模塊,我們來(lái)看一下函數(shù)原型:

 

  1. APP_ID = 'XXXXXX' 
  2.  
  3. API_KEY = 'XXXXXXXXXXXXX' 
  4.  
  5. SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXX' 
  6.  
  7. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 
  8.  
  9. result  = client.synthesis(text, 'zh', 1, {'per':1, 'vol':15, 'pit':9, 'spd':5 }) 

  •  text:需要轉(zhuǎn)換的文字。
  •  per:發(fā)音人選擇, 0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認(rèn)為普通女聲。vol:音量,取值0-15,默認(rèn)為5中音量
  •  pit:音調(diào),取值0-9,默認(rèn)為5中語(yǔ)調(diào)。
  •  spd:語(yǔ)速,取值0-9,默認(rèn)為5中語(yǔ)速。‘zh’和1分別為語(yǔ)音模式和客戶端類型,該兩項(xiàng)均為固定值,不支持修改。  

可以看到,我們需要的發(fā)音、音調(diào)、語(yǔ)速三種風(fēng)格都可以通過(guò)修改參數(shù)來(lái)實(shí)現(xiàn)。

2).功能設(shè)計(jì)

解決了語(yǔ)音合成接口的問(wèn)題,就可以結(jié)合界面設(shè)置來(lái)實(shí)現(xiàn)具體功能了。

  •  首先,要將界面中的語(yǔ)音風(fēng)格選項(xiàng)與語(yǔ)音合成函數(shù)參數(shù)一一對(duì)應(yīng)起來(lái),這是一個(gè)典型的鍵與值的對(duì)應(yīng)關(guān)系,使用字典這種數(shù)據(jù)結(jié)構(gòu)再合適不過(guò)了。
  •  然后對(duì)于發(fā)音風(fēng)格,選取了男聲、女聲、混合三種模式;
  •  ***對(duì)于音調(diào)和語(yǔ)速,沒(méi)必要設(shè)置過(guò)細(xì)的精度等級(jí),這里分別選取了三個(gè)跨度明顯的等級(jí)進(jìn)行區(qū)分。

當(dāng)“播放”按鈕點(diǎn)擊時(shí),要從Text控件中讀取文本,如果文本為空則彈出提示框要求重新輸入;若文本不為空則將文本轉(zhuǎn)換為音頻文件并使用playsound進(jìn)行播放。

這里有一個(gè)問(wèn)題需要特別注意,那就是在軟件運(yùn)行過(guò)程中,生成并播放的音頻文件不可刪除、不可修改、不可覆蓋,所以每次轉(zhuǎn)換生成的音頻文件名稱絕對(duì)不能重復(fù),否則在進(jìn)行多次“播放”操作時(shí),會(huì)因?yàn)樾律傻囊纛l文件無(wú)法保存而發(fā)生故障。

3

打包封裝

到目前為止,這個(gè)軟件的運(yùn)行要依賴于本地的python開(kāi)發(fā)環(huán)境,不能方便地提供給他人使用,這里推薦Pyinstaller的第三方庫(kù)來(lái)對(duì)python程序進(jìn)行打包,首先進(jìn)入剛才的py文件所在目錄,執(zhí) 行以下cmd命令。其中“-w”的作用是是不顯示命令窗口,tk_voice是剛才的py文件名稱。

  1. pyinstaller -w tk_voice.py 

這時(shí),在同一目錄下會(huì)生成一個(gè)dist文件夾,這里面就是打包后的程序文件了。我們運(yùn)行一下其中的.exe文件,就會(huì)出現(xiàn)之前設(shè)計(jì)的程序界面,在文本框中輸入一段測(cè)試文字:“全體人員請(qǐng)注意,全體人員請(qǐng)注意,請(qǐng)立即下樓集合開(kāi)飯。”,點(diǎn)擊“播放”按鈕試一下效果:

插入音頻————測(cè)試.mp3

***,關(guān)于Pyinstaller的使用有幾點(diǎn)需要注意的地方:

  •  該方法僅適用于windows系統(tǒng),而且對(duì)系統(tǒng)版本有比較嚴(yán)格的要求,比如64位系統(tǒng)下打包的程序無(wú)法在32位系統(tǒng)下運(yùn)行。
  •  如果需要打包的程序中調(diào)用了外部的一些圖片或其他資源文件,則需要手動(dòng)復(fù)制到打包后的文件夾內(nèi),因?yàn)閷?duì)于這些文件Pyinstaller不會(huì)進(jìn)行打包。
  •  使用Pyinstaller打包如果出現(xiàn)中途失敗的情況,可能會(huì)導(dǎo)致原py文件內(nèi)容丟失,所以打包之前***先進(jìn)行備份。
  •  使用import導(dǎo)入其他庫(kù)的時(shí)候盡量有選擇性,不要導(dǎo)入整個(gè)庫(kù),不然打包后的文件會(huì)非常龐大。

[[248145]]

本文使用python寫了一款語(yǔ)音播放軟件,主要涉及Tkinter、baidu-aip、playsound、pyinstaller幾個(gè)庫(kù),能夠?qū)崿F(xiàn)基本的語(yǔ)音合成及播放功能,能夠脫離python開(kāi)發(fā)環(huán)境運(yùn)行,便于自行維護(hù)和擴(kuò)展,缺點(diǎn)是界面比較簡(jiǎn)陋、功能比較單一,有興趣的小伙伴可以自行修改完善。

責(zé)任編輯:龐桂玉 來(lái)源: 菜鳥(niǎo)學(xué)Python
相關(guān)推薦

2021-08-04 11:55:45

Python天氣查詢PySide2

2022-03-24 14:42:19

Python編程語(yǔ)言

2017-05-18 12:16:03

LinuxPythonNoSql

2017-06-08 15:53:38

PythonWeb框架

2021-05-14 10:45:21

PythonNoSQL數(shù)據(jù)庫(kù)

2023-04-10 14:20:47

ChatGPTRESTAPI

2023-04-07 15:45:13

Emojicode開(kāi)源編碼語(yǔ)言

2022-07-20 09:38:31

Python語(yǔ)音合成代碼

2018-12-04 15:10:56

Python微信備忘錄

2021-04-23 16:40:49

Three.js前端代碼

2014-03-24 09:19:43

Python編輯器

2020-10-15 15:01:54

Python 開(kāi)發(fā)編程語(yǔ)言

2021-10-03 22:06:43

LinuxTar軟件

2010-05-12 16:52:11

Oracle備份工具

2020-09-15 14:05:21

Python代碼預(yù)測(cè)模型

2019-08-14 16:56:38

Python職責(zé)模式請(qǐng)假

2022-12-22 08:22:17

Python圖像圖像處理

2023-05-15 08:30:35

YjsReact

2016-12-20 13:55:52

2022-10-20 11:49:49

JS動(dòng)畫幀,CSS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)