LD3320結合MP3模塊加入語音交互功能,實現人和機器交流對話

2021-01-09 創客e工坊

大家好,我是阿樂。

今天教大家給LD3320語音識別模塊加上語音交互的功能。

上節課已經教大家將LD3320語音識別模塊使用起來了,但是使用的時候是我們單方面說出命令,機器識別後並沒有給我們一些視覺上或者聽覺上的應答反饋,總覺得缺少點什麼,所以今天我就教大家給語音識別模塊加上語音交互的功能,我們問一句,模塊答一句,這樣多有意思,這也使得這個機器更加人性化,實用性更強。

好的,介紹一下我們今天將會用到的新模塊,就是這個東西,下圖是實物圖:

模塊型號名稱是MP3-TF-16P,別看它體積不大,功能可是很強大的。簡單來說,它就是一個音樂播放器,可以用來播放U盤、TF卡、NOR FLASH裡的MP3、WAV、WMA格式的音頻文件,同時它也可以作為電腦的音效卡,用來播放電腦的聲音。它也可以作為讀卡器,通過USB連接電腦後就可以更新TF卡裡的內容,用來更新文件。還有更關鍵的一點是,它價格很便宜,幾塊錢的東西,很是值得我們入手來開發學習。

這個小東西能用來放音樂,放廣播,它不僅支持通過按鍵來選曲、調音量,還可以通過單片機來操作,這也就是說,我們可以通過編程,通過串口來發指令,指定它什麼時候放哪首歌曲,放多大的音量,中途插不插播廣告等,根本不用我們動手,程序上就解決了。這就很有靈性了,我們上節課學習了LD3320語音識別模塊,它識別到我們的指令後可以對IO口做一系列的操作,用來輸出高低電平或者從串口發送數據,我們這樣把它倆撮合到一起,這不就成了嘛,一個具有語音交互功能的語音識別系統就這樣誕生了。

來,先來看看這個小傢伙的這些引腳都有什麼作用。看圖:

它一共有16個腳,左上角為第一個腳,是模塊的電源輸入引腳,輸入電壓範圍是3.3-5V,建議用5V供電。

第二個腳是RX,是UART 串行數據輸入。

第三個腳是TX,是UART 串行數據輸出。

第四個腳是DAC_R,是音頻輸出右聲道,可驅動耳機或者輸出音頻信號給功放。

第五個腳是DAC_L,是音頻輸出左聲道。

第六個腳是SPK2,是接小喇叭+的,可以驅動小於3W的喇叭。

第七個腳是GND,接電源負極。

第八個腳是SPK1,是接小喇叭-的。

第九個腳是IO1,是觸發口,默認上一曲(長按音量-)。

第十個腳也是GND。

第十一個腳是IO2,也是觸發口,默認下一曲(長按音量+)。

第十二個腳是ADKEY1,AD口1,當觸發時是第一段(長按循環第一段)。

第十三個腳是ADKEY2,AD口2,當觸發時是第五段(長按循環第五段)。

第十四個腳是USB+,USB+ DP,接U盤或插電腦的USB口。

第十五個腳是USB-,USB- DM,接U盤或插電腦的USB口。

最後一個是BUSY引腳,它是播放指示,有音頻播放時是輸出低電平,沒有音頻播放時是輸出高電平。

好,到這一步我們要理一下思路啦,對於命令的傳輸我們通過串口來發送,當語音識別模塊識別到我們的命令後,讓它通過串口給這個MP3模塊發送一串指令,這MP3模塊接收到指令後,就播放相對應的MP3文件,這樣不就實現了系統對我們的應答了嘛。

比如我設置這個語音識別模塊的一級口令為「創客小秘」,我叫一聲「創客小秘」,語音識別模塊識別成功後就給MP3模塊發送一個指令,指定播放一個MP3文件,而這個文件的內容是「主人,我在」,這樣就完成了一個交互的過程。

好,先把硬體連接好,我畫了個簡單的電路圖:

左邊這個是語音識別模塊,右邊的是MP3模塊,它們電源正極和地都需要接,這個不用說,然後就是數據的傳輸了,通過串口來,它們的RX和TX交叉來接,RX接TX,TX接RX,這就完成了,很簡單。當然,如果我們還要去控制家電,那就像上節課一樣通過一個三極體控制繼電器就好了。我這裡增加了一路是用來控制這個小風扇的開與關的,IO口控制三極體,然後三極體直接控制風扇。

