91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Python編寫的語音播放軟件

MEMS ? 作者:工程師李察 ? 2018-11-03 08:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1

界面設(shè)計

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

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

第一步:建立一個窗體

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

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

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

第三步,提供選項

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

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

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

最終界面效果如下:

2

語音播放

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

1).語音接口

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

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


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:需要轉(zhuǎn)換的文字。

per:發(fā)音人選擇, 0為女聲,1為男聲,3為情感合成-度逍遙,4為情感合成-度丫丫,默認(rèn)為普通女聲。vol:音量,取值0-15,默認(rèn)為5中音量

pit:音調(diào),取值0-9,默認(rèn)為5中語調(diào)。

spd:語速,取值0-9,默認(rèn)為5中語速?!畓h’和1分別為語音模式和客戶端類型,該兩項均為固定值,不支持修改。

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

2).功能設(shè)計

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

首先,要將界面中的語音風(fēng)格選項與語音合成函數(shù)參數(shù)一一對應(yīng)起來,這是一個典型的鍵與值的對應(yīng)關(guān)系,使用字典這種數(shù)據(jù)結(jié)構(gòu)再合適不過了。

然后對于發(fā)音風(fēng)格,選取了男聲、女聲、混合三種模式;

最后對于音調(diào)和語速,沒必要設(shè)置過細(xì)的精度等級,這里分別選取了三個跨度明顯的等級進(jìn)行區(qū)分。

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

這里有一個問題需要特別注意,那就是在軟件運行過程中,生成并播放的音頻文件不可刪除、不可修改、不可覆蓋,所以每次轉(zhuǎn)換生成的音頻文件名稱絕對不能重復(fù),否則在進(jìn)行多次“播放”操作時,會因為新生成的音頻文件無法保存而發(fā)生故障。

3

打包封裝

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

pyinstaller-wtk_voice.py

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

插入音頻————測試.mp3

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

該方法僅適用于windows系統(tǒng),而且對系統(tǒng)版本有比較嚴(yán)格的要求,比如64位系統(tǒng)下打包的程序無法在32位系統(tǒng)下運行。

如果需要打包的程序中調(diào)用了外部的一些圖片或其他資源文件,則需要手動復(fù)制到打包后的文件夾內(nèi),因為對于這些文件Pyinstaller不會進(jìn)行打包。

使用Pyinstaller打包如果出現(xiàn)中途失敗的情況,可能會導(dǎo)致原py文件內(nèi)容丟失,所以打包之前最好先進(jìn)行備份。

使用import導(dǎo)入其他庫的時候盡量有選擇性,不要導(dǎo)入整個庫,不然打包后的文件會非常龐大。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90113
  • 播放軟件
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    4851

原文標(biāo)題:營收15年增長30倍,“下一代”是瑞聲科技的最大“功臣”

