語音識別控制設計之聲控小汽車的實現

2021-10-25 07:33:04 字數 2674 閱讀 2331

本文主要論述了如何用spce061a實現對非特定人語音的辨識,如何用spc81a實現對汽車的驅動控制,以及兩款微控制器之間無線通訊的實現。

方案設計與論證

本系統為典型的實時控制系統,下面對系統的實現方案進行論證。

語音辨識方案:本設計中採用具有dsp處理功能的凌陽16位微控制器spce061a實現語音辨識功能。由於spce061a具有a/d、d/a轉換介面,可以方便用於各種資料的採集、處理和控制輸出。a/d、d/a轉換介面與spce061a的dsp運算功能結合在一起,可實現語音辨識功能。

通訊方案:通訊方式可用無線或紅外光方式,紅外光方式適合於近距離通訊,電路較簡單;無線方式通訊距離較遠,但電路複雜。考慮到汽車處於被控中(距離較遠),選擇無線作為載波來傳送資訊。

電機驅動方案:本系統在電機的驅動部分利用8050、8550等不同三極體的組合,構造一座「橋」。該橋的優點是原理簡單、易控制、帶負載能力強。在微控制器的配合下,通過pwm的方法,實現了對驅動電機的輕鬆控速。

電源供電方案:採用雙電源供電消除電機運轉產生的干擾,保證微控制器正常工作。在電機驅動部分,為了保證兩組驅動電路都有較大的驅動電流,採用兩組電池併聯供電。

系統框圖及工作原理

系統的組成框圖如圖1所示, 通過麥克風輸入口輸入。spce061a的自動增益放大器把訊號轉換為適合微控制器處理的訊號範圍。然後微控制器對送來的訊號進行分析、運算、處理、比較,識別出相應的命令。按照編碼,把控制碼序列從pa.0埠通過rf傳送模組序列傳送出去,並有相應的語音播報。spc81a從pb.0接收到訊號,通過檢測比較判斷出相應的命令。然後從c埠的低四位發出相應的控制訊號,控制電機轉動並有相應的音效輸出。

系統硬體設計及原理分析

語音辨識部分

該部分也即為spce061a的外接電路部分。語音辨識主要是通過軟體來實現,所以硬體電路主要是使spce061a晶元能正常工作所必需的電源、晶振以及麥克風和音訊驅動電路。控制碼序列的傳送是通過ioa0序列傳送(外接rf傳送模組)。

電機驅動控制部分

本系統的小車電機驅動控制部分利用8050、8550等不同的三極體組合成橋式電路,實現對驅動電機的控制,具體電路如圖2所示。控制過程如下:

當pc.0/pc.2為高電平,pc.1/pc.3為低電平時,則q1、q2、q3導通,q4、q5、q6截止。其中q1為激勵級,q2、q3為功放級。電流從vcc經q2到電機「+」端,再到「-」端,最後經q3入地,電機正轉;當 pc.0/pc.2為低電平,pc.1/pc.3為高電平時,則電機反轉;當都為低電平時,電機停轉。注意:不能讓兩個輸出口都為高電平,這樣會使q1、q2、q3、q4、q5、q6都處於導通狀態。會在功放級產生大電流致使**管超過額定功率,從而導致發熱甚至燒壞。

在速度控制方面,一般是通過改變加在電機兩端的電壓來實現的。可以連續改變(加直流電壓),也可以是斷續改變(加脈衝電壓)。為了簡單實用,本設計採用了脈寬調速,軟體調整。

脈衝頻率對電機轉速也有影響,脈衝頻率高則連續性好,但帶負載能力差,頻率低則反之。經實驗發現,脈衝頻率在15~20hz效果最佳。

脈寬調速實質上是調節加在電機兩端的平均功率,通過計算可發現小車的速度與脈寬成正比。

車載部分

語音功能

凌陽微控制器自帶雙通道dac音訊輸出,dac1、dac2轉換輸出的模擬量電流訊號分別通過aud1和aud2管腳輸出。dac輸出為電流型輸出,經三極體音訊放大,即可驅動喇叭放音。

系統軟體設計

本系統軟體分為兩個部分,包括手持語音辨識遙控系統的軟體部分和車載驅動控制系統的軟體部分。

手持語音辨識遙控系統的軟體設計

主模組主模組主要是控制整個系統程式的流程。系統上電後進行一系列的初始化,然後發出提示音「anybody here」,這時辨識可以開始,根據不同的辨識結果執行不同的動作。主模組的流程圖如圖4所示。

資料傳送子程式

本設計的資料傳送採用序列傳送機制,從埠ioa0口傳送(外接rf傳送模組)。每個語音命令用八位碼元表示,在傳送時,還要外加一位起始位和一位結束位。起始位用8ms的低電平表示;結束位用8ms的高電平表示。碼元「1」用占空比為1/4的高低電平表示;碼元「0」用占空比為1/2的高低電平表示。為保證資料被正確的收發,將每個語音命令連續傳送10次。資料傳送程式包括資料傳送主程式、開始/結束位傳送子程式、資料位傳送子程式、碼元「1」傳送子程式、碼元「0」傳送子程式。

車載驅動控制系統的軟體設計

此部分的軟體系統主要是通過rf接收模組接收相應的控制訊號,根據相應的控制碼序列通過ioc口的低四位口,對電機發出相應的驅動訊號,並同時帶有相應的音效輸出。此部分系統的軟體設計包括主控程式設計、資料接收程式設計等。

主控程式設計

主控部分主要是判斷資料接收是否完成,如果接收完成,就判斷此命令是哪乙個命令,根據相應的命令執行相應的操作和音效輸出。

中斷服務主程式

中斷服務主程式主要判斷是哪乙個中斷,然後完成相應的中斷服務,最後返回。

資料接收程式

資料接收主要是通過4khz的中斷不斷地檢測輸入埠的狀態,然後根據相應的狀態值執行相應的操作。為保證能接收到資料,將每一電平長度的持續時間規定在一定範圍內。

結語本設計中也存在著一些不足,在通訊部分,由於只有8個命令,所以可以只用三個碼元表示,這樣可以提高傳輸效率,如果採用糾錯編碼機制進行收發,就可以提高正確性。這些都是可以改進的地方。

語音識別控制遊戲

跟語音識別差不多,只是把所作的命令轉化為api對鍵盤的操作 from win32com.client import constants import os import win32api import win32con import time import win32com.client impor...

小程式語音識別介面

wxml頁面 長按說話 wxss頁面.voice button pic img pic text js頁面 語音功能 這個是監聽語音識別的方法,只要寫了bindtouchstart和bindtouchend對應的方法就可自動觸發,需注意的是,最好寫var that this 因為會發生指向問題,從而...

離線語音控制並不等於本地語音識別

木瓜電子可以為國內各大家電產商提供離線語音控制的模組和晶元產品,但是沒有本地語音識別的方案。這兩者區別的地方是什麼呢?針對家電產品控制進行解釋一些這兩者之前的區別。離線語音控制,木瓜電子提供的離線語音控制模組和晶元,很明確這些語音產品的是適合應用在控制家電等裝置的,不需要連線網路進行語音識別,說出命...