好,接下來講講怎樣生成我們需要的MP3文件,我們先設想一下對話的過程,簡單舉五個例子吧,第一句,就是我說出一級口令,我叫一聲「創客小秘」,語音識別模塊識別成功後回我一句「主人,我在」;

第二句,我說「打開繼電器」, 語音識別模塊識別成功後回我一句「好的」,同理,我說「關閉繼電器」回我「好的」。第三句,我說「打開風扇」,回我「已開風扇」。第四句,我說「關閉風扇」,回我「已關風扇」。第五句,我說「拜拜」,回我「主人再見,很高興為您服務!」

好,下一步就是生成MP3文件了,我們需要生成的MP3文件有:1、主人,我在;2、好的;3、已開風扇;4、已關風扇;5、主人再見,很高興為您服務!

生成這些MP3文件我用的軟體是朗讀女,我們只要輸入文字,它就會合成語音,選擇想要的發音人,然後就可以直接生成MP3文件啦,非常好用。當然還有其它軟體,比如靈雲朗讀軟體、TTS語音合成工具、訊飛快讀等,大家根據自己需要來選用。

好,我們生成這些MP3文件後,把它們拷貝到TF卡裡,然後把卡插到MP3播放模塊上就可以了。

到此為止,我們硬體上的準備已經就緒,接下來要做的就是要修改程序。到這一步要跟大家說一下控制這個MP3模塊播放的指令和格式。舉個例子,指定播放一個MP3文件的指令是這樣的:7E FF 06 03 00 00 01 FE F7 EF,很長吧,我們從語音模塊通過串口給MP3模塊發這一串東西,MP3模塊收到後就知道這是要播放第一個MP3文件了,在這裡簡單說一下每個字節表示的意思:7E是起始位,固定不變的,都要有它;FF這是這個模塊的版本信息,也是固定不變的;06,指的是從上一字節開始,到後面的字節個數,也就是說,從FF開始,到06 03 00 00 01為止,一共有六個字節。然後這個03在這裡,指的是指定曲目播放,也是固定不變的。00在這裡指的是不需要反饋信息,如果是01,就是要反饋信息,這裡的反饋信息指的是MP3播放模塊反饋給語音識別模塊的信息。到這個00 01,這裡指的是歌曲序號,00是數據高字節,01是數據低字節,低字節01在這裡表示的就是播放第一首歌曲。FE和F7指的是累加和校驗,是用來給數據查錯的,最後一位EF是結束位,當接收到這一位,就說明整個數據發送完畢了。在這裡可能大家聽得比較懵逼,它設置那麼複雜的指令是為了提高數據傳輸時的準確性,大家聽不懂也沒關係,懂得有這麼一回事就得了。在這裡我們要重點關注的是03 00 00 01這四個字節,代表的就是指定播放第一首歌曲,不需要信息反饋。

好,看下面的圖片,MP3模塊官方給出的例程,在這裡我只給大家簡單介紹3個函數,首先是這個串口發送函數,就是把我們上面的這一串東西發送出去的函數,你看它最先發送出去的是起始位的7E,然後通過一個自加循環,i++,按順序的把這一串數據全部發送出去,後面EF就是結束位了。

如下圖,往下這個是求和校驗函數,為什麼要這個函數呢,它是怕數據在傳輸的過程中出錯,經過這個函數處理,配合下一個要講的函數,它就知道這個數據在傳輸的過程有沒有出錯。舉個例子,比如原先我是想傳00010001這個數據,結果數據在傳輸的過程中受到幹擾,有一位數據受到影響由0變成1了,那在接收的那一端收到的數據可能就變成了00010011了,如果沒有校驗函數去校驗,接收端就無法判斷數據的準確性,這就很容易出現大問題,所以這個函數存在的意義就在這裡了。這個函數在這裡具體是怎麼校驗的就不深入給大家講了,解釋進去又是另一片天地了。

再看到下邊的圖片,圖片上面那個是Uart_SendCMD函數,我們一起結合下面main函數裡的操作來看,如下圖:

先看下面的main函數,在main函數裡首先初始化串口寄存器,然後執行Uart_SendCMD這個函數,這個函數的括號裡有3個數據,0x03指的是播放指定的MP3文件,中間的0指的是無需反饋,0x01指的是播放第一首歌曲,這三個數據會分別賦值給上面這個函數括號裡的CMD、feedback和dat,然後大家看到上邊Uart_SendCMD函數裡邊,CMD放畫紅色橫線1的位置,feedback放畫紅色橫線2的位置,dat放畫紅色橫線3的位置,而且這個dat分高字節和低字節的,這6個字節的數據是不是就是我們剛才講過的從FF開始到01的這6個,是了吧,然後進行校驗,最後就把這些數據通過串口給發送出去了。

好,我們需要做的就是把這3個函數複製粘貼到語音識別模塊的大程序中去,進行融合,如下圖:

然後我們在語音識別程序處理函數這裡加上我們想要播放的音樂就得了,還記得我們剛才生成的MP3文件嗎?我們按順序放到TF卡裡,第一首是「主人,我在」,第二首是「好的」,第三首是「已開風扇」,第四首是「已關風扇」,第五首是「主人再見,很高興為您服務」。

來啦,如下圖:

當我們說出一級口令,識別成功後我們就調用第一首音樂,把這個函數放過來,裡面三個數據就是0x03,0,0x01,0x01在這裡指的就是播放第一首歌曲嘛,就是播放「主人我在」。

好,然後下面,如下圖:

打開繼電器關閉繼電器都是調用「好的」這個MP3文件,那我們把這個函數放過來,裡面三個數據就是0x03,0,0x02。0x02在這裡指的就是播放第二首歌曲。

同理,看下面的圖片:

當我說出「打開風扇」時,調用的就是第三首歌曲,IO口給個高電平;當我說出「關閉風扇」時,調用的就是第四首歌曲,IO口給個低電平。

看上面的圖片,最後,當我說出拜拜時,IO口不用做任何操作,只發送串口數據,調用「主人再見,很高興為您服務!」這個MP3文件,一樣的,我們把這個函數放過來,裡面三個數據就是0x03,0,0x05,後面的這個0x05在這裡指的就是播放第五首歌曲。

好的,這就完成了編程的整個過程,我們將程序編譯下載,就完成了給語音識別模塊添加語音交互的這個功能,整個過程有點繁瑣,也有點難度,需要大家有一定的基礎,在這裡主要是給大家粗略看一下開發的大致框架與過程,給大家提供一個思路,大家也可以根據自己的需求加入更好的創意和想法,還是挺好玩的一個作品。

最後附上詳細視頻教程:

好的,本期視頻就講這麼多,後面再給這個語音控制系統加一個無線傳輸數據、無線控制的功能,比如在家裡,我想在一個房間通過語音識別,去控制另一個房間的燈的開關,那就需要一個無線模塊去完成通訊了,我們先做一對一的,看進度可以的話再做一對多,不斷完善豐富我們的系統。

本期教程就到這裡了,我們下期再見,拜拜。