文章出處:【微信號:MEMSensor,微信公眾號:MEMS】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    有沒有大神會用LabVIEW編寫一個音樂播放軟件啊~求教程

    有沒有大神會用LabVIEW編寫一個音樂播放軟件啊~求教程!求大神carry啊~新手學(xué)LabVIEW,第一次做項目想做一個音樂播放
    發(fā)表于 08-13 20:26

    語音快速播放

    MCU讀取spi flash中的語音數(shù)據(jù)后,采用pwm可以正常播放。但是如何控制播放速率?
    發(fā)表于 07-30 20:19

    基于pyaudio利用python進(jìn)行語音生成和語音識別詳解

    ASR:基于pyaudio利用python進(jìn)行語音生成、語音識別總結(jié)及其案例詳細(xì)攻略
    發(fā)表于 12-27 16:51

    如何在Python中將語音轉(zhuǎn)換為文本

      語音識別是計算機軟件識別口語中的單詞和短語,并將其轉(zhuǎn)換為可讀文本的能力。那么如何在Python中將語音轉(zhuǎn)換為文本?如何使用SpeechRecognition 庫在
    發(fā)表于 07-29 18:12

    如何使用PWM實現(xiàn)語音播放

    如何使用PWM實現(xiàn)語音播放?
    發(fā)表于 02-14 06:59

    PWM語音播放器——基于Luminary單片機

    PWM語音播放器——基于Luminary單片機 詳述PWM語音播放器原理、硬件和軟件設(shè)計
    發(fā)表于 04-07 16:50 ?47次下載

    python編寫腳本方法

    對于具有484個引腳的芯片,如果手動一個一個設(shè)置引腳,必然是一場噩夢。網(wǎng)上有使用Capture進(jìn)行自動導(dǎo)入的帖子,不過沒有找到AD方面的帖子。本文使用python,編寫腳本,自動分配引腳。
    發(fā)表于 11-17 11:38 ?5266次閱讀

    如何使用Python編寫一個桌面軟件系統(tǒng)?步驟有哪些

    建議直接用python編寫一個網(wǎng)頁服務(wù)器,然后就在本機用瀏覽器來使用。
    的頭像 發(fā)表于 01-25 12:08 ?5545次閱讀

    如何使用Python編寫一個簡單的程序

    按照軟件行業(yè)傳統(tǒng)習(xí)慣,當(dāng)你學(xué)習(xí)一種新的編程語言如Python時,首先編寫一個“Hello World! ”程序。請執(zhí)行以下步驟,以創(chuàng)造你的“Hello World!” Python程序
    的頭像 發(fā)表于 01-16 15:21 ?2.3w次閱讀

    Python與NI:搭配使用Python與NI硬件和軟件

    Python與NI: 搭配使用Python與NI硬件和軟件 NI支持用戶自行選擇合適的編程語言。NI提供多種用于測試和測量的產(chǎn)品,并努力將產(chǎn)品與開源社區(qū)進(jìn)行整合。借助出色的原生Python
    的頭像 發(fā)表于 05-29 11:36 ?5960次閱讀

    如何使用Warp在Python環(huán)境中編寫CUDA內(nèi)核

      通常,實時物理模擬代碼是用低級 CUDA C ++編寫的,以獲得最佳性能。在這篇文章中,我們將介紹 NVIDIA Warp ,這是一個新的 Python 框架,可以輕松地用 Python
    的頭像 發(fā)表于 04-02 16:15 ?3651次閱讀

    利用Python編寫簡單網(wǎng)絡(luò)爬蟲實例

    利用 Python編寫簡單網(wǎng)絡(luò)爬蟲實例2 實驗環(huán)境python版本:3.3.5(2.7下報錯
    發(fā)表于 02-24 11:05 ?15次下載

    KT148A語音芯片的組合播放詳細(xì)說明 包含語音制作 壓縮 下載 播放

    KT148A語音芯片的組合播放詳細(xì)說明 ,包含:語音制作 、壓縮、下載、播放 這里總共的步驟大概分為5步,其實也很簡單 組合播放的原理,
    的頭像 發(fā)表于 10-13 11:17 ?1954次閱讀
    KT148A<b class='flag-5'>語音</b>芯片的組合<b class='flag-5'>播放</b>詳細(xì)說明 包含<b class='flag-5'>語音</b>制作 壓縮 下載 <b class='flag-5'>播放</b>

    芯知識 | 什么是音頻藍(lán)牙播放語音芯片?

    隨著科技的不斷進(jìn)步,音頻藍(lán)牙播放語音芯片成為嵌入式音頻系統(tǒng)中備受關(guān)注的創(chuàng)新解決方案。本文將深入解析什么是音頻藍(lán)牙播放語音芯片,以及其在實現(xiàn)無線音頻體驗方面的重要作用。一、什么是音頻藍(lán)牙
    的頭像 發(fā)表于 12-15 08:36 ?1619次閱讀
    芯知識 | 什么是音頻藍(lán)牙<b class='flag-5'>播放</b><b class='flag-5'>語音</b>芯片?

    零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python程序?

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Python程序。什么是
    的頭像 發(fā)表于 03-25 09:27 ?2075次閱讀
    零基礎(chǔ)入門:如何在樹莓派上<b class='flag-5'>編寫</b>和運行<b class='flag-5'>Python</b>程序?