python3语音识别模块_零基础教你玩转语音控制,学习语音控制技术,打造智能生活很简单...
大家好,我是阿樂,今天給大家講解一下LD3320語音識(shí)別模塊。
先來看看模塊實(shí)物,它是長這個(gè)樣子的:
LD3320語音識(shí)別模塊實(shí)物
我現(xiàn)在用來給大家做講解的這個(gè)模塊是已經(jīng)集成了單片機(jī)在上面,這樣子開發(fā)起來就更簡單一些,不用移植程序,直接在例程里改關(guān)鍵詞,然后編譯上傳就可以了。
在模塊背后黑色大大那塊就是單片機(jī)啦,它是STC11的單片機(jī):
模塊背面的STC單片機(jī)
在模塊正面,有個(gè)小小的很多腳的那個(gè)就是LD3320芯片了,就是圖中紅色圈圈中的那個(gè):
看看單芯片的樣子:
LD3320是一顆基于非特定人語音識(shí)別(SI-ASR:Speaker-Independent Automatic Speech Recognition)技術(shù)的語音識(shí)別芯片,或者說是語音聲控芯片。
在這里給大家講講什么是非特定人語音識(shí)別。通俗點(diǎn)講就是不用針對(duì)指定發(fā)音人的識(shí)別技術(shù),這種語音識(shí)別技術(shù)不分年齡、性別,只要發(fā)音人說的是相同的語言就可以識(shí)別。再說得簡單點(diǎn),就是說只要是拼音可以拼出的發(fā)音,都是可以輸入芯片進(jìn)行識(shí)別的。
這個(gè)語音識(shí)別模塊它不是智能的,不是說我們問它什么它就可以回答什么,它不像我們手機(jī)上的語音助手比如小愛或者Siri那樣,能跟我們對(duì)答如流。這個(gè)模塊能識(shí)別的內(nèi)容,是需要我們提前設(shè)定好的,我們把要識(shí)別的關(guān)鍵詞語列好,然后把這些關(guān)鍵詞語以字符的形式傳送到 LD3320 內(nèi)部,這樣才可以對(duì)用戶說出的關(guān)鍵詞語進(jìn)行識(shí)別,而且在同一時(shí)刻,它最多是在50條關(guān)鍵詞語中進(jìn)行識(shí)別。
這個(gè)模塊雖然不是智能的,但是它開發(fā)起來簡單呀,價(jià)格也不算貴,而且它可以在識(shí)別到關(guān)鍵詞后直接從IO口輸出高低電平,或者從串口打印出數(shù)據(jù)。這就很好玩啦,我們可以用它來控制各種家電,控制小車,用來傳輸命令等,還是非常有意思的。
這個(gè)模塊有三個(gè)工作模式:1、普通模式;2、口令模式;3、按鍵觸發(fā)模式。不同的工作模式可以通過程序編程來實(shí)現(xiàn)。
普通模式就是模塊工作時(shí),我們直接說話,模塊直接識(shí)別。
口令模式就是模塊工作時(shí),我們先要說出一個(gè)一級(jí)口令,比如“芝麻開門”,模塊在識(shí)別到正確的一級(jí)口令后才進(jìn)行下一級(jí)的識(shí)別。
按鍵觸發(fā)模式就是模塊工作時(shí),我們?cè)谶M(jìn)行語音識(shí)別之前,需要先按一下按鍵,接下來才能進(jìn)行下一步的識(shí)別。
這三個(gè)模式我覺得口令模式比較實(shí)用,接下來講講用口令模式去控制IO口高低電平的變化,進(jìn)而去控制一個(gè)繼電器的閉合與斷開。
看到下圖中這個(gè)語音識(shí)別模塊的圖片,紅色框框中的引腳就是我們可以用的IO,豎著那一排由下而上標(biāo)著P10~P17有八個(gè),橫著那一排從左往右是P34、P33,P23~P27,P41,也有8個(gè),這樣我們可以用的IO口就有16個(gè)啦,這16個(gè)IO口可以用來控制繼電器,LED,或者接單片機(jī)的IO口。
上圖中,最左邊由下而上標(biāo)著5V,GND,TX,RX的四個(gè)引腳就是用來給模塊下載程序的地方,串口就在這里了。我們通過串口給其它模塊或者單片機(jī)發(fā)數(shù)據(jù)也是從這里接。
好,接下來我們就直接用這個(gè)P10引腳來控制繼電器吧,這個(gè)模塊輸出的是3.3V的TTL電平,就算是用5V的繼電器也不能直接控制,我們就給它加個(gè)三極管,然后再通過三極管來控制繼電器。
畫出這個(gè)電路圖如下圖:
電路中,語音識(shí)別模塊的P10引腳出來直接接一個(gè)200Ω的電阻,電阻的另一頭接到9013NPN三極管的基極,9013三極管發(fā)射極接地,接電源負(fù)極,集電極接1N4148二極管的正極和繼電器的一個(gè)控制引腳,繼電器的另一個(gè)控制引腳接到+5V電源。這樣子當(dāng)P10端口輸出高電平時(shí),三極管導(dǎo)通,繼電器吸合;當(dāng)P10端口輸出低電平時(shí),三極管截止,繼電器斷開。我們就可以通過繼電器去控制各種家電了。在電路圖中,我是讓繼電器控制一盞220V的燈。電路圖中1N4148二極管和繼電器并接,而且是將二極管的負(fù)極接到電源正極,二極管在這里起到續(xù)流的作用,可以保護(hù)三極管。
如下圖是我根據(jù)這個(gè)電路圖焊好的繼電器模塊,順便給這個(gè)語音識(shí)別模塊做了個(gè)底座,只要把語音識(shí)別模塊安到底座上,就可以通過底座給語音模塊供電,也把P10口和繼電器電路的控制端口接在一起了。
好,接下來就是程序編程了,示例程序很多看起來很復(fù)雜,如果只是做簡單的開發(fā),我們沒必要把每個(gè)細(xì)節(jié)全部弄懂,我們只要知道修改識(shí)別關(guān)鍵詞的地方在哪就得了。
如下圖,在左邊工程欄里找到“LDChip.C”這個(gè)文件,雙擊打開:
在 LDChip.C (下圖中紅色圈圈1)文件中下滑找到274行“uint8 LD_AsrAddFixed() ”這個(gè)函數(shù),函數(shù)中,278,279這兩行有兩個(gè)數(shù)組,DATE_A 和DATE_B,后面跟著數(shù)字,這個(gè)DATE_A后面的數(shù)字表示的是關(guān)鍵詞的個(gè)數(shù),而DATE_B后面的數(shù)字表示的是這些關(guān)鍵詞中最長一句的長度。我們將要添加三個(gè)關(guān)鍵詞命令:“芝麻開門”,“打開繼電器”,“關(guān)閉繼電器”,所以DATE_A 后面跟著個(gè)3;而這三個(gè)命令的拼音中,包含空格,長度最長的是“guan bi ji dian qi”,有18個(gè),所以DATE_B后面跟著18,如圖中的紅色圈圈2。
再看到280~284行,這里邊就是添加關(guān)鍵詞拼音的地方啦,我們要在這里輸入要識(shí)別的命令的拼音,比如一級(jí)口令是:“芝麻開門”,二級(jí)口令是:“打開繼電器”,“關(guān)閉繼電器” ,如圖中的紅色圈圈3。
285~289的這個(gè)數(shù)組是識(shí)別碼數(shù)組(上圖中的紅色圈圈4),所添加的識(shí)別碼為預(yù)先定義好的宏定義常量值,同時(shí)必須和關(guān)鍵詞一一對(duì)應(yīng)。圖中取每個(gè)關(guān)鍵詞命令的拼音首字母大寫,格式是“CODE_拼音首字母大寫”。如“芝麻開門”就是“CODE_ZMKM”。
好,接下來去定義識(shí)別碼,這些東西我們要先定義才能使用,如下圖,在左邊工程欄(圖中紅色圈圈1)找到并雙擊打開LDChip.h 這個(gè)文件,下滑找到第40行,看到#define這一堆這里(圖中紅色圈圈2),這里就是添加和修改識(shí)別碼的地方,我們可以根據(jù)自己的需要和喜好任意定義識(shí)別碼和宏名,但必須和剛才前面所使用的識(shí)別碼配對(duì),否則會(huì)提示未定義錯(cuò)誤。識(shí)別碼后面的數(shù)字字母不用理它,如果增加識(shí)別的關(guān)鍵詞的個(gè)數(shù),按順序往下增大就可以,如“0x03,0x04”等。
好,最后們要修改處理函數(shù),就是說當(dāng)模塊識(shí)別到我們的命令了,需要做什么,是從哪個(gè)IO口輸出高電平還是低電平,這就是在處理函數(shù)這里實(shí)現(xiàn)了。如下圖,在左邊工程欄(圖中紅色圈圈1)找到并雙擊打開main.c函數(shù),然后下滑找到 202行“void User_handle(uint8 dat)”這個(gè)函數(shù)(圖中紅色圈圈2),在這個(gè)函數(shù)中可以根據(jù)自己的使用情況在相對(duì)應(yīng)的識(shí)別碼后添加識(shí)別成功后的操作。
上圖中,紅色方框3中框起來的就是當(dāng)模塊識(shí)別到“打開繼電器”這個(gè)命令后執(zhí)行的程序,令“PA1=1”,也就是讓PA1輸出一個(gè)高電平,而PA1在主程序前邊已經(jīng)定義好,PA1=P10,所以就是讓P10引腳輸出一個(gè)高電平,這時(shí)候三極管導(dǎo)通,繼電器就會(huì)吸合。
同理,紅色方框4中框起來的就是當(dāng)模塊識(shí)別到“關(guān)閉繼電器”這個(gè)命令后執(zhí)行的程序,令“PA1=0”,也就是讓PA1輸出一個(gè)低電平,而PA1在主程序前邊已經(jīng)定義好,PA1=P10,所以就是讓P10引腳輸出一個(gè)低電平,這時(shí)候三極管截止,繼電器就會(huì)斷開。
下圖就是在主程序前邊定義的PA1,“sbit PA1=P1^0”就是令P1^0=PA1,這樣子PA1代表的就是P1^0端口。紅色框框中的都是定義好的端口,我們后面用到這些時(shí)可以直接用,無需再去定義。
好,到這一步為止,就完成了整個(gè)程序的修改,接下來重建工程完成編譯,生成HEX文件,再通過USB下載器把HEX文件下載到模塊上就可以了。
最后的效果演示大家看下面的視頻吧,看視頻比較直觀。在視頻中有整個(gè)制作過程的詳細(xì)教程,大家可以根據(jù)視頻教程來學(xué)習(xí)、制作。開發(fā)制作這個(gè)作品要求大家有一定的單片機(jī)編程基礎(chǔ),起碼懂得安裝編程軟件,懂得軟件的基本操作,懂得修改代碼,懂得給51單片機(jī)下程序,就這幾樣,如果會(huì)這幾樣,做起來也不難。
點(diǎn)擊這里觀看詳細(xì)視頻教程
哈哈,最后祝大家制作成功,玩得愉快,更多精彩內(nèi)容歡迎關(guān)注頭條號(hào):創(chuàng)客e工坊,下期見,拜拜~
總結(jié)
以上是生活随笔為你收集整理的python3语音识别模块_零基础教你玩转语音控制,学习语音控制技术,打造智能生活很简单...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑内存超频测试(怎么测试内存超频是否稳
- 下一篇: python绘制直方图显示数字_pyth