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