本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種基于NodeJS的智能家居語音控制系統(tǒng)。
背景技術(shù):
智能家居在實(shí)現(xiàn)高效便捷的基礎(chǔ)上,被賦予語音控制的功能,這無疑會(huì)使得智能家居有一個(gè)更大的發(fā)展空間和更廣闊的平臺(tái)。
隨著NodeJS的不斷發(fā)展,NodeJS漸漸演變成一種構(gòu)建網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)框架,并發(fā)展為一個(gè)不共享任何資源的單線程、單進(jìn)程系統(tǒng)。NodeJS包含了很適合網(wǎng)絡(luò)的庫,這樣NodeJS就為構(gòu)建大型分布式應(yīng)用提供了基礎(chǔ)設(shè)施。它的目標(biāo)都是為了構(gòu)建快速、可伸縮的網(wǎng)絡(luò)應(yīng)用平臺(tái)。它自身非常簡單、采用通信協(xié)議來組織許多的Node,非常容易通過拓展來達(dá)成構(gòu)建大型網(wǎng)絡(luò)應(yīng)用的目的。NodeJS是谷歌V8引擎、libuv平臺(tái)抽象層以及主體使用Javscript編寫的核心庫三者集合的一個(gè)包裝外殼。對(duì)性能的苛求是Node的一個(gè)關(guān)鍵因素。Javascript是一個(gè)事件驅(qū)動(dòng)語言,Node利用了這個(gè)優(yōu)點(diǎn),編寫出可擴(kuò)展性高的服務(wù)器。NodeJS采用事件驅(qū)動(dòng)、異步編程,為網(wǎng)絡(luò)服務(wù)而設(shè)計(jì)。NodeJS非阻塞模式的IO處理給NodeJS帶來在相對(duì)低系統(tǒng)資源耗用下的高性能與出眾的負(fù)載能力。
NodeJS具有以下幾個(gè)特點(diǎn):
1)它是一個(gè)Javascript運(yùn)行環(huán)境。NodeJS是服務(wù)器端的JavaScript運(yùn)行環(huán)境,NodeJS是一套用來編寫高性能網(wǎng)絡(luò)服務(wù)器的JavaScript工具包。
2)依賴于v8引擎進(jìn)行代碼解釋。v8對(duì)JS的解析不是基于反復(fù)loop源代碼進(jìn)行解釋而是直接將JS代碼編譯成機(jī)器碼運(yùn)行。
3)事件驅(qū)動(dòng)機(jī)制。事件由事件處理器或事件回調(diào)來處理,事件回調(diào)是當(dāng)某個(gè)特定事件發(fā)生時(shí)被調(diào)用的函數(shù)。
4)非阻塞l/O。l/O操作不會(huì)阻塞程序的執(zhí)行,也就是在l/O操作的同時(shí),繼續(xù)執(zhí)行其他代碼。
5)輕量、可伸縮,適于實(shí)時(shí)數(shù)據(jù)交互應(yīng)用。NodeJS在實(shí)時(shí)的Web應(yīng)用上采用了基于WebSocket的推送技術(shù)。
6)單進(jìn)程,單線程。不管有多么的強(qiáng)大硬件,只能利用到單個(gè)CPU進(jìn)行計(jì)算。NodeJS代碼,是在單線程的環(huán)境中執(zhí)行,但NodeJS本身不是單線程的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于NodeJS的智能家居語音控制系統(tǒng)。
本發(fā)明的目的可以通過以下技術(shù)方案實(shí)現(xiàn):
一種基于NodeJS的智能家居語音控制系統(tǒng),包括數(shù)據(jù)模塊、云端識(shí)別模塊、項(xiàng)目產(chǎn)品化模塊;
所述的數(shù)據(jù)模塊,用于實(shí)現(xiàn)語音數(shù)據(jù)的接收、保存和刪除;
所述的云端識(shí)別模塊,用于對(duì)訊飛語音的參數(shù)配置提供識(shí)別權(quán)限,進(jìn)行訊飛語音云端識(shí)別權(quán)限、語音識(shí)別相關(guān)參數(shù)的設(shè)置,以及NodeJS的http請(qǐng)求實(shí)現(xiàn);
所述的項(xiàng)目產(chǎn)品化模塊,用于崩潰日志和系統(tǒng)運(yùn)行日志的記錄,對(duì)系統(tǒng)運(yùn)行出錯(cuò)時(shí)進(jìn)行系統(tǒng)崩潰處理和系統(tǒng)的內(nèi)存控制。
進(jìn)一步地,所述的項(xiàng)目產(chǎn)品化模塊包括工作日志和內(nèi)存監(jiān)控子模塊,進(jìn)程守護(hù)子模塊和異常捕獲子模塊;
所述的工作日志和內(nèi)存監(jiān)控子模塊,采用一個(gè)常用的第三方包Log4js,引入Log4js模塊,最后在需要記錄重要信息的時(shí)候,使用Log4js模塊把工作日志記錄到本地文件夾;
所述的進(jìn)程守護(hù)子模塊,采用NodeJS的服務(wù)器管理模塊forever,能夠啟動(dòng)、停止、重啟App應(yīng)用;
所述的異常捕獲子模塊,采用模塊domain,捕捉異步回調(diào)中出現(xiàn)的異常,把處理多個(gè)不同的JO的操作作為一個(gè)組,注冊(cè)事件和回調(diào)到domain,當(dāng)發(fā)生一個(gè)錯(cuò)誤事件或拋出一個(gè)錯(cuò)誤時(shí),domain對(duì)象會(huì)被通知,不會(huì)丟失上下文環(huán)境,也不導(dǎo)致程序錯(cuò)誤立即推出。
本發(fā)明的有益效果:
本發(fā)明所提供的一種基于NodeJS的智能家居語音控制系統(tǒng),實(shí)現(xiàn)了基于NodeJS的智能家居語音控制系統(tǒng)服務(wù)器端總體結(jié)構(gòu)、技術(shù)手段和主要功能模塊。服務(wù)器端主要實(shí)現(xiàn)實(shí)時(shí)語音識(shí)別,通過把接收的語音數(shù)據(jù)發(fā)送給訊飛語音云端識(shí)別,把識(shí)別結(jié)果返回給客戶端。此外,NodeJS采用事件驅(qū)動(dòng)、異步編程,其突出的優(yōu)點(diǎn)使得程序能夠?qū)崿F(xiàn)高并發(fā)處理。NodeJS非阻塞模式的J0處理給NodeJS帶來在相對(duì)低系統(tǒng)資源耗用下的高性能與出眾的負(fù)載能力。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1是本發(fā)明的系統(tǒng)示意圖;
具體實(shí)施方式
本發(fā)明的核心是提供一種基于NodeJS的智能家居語音控制系統(tǒng)。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明提供了一種基于NodeJS的智能家居語音控制系統(tǒng),包括數(shù)據(jù)模塊、云端識(shí)別模塊和項(xiàng)目產(chǎn)品化模塊。
所述的數(shù)據(jù)模塊,用于語音數(shù)據(jù)的接收、保存和刪除。
所述的云端識(shí)別模塊,用于對(duì)訊飛語音的參數(shù)配置提供識(shí)別權(quán)限,主要用于配置訊飛語音云端識(shí)別權(quán)限、語音識(shí)別相關(guān)參數(shù)的設(shè)置,以及NodeJS的http請(qǐng)求實(shí)現(xiàn);Http協(xié)議是一個(gè)通用的應(yīng)用層協(xié)議,NodeJS作為一個(gè)宿主運(yùn)行環(huán)境,以JavaScript為宿主語言,它也有自己實(shí)現(xiàn)的一套標(biāo)準(zhǔn);NodeJS通過require引入http模塊,并調(diào)用相關(guān)接IZl函數(shù)。NodeJS請(qǐng)求的是事先寫好的用于設(shè)置語音識(shí)別參數(shù)和提供語音識(shí)別權(quán)限的php文件,該php采用utf一8無BOM編碼;使用訊飛語音識(shí)別時(shí),需要提供產(chǎn)品的apiKey和secretKey,云端審核通過后,返回結(jié)果。只有在審核通過后,語音文件才可以得到識(shí)別;此外,需要提交語音數(shù)據(jù)的編碼;由于單片機(jī)客戶端的數(shù)據(jù)處理能力有限,語音數(shù)據(jù)經(jīng)過壓縮并編碼為Speex格式后,才上傳到訊飛語音云端,訊飛語音要求需要識(shí)別的語音數(shù)據(jù)為8000采樣率、單聲道、16比特。
所述的項(xiàng)目產(chǎn)品化模塊,用于崩潰日志和系統(tǒng)運(yùn)行日志的記錄,對(duì)系統(tǒng)運(yùn)行出錯(cuò)時(shí)進(jìn)行系統(tǒng)崩潰處理和系統(tǒng)的內(nèi)存控制,其包括工作日志和內(nèi)存監(jiān)控子模塊,進(jìn)程守護(hù)子模塊和異常捕獲子模塊。
所述的工作日志和內(nèi)存監(jiān)控子模塊,采用一個(gè)常用的第三方包Log4js,引入Log4js模塊,最后在需要記錄重要信息的時(shí)候,使用Log4js模塊把工作日志記錄到本地文件夾;
所述的進(jìn)程守護(hù)子模塊,采用NodeJS的服務(wù)器管理模塊forever,能夠啟動(dòng)、停止、重啟App應(yīng)用;
所述的異常捕獲子模塊,采用模塊domain,捕捉異步回調(diào)中出現(xiàn)的異常,把處理多個(gè)不同的JO的操作作為一個(gè)組,注冊(cè)事件和回調(diào)到domain,當(dāng)發(fā)生一個(gè)錯(cuò)誤事件或拋出一個(gè)錯(cuò)誤時(shí),domain對(duì)象會(huì)被通知,不會(huì)丟失上下文環(huán)境,也不導(dǎo)致程序錯(cuò)誤立即推出。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元、模塊分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元、模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施方式或者實(shí)施方式的某些部分所述的方法。
以上所描述的裝置實(shí)施方式僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施方式方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
以上內(nèi)容僅僅是對(duì)本發(fā)明結(jié)構(gòu)所作的舉例和說明,所屬本技術(shù)領(lǐng)域的技術(shù)人員對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,只要不偏離發(fā)明的結(jié)構(gòu)或者超越本權(quán)利要求書所定義的范圍,均應(yīng)屬于本發(fā)明的保護(hù)范圍。