相關焦點

  • STM32與LD3320語音識別模塊串口交互,實現語音控制繼電器
    實現目標LD3320模塊將識別結果通過串口發送至STM32;我們繼續在上文口令模式的Demo示例程序基礎上,實現本文的目標。上文連結如下:語音識別LD3320模塊控制LED和舵機改造STC工程將識別結果以JSON字符串的形式輸出只留五句PrintCom串口輸出,對應五個命令:JSON字符串含義
  • AI語音二三事:你需要了解這些AI 語音對話技術
    機器學習以及自然語言處理技術的進步,開啟了人與人工智慧進行語音交互的可能,人們透過對話的方式獲取信息、與機器進行交互,將不再只是存在科幻情結當中。語音交互是未來的方向,而智能音箱則是語音交互落地的第一代產品。
  • 阿里智能對話交互實踐與創新
    這個時代主要建立了四種連接:第一,人和商品的連接;第二,人和人的連接;第三,人和信息的連接;第四,人和設備的連接。「連接」本身不是目的,它只是為「交互」建立了通道。在人機互動(Human-Computer Interaction)中,人通過輸入設備給機器輸入相關信號,這些信號包括語音、文本、圖像、觸控等中的一種模態或多種模態,機器通過輸出或顯示設備給人提供相關反饋信號。
  • 語音識別的痛點在哪,從交互到精準識別如何做? | 雷鋒網公開課
    AIUI作為人機智能交互界面,旨在實現人機之間交互無障礙,使人與機器之間的交流,像人與人一樣,可以通過語音、圖像、手勢等自然交互的方式,進行持續,雙向,自然地溝通。首先來看下語音喚醒,喚醒是人機互動的主要觸發方式,就像你要和一個人說話,就得首先喊一下這個人的名字,才能開始進行交流。而在交流的過程中,如果有其他人喊你呢,你也是需要響應的,需要支持持續喚醒。機器被喚醒後,就需要知道說話人的方位,這樣機器才可以做出更友好的響應,比如轉身,移動等。
  • 在AIScratch中如何實現人工智慧的語音對話功能
    在AIScratch裡我們可以識別錄音文字並且做出回答,通過識別的錄音的內容來做相應的程序處理,實現程序的一些語音交互功能,我們在AIScratch中也內置了 一個簡單語音指令系統,我們可以用語音來指揮系統做一些簡單的事情,下面給大家演示一下如何實現人工智慧的語音對話功能。
  • 智能語音交互應該如何設計?
    一、語音交互需求價值 語音交互除了幾乎不需要任何學習成本外,更有意義的是,解放了作為輸入的雙手(是不有種人類實現直立行走的偉大意義),人們可以同步開展其它任務,並且也調動了人類聽覺的感官體驗,而不用完全局限在視覺上。
  • 關於語音交互,你不得不知的技術知識
    語音交互的系統構成語音交互面臨的困難自然語言處理的關鍵技術具體場景語音交互實現的技術原理一、語音交互的構成語音交互一般包括三個模塊:語音識別 ASR(Automatic Speech Recognition),主要工作是將聲音信息轉化為文字。
  • 「會說話的人,一開口就贏了」——語音交互中的機器話術研究
    —— 戴爾·卡耐基 雷鋒網按:「與機器像和人一樣對話」大概是人類對人工智慧最初的設想,也是人類希望在人工智慧領域實現的目標。本篇文章轉載自百度人工智慧互動設計院,著重於語音交互中的機器話術研究。為了教會機器「像人一樣說話」,人們在語音識別、自然語言理解、語音合成等諸多方面進行了大量探索,但這些探索主要集中在技術維度,而對機器話術涉獵較少。 在漢語中,「術」有技藝、方法之意,話術即指說話的技藝和方法。和技術相比,話術更偏藝術和人性。賈伯斯說「只有技術是不夠的——技術與人文藝術結合、與人性結合,才能帶來讓我們內心喜愛的結果」。
  • AI語音重新定義汽車 斑馬智行自然連續對話開車聯網之先河
    近日,斑馬智行VENUS系統AI語音黑科技曝光,僅需一次喚醒,即可實現自然連續對話,並且指令可隨時打斷,內容可隨心切換,不再讓用戶感覺在與機器互動,更像是人與人之間的聊天。報告題為「語音:歡迎下一代的顛覆者」,指出語音技術將從根本上改變人和機器的關係,並預測稱鍵盤將在未來5到10年內基本上消亡,「我們不再需要打字,而是可以使用語音和手勢。」「網際網路女皇」瑪麗·米克爾(Mary Meeker)在其每年發布的《網際網路趨勢報告》中,多次強調:語音是最有效的計算輸入形式,將成為人機互動的新範式。
  • 技術貼 | AI-語音處理理論與應用
    2.機器識別到語音輸入      3.通過語音識別的模塊,將語音轉換成語言,即轉換成文本「我要訂一張從北京到杭州的機票。」      4.對話管理模塊對文本進行理解,結合上下文,生成一個動作action,這個動作決定了機器到底是確定還是不確定;比如說你沒有說機票的時間,對話管理模塊就會根據這個情況生成一個動作比如說「時間不確定」      5.語音合成模塊接收到這個動作「時間不確定」,來生成人能理解的語言,比如說「請問您要定哪一天的機票?」這樣一個文本。
  • 情感交互將成為移動交互的趨勢
    人與人進行交流時,是通過人臉表情、語音情感、帶有感情的肢體動作、文本情感信息等來感知對方的感情。因此情感交互可以從人臉表情交互、語音情感交互、肢體行為情感交互、生理信號情感識別、文本信息情感交互等方面進行探索。另外人與人的交流可以通過表情、語音、眼神、手勢等方式進行,而機器沒有人臉和軀體,那麼仿生代理(lifelike agent)將是實現情感交互的重要媒介。
  • 融入AI技術實現人機互動,百度輸入法讓打字更輕鬆
    其實不僅是硬體需要人工智慧的輔助,我們平時用到的各種應用工具,同樣需要AI的加持,從而提升用戶和應用的信息交互,例如輸入法,作為人與機器之間信息交換的工具,作為機器指令的導入手段,引入AI技術,提高人工智慧深度勢在必行。
  • 語音交互丨要把語音搜索放APP,攏共分幾步?
    若想為語音搜索提供儘量多的入口,可以將上述方式進行結合,目前看到比較合適的方案有百度地圖、愛奇藝,如下圖所示:愛奇藝APP就是將方式一、二結合,在首頁的搜索框內部左側、搜索中間頁的鍵盤上方都放置了語音搜索的入口。既可以方便熟練用戶快速地進入語音搜索模塊,也讓「路人」用戶甚至「黑粉」用戶可以快捷嘗鮮體驗、逐步過渡使用。喚醒方式通常有點擊、長按兩種。喚醒方式的選擇與入口方式掛鈎。
  • 阿里聯合清華大學共建自然交互體驗實驗室,要讓機器懂感情
    阿里巴巴聯合清華大學,成立了「自然交互體驗聯合實驗室」。為了讓機器更「自然」地與人交流,阿里巴巴聯合清華大學,成立了「自然交互體驗聯合實驗室」(下稱「清華-阿里巴巴自然交互體驗實驗室」),探索「下一代人機互動」。
  • 從智能語音到機器翻譯,解讀搜狗的人工智慧進擊之路
    (圖為搜狗語音交互中心技術總監陳偉)智東西同搜狗語音交互中心技術總監陳偉以及機器翻譯技術負責人王宇光展開對話,看看這家靠輸入法而知名的公司在人工智慧中有哪些新進展。組建機器翻譯團隊實現跨語言交流搜狗的核心主要包括兩個事業部,一個是桌面事業部,一個是搜索事業部。
  • 百度大腦5.0實現史上最大升級 發布遠場語音交互晶片「鴻鵠」
    百度語音技術部高級總監高亮介紹,識別方面,百度提出流式多級的截斷注意力模型SMLTA,這是國際上首次實現局部注意力建模超越整句的注意力模型,也是國際上首次實現在線語音大規模使用注意力模型。 SMLTA在大幅提升識別速度的同時,也提高了識別準確率。在輸入法有效產品相對準確率提升15%,音箱有效產品相對準確率提升20%。
  • 思必馳 CTO 周偉達:語音技術優先服務於 AIoT | CCF-GAIR 2019
    在這樣的場景中,真正的智能交互是多模態的交互,除了語音之外,要配合其他的傳感器,特別是視覺。在智能交互中,雖然大部分機器的語音識別做得越來越好,支持的技能越來越多,但是人與機器的交互,和人與人的交互之間還有差距,具體有哪些方面呢?首先是自然度。現在人和機器的交互,特別是成年人和機器交互時,大家懷疑機器的技能。
  • 四大智能電視語音交互大戰:這樣的才能叫智能!
    隨著智能語音功能的革新,智能電視的「智能」會越來越成為用戶的選擇要素,那搭載什麼智能語音系統的電視更加智能?哪家的智能語音交互更流暢呢?ZNDS 評測菌選了四款電視來對比橫評,智能語音的趨勢有目共睹,大家一起來看看吧。
  • 未來已來(一):語音交互,人機互動的新時代
    寫在前面:語音交互指的是與電子設備進行對話,讓它們能按照你的要求替你做事情。如今,語音界面無處不在,我們可以在智慧型手機、電視、智能家居和其他一系列產品中接觸到它。語音交互功能正快速的滲入我們的日常生活中,它的高速發展表明這項技術即將成為傳統圖形界面交互方式之外的另一種選擇,甚至有可能完全代替後者。
  • 北鬥地球儀又出神作:全球首款AI地球儀 智能語音交互 一球知曉天下
    北鬥地球儀又出神作:全球首款AI地球儀 智能語音交互 一球知曉天下2018-12-19 10:25:08出處:其他作者:佚名  在人工智慧如火如荼的當下,北鬥聯手阿里人工智慧室開發了全球首款AI地球儀,首次將AI 智能科技與傳統地球儀進行完美結合,讓地球儀變得生動有趣:既可以通過地球儀直觀的看到世界各國,又能通過語音交互聽到各種地理知識,還能用手機與地球儀對話