章開始之前,有個問題:
聊到現在筆記本上的智能語音助手,機友們有了解過嗎?
機哥猜,要是說手機上的,大部分人應該很熟悉。
但筆記本嘛...有了解的人,估計是不多。
而機哥最近,就有個新發現。
說出來大家可能不信。
現在有的筆記本上內置的智能語音助手,好用的程度,甚至比很多手機都要高。
機哥說的這種筆記本,就是最近機哥正在用的這臺——惠普星14高性能輕薄本。
最近不也是剛好恰逢開學季嘛。
在結束了愉快的假期之后,大學生們馬上就要迎來忙碌的新學期。
上課、論文、實習、社團...該忙的事確實不少,得有臺趁手的筆記本才行。
而星14高性能輕薄本內置的智能語音助手——惠小微,最近也是剛好搞了一波大升級。
機哥一研究,才發現,這簡直就是妥妥的「學生黨神器」啊。
具體好用在哪,機哥舉幾個栗子。
還在讀大學的機友,上網課應該是少不了吧?
特別是英語網課,可是難倒了不少英語不好的孩紙。
而這次惠小微新加入的其中一個功能,就是「字幕翻譯」。
只要你在星14高性能輕薄本里,開啟這個功能。
即便你看的是純英文+無中文字幕的網課,聰明的惠小微,也會給你提供實時的中英雙語字幕。
劃重點:實時的。太快了沒聽懂?惠小微:我來。
甚至最后結束時,它還能保存記錄下的語音+文本。
給大家課后想復習時,也提供了一份保障。
好家伙,要是機哥當初讀書時有這種筆記本,感覺過個托福雅思也不成問題嘛。
有個朋友說,他還有一個大膽的想法。
不僅僅是翻譯,論起記筆記,惠小微也頗有一手:會議筆記。
它能給大家記錄課堂板書時,提供更懶人方便的操作。
老師說得太多太快,記錄不過來?
來,讓惠小微幫你記。而且因為支持麥克風+系統雙重錄制,無論是網課還是回到課堂,全都難不倒它。
包括最后結束時,也同樣能自動轉成文本保存。
同學看你上課筆都不動,以為你又在開小差。
殊不知,你早已偷偷把該記的,全都存起來了。
機哥想了想,以后老板再找我開會,嘿嘿。。
還沒完呢,要說更厲害的,它還有另一個功能:
語音輸入。
有時作業需要寫英語作文,但又遲遲碼不出字?
惠小微的語音輸入,支持實時接收中英雙語互轉記錄。
你只管說中文,英文版的事,惠小微來處理。
果然,關于學習這事,還是你懂。
機哥也因為被惠小微的智能所吸引,最近就把星14高性能輕薄本作為主力機,用了一段時間。
結果發現,不光光是軟件適合學生,感覺這完全就是一款為學生打造的「學生黨神機」啊。
比如說,外觀。
既然是學生用,那外觀顏值肯定不能輸。
要是又丑質感又不行的,這在學校里也拿不出手不是?
最好還要有特色有辨識度一點。
好在星14高性能輕薄本,做得確實很高級。
不多嗶嗶,直接上圖。
材質方面,肯定的,AC雙面都是金屬材質。
更讓機哥喜歡的一點,是它在配色上還采用了撞色設計。
就采用了A面金色+C面銀色的搭配,提升辨識度的同時,兩種顏色也都比較討喜。
就連摸起來的手感,也都很舒服。
還有嚯,考慮到大家在學校里,避免不了要抱著電腦在宿舍、教室、讀書館等地來回跑。
星14高性能輕薄本在便攜這一塊,也算是拿捏了。
機身最厚處僅為16.9mm,重量則輕至1.41kg。
提著它出門,再也不會覺得累贅。
說完了外觀,再聊聊機友們也都很關心的性能。
作為一名過來人,機哥深知一款筆記本的性能,對于學習體驗的重要性。
特別是對于輕薄本這類產品來說,能不能滿足各類軟件的運行需求,很關鍵。
還好,機哥手上的這臺星14高性能輕薄本,有點不一樣。
它是輕薄本沒錯,但,也還是高性能輕薄本:
全新第十一代英特爾?酷睿? i5處理器
英特爾銳炬?X?顯卡
16G DDR4-3200MHz大容量雙通道內存
三相電機馬達高效散熱
十一代酷睿,肆意輕盈
無論是性能還是散熱,星14高性能輕薄本都沒有省著料。
有了這套強勁的組合之后,星14高性能輕薄本面對各類學習場景,可就游刃有余了。
最常規的Word、Excel、PPT等,太easy就不說了。
現在大部分讀書的機友,無論是作業需要還是個人愛好,輕度修修圖的需求應該都有吧?
最近機哥就一直拿著星14高性能輕薄本作圖,妥妥的無壓力。
另外,當你學習學累了,想要適當娛樂一下的時候,星14高性能輕薄本這套高性能組合,就又到了發揮作用的時候。
特別是晚上下課回到宿舍,如果能和舍友們來一把緊張刺激的LOL五排,那是最爽的。
對于大家這樣的需求,星14高性能輕薄本也能輕松辦到。
不過看到這,可能有的機友就要說了:
晚上下課不喜歡打游戲,只想靜靜躺著看電影、刷綜藝。
哎,這就又說到重點了。
星14高性能輕薄本的配備的這塊屏幕,機哥正好也想好好說一說。
為了盡可能地滿足大家的需求。
星14高性能輕薄本上了一塊屏占比高達84%的全面屏,同時可選配400尼特高亮度、72%NTSC高色域顯示屏。
當你晚上躺在宿舍的床上時,它輕薄的屬性,可以讓你抱著看也不會覺得累。
加上這樣優秀的一塊屏幕,體驗還不是美滋滋的?
順帶一提,星14高性能輕薄本還配上了B&O調校的雙揚聲器。這一次,視覺體驗和聽覺體驗,它全都要。
噢對了,音響機箱采用的也是海洋回收塑料,綠色環保!
就連很多機友喜歡的DC調光,星14高性能輕薄本這次也沒落下。
晚上打燈趕作業、碼論文時,眼睛經常感到干澀不舒服?
你需要這一臺星14高性能輕薄本。
其實不光以上這些,星14高性能輕薄本還有很多值得一說的特性。
比如,它還擁有輕薄本中少有的全滿貫接口——
右側配備1個HDMI2.0接口、1個USB 3.2 Gen1接口、1個全功能USB Type-C 3.2 Gen2接口和1個電源接口,左側配備1個USB 3.2 Gen1接口和1個耳麥合一接口。
包括支持快充、超長續航、指紋識別等等,總體上機哥這幾天用下來,確實能算得上一款非常值得推薦的「學生黨神機」。
感興趣的機友們可以沖了!
前隨著手機智能化的改革,語音功能顛覆了我們對手機操作的認知,目前各大手機廠商的系統都內置了語音助手功能,目前語音助手也成為了不可或缺的功能。
但是在電腦上,相信大家有時候雙手沒空去操作一些東西,例如最近冬天冷,凍的手都不想動了,如果能動動嘴來操作一些功能,那方便多,同時也提高了效率。
今天雷鋒哥給大家分享這款電腦上的語音助手軟件「神秘鴨」支持用語音來控制電腦上的一些操作,例如電腦開關機、打開軟件、關閉軟件、軟件功能操作等。
神秘鴨使用
據官方介紹「神秘鴨」擁有 Windows、Linux、macOS 客戶端,不過目前只有 Windows 版,作者表示軟件源代碼開放在 Github 上,可以自己下載后編譯或者嵌入到服務器、樹莓派等設備。
雖說是語音控制電腦,不過「神秘鴨」是依賴手機上的語音功能來控制電腦,目前支持的手機語音助手有:Siri、小藝、小V、小愛同學。注意,目前只支持小愛同學和Siri的語音控制。
1.打開 https://smya.cn 官方注冊賬號,創建你的設備,輸入手機號碼,獲取短信驗證碼注冊。
2.注冊完畢后,進入「神秘鴨」的設備管理界面,新建立設備,輸入名稱和備注提交創建。
3.創建指令,點擊我的指令,開始創建,可以看到支持的命令有:打開文件、文件夾、刪除文件、創建文件、關閉進程、執行任意命令、自動化腳本功能。
4.例如想用語音來打開某個軟件,在備注里面輸入軟件的絕對路徑地址,然后提交保存就可以了。
5.在「神秘鴨」的指令倉庫里面也自帶有一些常用的指令,你可以編輯后導入到自己的指令里面。
6.添加指令到你的設備,點擊我的設備 → 管理設備指令,點擊關聯新指令,就可以看到你剛才添加的一些指令。
7.添加完畢指令后,可以看到有一個 "指紋" 點擊它,先把指令的 ID 復制出來,可以新建一個記事本先保存。
8.開始導入指令到手機,點擊我的設備,點擊導入,這里雷鋒哥用的是 iPhone 里的 Siri,用手機的二維碼掃碼功能,掃一掃。
9.手機會打開快捷鍵指令,修改下指令名稱,然后添加指令后,再編輯指令,找到 "run_id" 的位置,添加剛才復制的指令ID內容。
10.電腦上安裝「神秘鴨」的客戶端軟件,需要輸入設備ID和設備安全碼,在「神秘鴨」的設備管理網頁上復制粘貼就可以了。
11.連接成功后,會提示連接成功的字樣,然后保持「神秘鴨」的客戶端在后臺運行就可以用手機語音控制電腦了。
12.還有腳本錄制功能,大家就自行折騰了,錄制完畢后同樣添加到我的指令,重復上面的步驟來導入到手機里面。
總結
體驗下來還是挺不錯的,例如離開電腦忘記鎖屏,可以用手機語音來遠程鎖屏保護隱私,又或者通過搭配語音遠程開機硬件,可以語音開機,具體用法大家自己發揮腦洞了。
章的主題為通過聲音來控制您的電腦。當下的語音識別已經相對比較成熟,比如有的車載系統,或手機都支持語音識別,您可以通過聲音來下達指令。比如您告訴導航系統"我要去北京",它會自動幫您設置導航目的地,并開始導航。通過閱讀本章內容,讀者將了解如何通過聲音來控制您的電腦及語音控制的基本原理。
當下的語音識別很火,也相對比較成熟,正確率也極高。而基于語音識別的應用也慢慢的變的非常多。那么我們能不能自己用Python寫一個程序,這個程序能夠根據您的指令去做一些事情。比如你對著電腦說一聲,"打開百度",然后該程序就自動幫你打開瀏覽器,并登陸到百度的搜索主頁。這就是我們本章要解決的問題。
現在我們已經知道我們要解決的問題了,那么接下來就得想想如何實現它了。
首先,一般筆記本電腦都有內置麥克風,臺式機可能需要戴個耳機了。我們說的話可以被麥克風錄下來,接下來就需要把錄下來的這段話進行語音識別,也就是把這段錄音轉化為文字。那么有了文字就好辦了,我們可以檢查這段文字是否是我們支持的操作。假如我們現在支持"打開百度",如果您就說了"打開百度",那么將識別到的文字和支持的操作進行對比,發現是支持的,則程序開始自動打開瀏覽器,并登陸到百度的主頁。
我們基于這個思路來實現的一個簡單的聲控程序。
本節會將所有用到的模塊的安裝及功能進行簡單的介紹。有的模塊很強大,但這里只介紹我們會用到的功能,拋磚引玉。讀者可以對感興趣的模塊進行深入學習。
安裝PyAudio模塊的命令如下:
>pip install --user pyaudio
Collecting pyaudio
https://files.pythonhosted.org/packages/72/ad/80dd3ca3a26a2ea74ca7706a8a275712e13b4f884644ae7dc38fb7342bae/PyAudio-0.2.11-cp36-cp36m-win32.whl
Installing collected packages: pyaudio
Successfully installed pyaudio-0.2.11
PyAudio是一個免費開源軟件,是一個跨平臺的語音I/O 庫。通過PyAudio您能夠很容易的用Python去播放和錄制音頻,可以工作在windows,Mac和Linux操作系統上。我們將用這個庫錄制音頻。
安裝百度AIP模塊的命令如下:
>pip install baidu-aip
Collecting baidu-aip
Using cached https://files.pythonhosted.org/packages/85/ba/5e94b935b7af791573f1b5bc1b4084311430df8804401da34f27e3708194/baidu-aip-2.2.17.0.tar.gz
Requirement already satisfied: requests in c:\program files (x86)\python3.6.8\lib\site-packages (from baidu-aip) (2.22.0)
Requirement already satisfied: certifi>=2017.4.17 in c:\program files (x86)\python3.6.8\lib\site-packages (from requests->baidu-aip) (2019.6.16)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\program files (x86)\python3.6.8\lib\site-packages (from requests->baidu-aip) (3.0.4)
Requirement already satisfied: idna<2.9,>=2.5 in c:\program files (x86)\python3.6.8\lib\site-packages (from requests->baidu-aip) (2.8)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\program files (x86)\python3.6.8\lib\site-packages (from requests->baidu-aip) (1.25.3)
Installing collected packages: baidu-aip
Running setup.py install for baidu-aip ... done
Successfully installed baidu-aip-2.2.17.0
百度語音識別通過 REST API 的方式給開發者提供一個通用的 HTTP 接口。需要上傳完整的錄音文件,錄音文件時長不超過60s。我們將通過這個API進行解析我們錄制的音頻文件,將其轉化為文字。
百度語音提供2種普通話及英語、粵語、四川話識別模型。
普通話搜索模型同時能識別簡單的常用英語語句,效果同手機百度。
讀者需要登陸百度AI語音識別界面申請相應的App ID及API Key,如圖14-1所示。
圖14-1 百度云語音識別App ID及API Key示例
安裝wave模塊的命令如下:
>pip install Wave
Wave模塊提供了一個處理WAV聲音格式的便利接口。它不支持壓縮和解壓縮,但是支持單聲道和立體聲。由于百度語音AI對上傳的音頻有特定要求,所以我們將會使用該模塊對我們錄制的音頻進行處理,然后再調用API進行轉換。
webbrowser是python的標準庫,不需要單獨安裝。
webbrowser模塊提供了high-level的接口讓我們可以很方便向用戶展示基于Web的文檔。大多數情況下,只需要調用open()函數就可以做到。我們這里要使用該模塊幫我們打開瀏覽器,并登陸到百度主頁。
到現在,萬事俱備只欠東風。讓我們開始coding吧。
小時候寫作文,老師教我們寫提綱,然后再去寫文章。而我們寫代碼也是一樣的,我們需要先做概要設計,然后再去做詳細設計,最后去編碼。道理都是類似的,我們始終要做到"頭頂有太陽,心中有地圖"這樣就不會走彎路甚至迷路。我們這里的偽碼就相當于概要設計+詳細設計。
import wave, pyaudio
import webbrowser
import os, time
def record_audio():
#調用wave進行錄音
#參照百度AI的要求進行語音的參數設置
def convert_audio_to_string_via_ai():
#將滿足AI解析要求的音頻通過API進行解析得到字符串
def handle_command():
#對得到字符串進行解析,比如字符串包含了"打開百度",則執行相應的操作
主函數:
recoard_audio() #電腦進行錄音
convert_audio_to_string_via_ai() #通過API將音頻內容轉化為文字
handle_command() #將得到字符串進行解析,并執行相應的操作
程序的運行效果如下圖14-2,程序啟動后先讓"打開百度",然后等待瀏覽器打開百度后,再告訴其"退出"程序。
圖14-2 程序運行效果
這里是完整的代碼實現,結合代碼和注釋,基本可以理解。
# -*- coding: utf-8 -*-
#導入需要用到的庫
import wave
import pyaudio
import webbrowser
import os,time
#從aip庫中導入AipSpeech接口
from aip import AipSpeech
#自己申請的APP_ID和KEY
APP_ID='11483452'
API_KEY='aaKCmDdZDkKUU9McEi1ePmAN'
SECRET_KEY='hrhoBeoE1PF3C9B4013no2tkSmx9L5Xb'
#初始化AipSpeech對象
aipSpeech=AipSpeech(APP_ID, API_KEY, SECRET_KEY)
CHUNK=1024
FORMAT=pyaudio.paInt16
RATE=8000
CHANNELS=1
RECORD_SECONDS=5
RECORDED_AUDIO_FILE="temp_audio.wav"
def recoard_audio():
"""
通過pyaudio記錄一個5秒的音頻文件
"""
p=pyaudio.PyAudio()
stream=p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording will stat")
print("3")
time.sleep(1)
print("2")
time.sleep(1)
print("1")
time.sleep(1)
print("Go")
frames=[]
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data=stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf=wave.open(RECORDED_AUDIO_FILE, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
def handle_command(command):
"""
根據命令字符串執行對應的操作
"""
if command is None:
return
elif '打開百度'==command:
print("正在打開百度")
webbrowser.open_new_tab("baidu.com")
elif '打開郵箱'==command:
print("正在打開郵箱")
os.system(r'"C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE"')
else:
#默認處理
print("不知道您想讓我做什么")
webbrowser.open("yonggangliu.com")
def get_file_content(filePath):
"""
獲取文件的內容,這里是音頻文件,其他文件也通用
"""
with open(filePath, 'rb') as fp:
return fp.read()
def convert_audio_to_string_via_ai():
"""
通過aipSpeech來解析音頻文件,得到語音對應的文字內容
"""
text=''
audio_content=get_file_content(RECORDED_AUDIO_FILE)
res=aipSpeech.asr(audio_content, 'wav', RATE, { 'lan': 'zh',})
if res['err_no'] !=0:
print("Please speak again")
elif 'result' in res:
#API返回的字符串是以。結尾的,所以這里去掉結尾的句號
text=res['result'][0][:-1]
else:
pass
return text
if __name__=="__main__":
while True:
recoard_audio()
command_str=convert_audio_to_string_via_ai()
print(command_str)
if command_str in ['退出', '結束']:
print("程序結束")
break
if len(command_str) > 0:
handle_command(command_str)
讀者可以在此基礎上編寫出自己的聲控程序。天馬行空,任意發揮。
我們的程序編寫好了,也運行良好,能解決我們的問題。現在如果想把它分享給我們親愛的其他同事,我們該怎么做呢?最好是將它打包為EXE文件,否則使用的人也需要安裝Python,且必須安裝所有的依賴庫,似乎太麻煩了,沒等聽您解釋完就不想用了。因此,我們需要將Python代碼進行打包,生成exe進行方便使用。
這里我們同時也提供了打包為EXE的代碼。由于我們使用pyinstaller進行打包,所以需要提前安裝。當然安裝也很簡單,使用pip命令就可以安裝。
pip install pyinstaller
安裝成功后我們就可以通過下面的代碼進行打包了。
接下來,將Python代碼轉換為exe程序,我們使用的是pyinstaller,具體的轉換代碼我實現為python代碼。只需要執行下面的Python代碼,就會調用pyinstaller生成一個單獨的exe文件。這種形式的優點是只有一個exe文件,其他所有的依賴的Python環境文件都被打包在該exe文件中。而缺點就是由此導致該文件比較大,而且每次執行都相當于有一個解壓到臨時目錄的過程,所以執行比較慢。
import os, shutil
from subprocess import Popen
if os.path.exists('dist'):
shutil.rmtree("dist")
if os.path.exists('build'):
shutil.rmtree("build")
if os.path.exists('__pycache__'):
shutil.rmtree("__pycache__")
handle=Popen("pyinstaller -F -w --add-data res;res -i res/bit.ico control-pc-via-voice.py")
handle.wait()
shutil.copyfile("dist/control-pc-via-voice.exe", "./control-pc-via-voice.exe")
shutil.rmtree("dist")
shutil.rmtree("build")
shutil.rmtree("__pycache__")
個人推薦將其打包為目錄,而不是單個exe文件。這樣的好處就是不需要每次執行都進行解壓到臨時目錄,而是直接在同目錄下調用執行,因此比較快。下面就是將Python文件打包為目錄的代碼,跟上面有區別,其中一個打包參數為-D。下面的腳本生成的目錄dist中,會有相應的exe文件,可以直接雙擊運行。
import os, shutil
from subprocess import Popen
if os.path.exists('dist'):
shutil.rmtree("dist")
if os.path.exists('build'):
shutil.rmtree("build")
if os.path.exists('__pycache__'):
shutil.rmtree("__pycache__")
handle=Popen("pyinstaller -D -w --add-data res;res -i res/bit.ico control-pc-via-voice.py")
handle.wait()
而為了更方便,我們這里會介紹如何將該目錄打包為安裝文件,這樣在給別人用的時候,只需要給一個安裝文件。用戶拿到該安裝文件后,安裝上之后就可以使用了,且使用感受更好。我們這里介紹一個將目錄打包為安裝文件的工具程序。該工具程序名為Inno Setup,是一個免費的工具軟件,網站主頁如下圖14-3所示。可以點擊Download Inno Setup鏈接進行下載,詳細信息可以登陸網站()進行了解。
圖14-3 Inno Setup主頁
這里,我們可以按照Inno Setup的引導來創建普通的程序安裝文件,創建完成后會生成內容如下所示的iss文件。當然,如果我們提前有該文件的話,可以直接用Inno Setup程序直接打開該文件,執行編譯來生成安裝文件。
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "control-pc-via-voice"
#define MyAppVersion "2.2"
#define MyAppPublisher "ggang.liu, Inc."
#define MyAppExeName "control-pc-via-voice.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{F3D8DE4F-EA0D-47E7-AFBC-7FE7A8EAD8D3}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
UsedUserAreasWarning=no
InfoAfterFile=C:\control-pc-via-voice\release\README.md
; Remove the following line to run in administrative install mode (install for all users.)
PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
OutputDir=C:\control-pc-via-voice\release
OutputBaseFilename=control-pc-via-voice-setup
SetupIconFile=C:\control-pc-via-voice\res\bt.ico
Password=dot
Compression=lzma
SolidCompression=yes
WizardStyle=modern
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
[Files]
Source: "C:\control-pc-via-voice\dist\control-pc-via-voice\control-pc-via-voice.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\control-pc-via-voice\dist\control-pc-via-voice\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
這里會打包生成的安裝文件是一個exe文件,我們雙擊執行安裝時會出現類似圖14-4所示的安裝界面,可以看出是一個很常見的程序安裝界面,跟其他程序安裝沒有什么區別,看起來更專業。
圖14-4 服務程序安裝界面
到這里,程序的打包安裝就介紹完畢,具體選擇哪種方式進行打包,可以根據具體情況而定。試著為自己的程序進行打包并安裝,讓我們的小工具的安裝使用足夠專業和易用。
在本章的學習中,我們了解到了語音控制系統的基本原理,那就是先錄音,然后將聲音文件轉換為字符串,最后基于字符串執行具體的操作。在這個過程中我們用到了百度的語音AI,當然有能力的讀者也可以使用阿里云或其他類似的系統。PyAudio模塊也為我們打開了一扇語音I/O的窗戶,至少我們知道有這么個模塊可以操作音頻設備。Wave模塊可以處理音頻文件。Webbrowser模塊可以通過瀏覽器打開某鏈接。當然我們這里用的都是最基本的功能,有興趣的同學可以做進一步深入的學習。
歡迎關注,轉發,收藏,謝謝[摳鼻]
Python實用案例編程入門:第一章 Python概述及為什么學Python
Python實用案例編程入門:第二章 字符串
Python實用案例編程入門:第三章 列表和元組
Python實用案例編程入門:第四章 字典和文件
Python實用案例編程入門:第五章 函數和類
Python實用案例編程入門:第七章 調式手段
Python實用案例編程入門:第六章 控制流語句
Python實用案例編程入門:第九章 爬蟲下載VOA每日廣播英語MP3
Python實用案例編程入門:第十章 用Python處理音頻文件
Python實用案例編程入門:第十一章 做一個年會抽獎程序
Python實用案例編程入門:第十二章 測試線預訂程序
Python實用案例編程入門:第八章 如何自動連接WIFI
Python實用案例編程入門:第十三章 自動收發電子郵件,遠程控制