0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RT-Thread和N32G457的家庭語(yǔ)音助手方案

湫葉風(fēng) ? 來(lái)源:湫葉風(fēng) ? 作者:湫葉風(fēng) ? 2022-04-15 18:50 ? 次閱讀

出處:RT-Thread

作者:王胖胖

應(yīng)用方案說(shuō)明及使用場(chǎng)景描述:
本方案通過(guò)N32G457+RT-Thread,實(shí)現(xiàn)一個(gè)家庭語(yǔ)音助手,提供語(yǔ)音喚醒、多路開(kāi)關(guān)、倒計(jì)時(shí)、鬧鐘提醒、天氣提醒、新聞播報(bào)、音樂(lè)播放等功能,為家庭生活增添便利和趣味性。
具體實(shí)現(xiàn)功能如下:
1.一鍵配網(wǎng)(未實(shí)現(xiàn))
2.特定喚醒詞喚醒
3.語(yǔ)音控制多路開(kāi)關(guān)
4.語(yǔ)音設(shè)置倒計(jì)時(shí)
5.語(yǔ)音設(shè)置鬧鐘(未實(shí)現(xiàn))
6.語(yǔ)音播報(bào)天氣提醒
7.語(yǔ)音播報(bào)新聞
8.語(yǔ)音控制音樂(lè)播放
硬件平臺(tái)
N32G45XVL-STB開(kāi)發(fā)板
軟件平臺(tái)
RT-Thread 4.0.4
RT-Thread Studio
功能模塊
ADC
Timer
msh
Serial
pyaudio
pyserial
百度實(shí)時(shí)語(yǔ)音識(shí)別realtime-asr
百度語(yǔ)音合成tts
全家福

初步方案


語(yǔ)音識(shí)別是本項(xiàng)目的核心,一般有語(yǔ)音識(shí)別模塊、在線語(yǔ)音識(shí)別、離線語(yǔ)音識(shí)別等三種方案。一開(kāi)始覺(jué)得語(yǔ)音識(shí)別模塊、在線語(yǔ)音識(shí)別沒(méi)有技術(shù)含量,離線語(yǔ)音識(shí)別才能最大限度的發(fā)揮開(kāi)發(fā)板的性能。于是春節(jié)期間查閱了不少離線語(yǔ)音識(shí)別的資料,最終確定了MFCC+DTW的離線語(yǔ)音識(shí)別方案。節(jié)后事情比較多,中斷了很長(zhǎng)時(shí)間。等再拾起來(lái)的時(shí)候,發(fā)現(xiàn)沒(méi)有想象中那么簡(jiǎn)單,像FFT/DCT等DSP運(yùn)算不是新手能輕易搞定的。距離截稿時(shí)間已經(jīng)沒(méi)幾天了,無(wú)奈只能選擇降級(jí)方案。
降級(jí)方案
降級(jí)后的方案是使用ADC采樣音頻信號(hào),交由上位機(jī)(或ESP8266)進(jìn)行在線語(yǔ)音識(shí)別。ADC進(jìn)行了配置之后,給VREF接上3.3V,測(cè)試正常。可問(wèn)題還是出現(xiàn)了,首先是自制的音頻放大電路的放大能力不足,遠(yuǎn)達(dá)不到3.3v的上限,導(dǎo)致采樣精度不足;其次是音頻采樣需要8k的采樣速率,也就是125us采樣一次,而系統(tǒng)定時(shí)器最小周期默認(rèn)是10ms,就算配置成1ms也是不能滿足需求的。文檔里的高精度定時(shí)器還需要進(jìn)一步研究,無(wú)奈只能再次降級(jí)。

再次降級(jí)

復(fù)制

def process_instruct(instruct):
  """
  處理語(yǔ)音指令
  """
  instruct = str(instruct).replace("。", "").replace("?", "")
  cmd = ""
  voice = ""
  match instruct:
  case "小白小白":
    cmd = "mini_rgb up"
    voices = "在呢|嗯|爺爺在此".split("|")
    random.shuffle(voices)
    voice = voices[0]
  case "打開(kāi)紅燈":
    cmd = "light_control red on"
    voice = "紅燈已打開(kāi)"
  case "關(guān)閉紅燈":
    cmd = "light_control red off"
    voice = "紅燈已關(guān)閉"
  case "打開(kāi)綠燈":
    cmd = "light_control green on"
    voice = "綠燈已打開(kāi)"
  case "關(guān)閉綠燈":
    cmd = "light_control green off"
    voice = "綠燈已關(guān)閉"
  case "打開(kāi)藍(lán)燈":
    cmd = "light_control blue on"
    voice = "藍(lán)燈已打開(kāi)"
  case "關(guān)閉藍(lán)燈":
    cmd = "light_control blue off"
    voice = "藍(lán)燈已關(guān)閉"
  case "天氣":
    cmd = "mini_rgb up"
    voice = "有你的每一天都是晴天"
  case "幾點(diǎn)了":
    cmd = "mini_rgb up"
    now = time.strftime("%Y年%m月%d日%H點(diǎn)%M分%S秒", time.localtime()) 
    voice = "現(xiàn)在是" + now
  case "早上好":
    cmd = "mini_rgb up"
    voice = "morning"
  case "我想聽(tīng)歌":
    cmd = "mini_rgb up"
    voice = "一閃一閃亮晶晶,滿天都是小星星"
  case "倒計(jì)時(shí)五秒鐘":
    cmd = "count_down 5"
    voice = "已為您設(shè)置好倒計(jì)時(shí)"
  case "新聞":
    cmd = "mini_rgb up"
    voice = "【一眼新聞丨3月16日貝果財(cái)經(jīng)早間資訊】中國(guó)塞爾維亞駕*互認(rèn)正式生效;106班上海入境國(guó)際航班將更改入境點(diǎn);鄧倫偷逃稅被處罰并追繳1.06億元;最高法明確電商不得以拆封為由拒絕退貨;茅臺(tái)回應(yīng)潘長(zhǎng)江直播事件;白俄羅斯和俄羅斯將在能源交易中放棄使用美元;英國(guó)將取消所有新冠疫情旅行限制措施;韓國(guó)開(kāi)發(fā)全球首個(gè)可拉伸無(wú)失真元顯示技術(shù);美國(guó)航天局證實(shí):美航天員將乘俄飛船返回......"
  case "再見(jiàn)":
    cmd = "mini_rgb down"
    voice = "再見(jiàn)"
  case _:
    cmd = "mini_rgb down"
    voices = "不知道你說(shuō)了什么|不懂".split("|")
    random.shuffle(voices)
    voice = voices[0]
  if cmd != "":
  logger.info('cmd:'+cmd)
  cmd = cmd + "\n"
  cmd = cmd.encode("ascii")
  n32_serial.write(cmd)
  if voice != "":
  tts_file = tts(voice)
  if tts_file != "":
    play_audio(tts_file)


再次降級(jí)后,使用上位機(jī)通過(guò)pyaudio進(jìn)行音頻錄制,語(yǔ)音片段通過(guò)websocket上傳至百度實(shí)時(shí)語(yǔ)音接口進(jìn)行語(yǔ)音識(shí)別,返回的結(jié)果轉(zhuǎn)換為指令通過(guò)pyserial寫(xiě)入開(kāi)發(fā)板,觸發(fā)對(duì)應(yīng)動(dòng)作,同時(shí)通過(guò)百度語(yǔ)音合成tts生成對(duì)應(yīng)語(yǔ)音回復(fù),通過(guò)pyaudio播放?;緦?shí)現(xiàn)了前期預(yù)定目標(biāo)。
總結(jié)
由于是第一個(gè)硬件項(xiàng)目,經(jīng)驗(yàn)有限加上知識(shí)儲(chǔ)備不足,一開(kāi)始的想法并沒(méi)有完全實(shí)現(xiàn)出來(lái),只能一再降級(jí),好在也不辱使命,完成了作品。后期我會(huì)繼續(xù)完善這個(gè)項(xiàng)目,把離線語(yǔ)音識(shí)別方案實(shí)現(xiàn)出來(lái),真正發(fā)揮這塊開(kāi)發(fā)板的價(jià)值!
bilibili:https://gitee.com/grinow/home-voice-assistant
gitee:https://www.bilibili.com/video/BV1gU4y1o7XJ/

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631980
  • 語(yǔ)音識(shí)別
    +關(guān)注

    關(guān)注

    38

    文章

    1710

    瀏覽量

    112493
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39838
  • 語(yǔ)音助手
    +關(guān)注

    關(guān)注

    7

    文章

    235

    瀏覽量

    26785
  • N32G457
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    907
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于N32G457 RT-Thread的設(shè)計(jì)作品集分享

    1、基于RT-ThreadN32G457的智能工業(yè)網(wǎng)關(guān)的設(shè)計(jì)方案基于RT-Thread系統(tǒng)和N32G457開(kāi)發(fā)板,簡(jiǎn)單的實(shí)現(xiàn)了modbus
    發(fā)表于 03-11 17:49

    作品分享-基于RT-Thread系統(tǒng)和N32G457開(kāi)發(fā)板開(kāi)發(fā)的電子圍欄設(shè)計(jì)

    基于RT-Thread系統(tǒng)和N32G457開(kāi)發(fā)板開(kāi)發(fā)的電子圍欄設(shè)計(jì),主要采用的是N32G457開(kāi)發(fā)板,并搭載AIR724 4G模塊作為數(shù)據(jù)傳輸模塊,通過(guò)采集GPS的數(shù)據(jù),并將該設(shè)備的經(jīng)
    發(fā)表于 03-14 14:25

    基于RT-ThreadN32G457的智慧家庭

    作品出處:RT-Thread作者:此生何用聲聲嘆本項(xiàng)目是基于國(guó)民芯片N32G457,和RT-thread操作系統(tǒng)開(kāi)發(fā)的智慧家庭。由于萬(wàn)物互聯(lián)深入人心,于是便有了把自己的
    發(fā)表于 04-18 15:21

    基于RT-ThreadN32G457家庭語(yǔ)音助手

    出處:RT-Thread作者:王胖胖應(yīng)用方案說(shuō)明及使用場(chǎng)景描述:本方案通過(guò)N32G457+RT-Thread,實(shí)現(xiàn)一個(gè)家庭
    發(fā)表于 04-18 15:25

    分享一種基于RT-ThreadN32G457的運(yùn)動(dòng)姿態(tài)解算設(shè)計(jì)

    1、基于RT-ThreadN32G457的運(yùn)動(dòng)姿態(tài)解算基本框架如上圖所示,設(shè)計(jì)框架由硬件和軟件兩部分組成,其中硬件主要包括N32G457主控板和MPU6050模塊,軟件部分主要包括eMPL的移植(
    發(fā)表于 06-23 10:24

    基于RT-ThreadN32G457的溫度氣壓顯示系統(tǒng)設(shè)計(jì)

    1、基于RT-ThreadN32G457的溫度氣壓顯示系統(tǒng)設(shè)計(jì)此次基于RTT和N32G457開(kāi)發(fā)實(shí)現(xiàn)u8g2 spi 硬件驅(qū)動(dòng)顯示及bmp280 傳感器驅(qū)動(dòng)。整體架構(gòu)如下:原作者:x
    發(fā)表于 07-21 11:44

    基于RT-ThreadN32G457的門(mén)禁控制系統(tǒng)設(shè)計(jì)方案

    1、基于RT-ThreadN32G457的門(mén)禁控制系統(tǒng)設(shè)計(jì)應(yīng)用背景1.應(yīng)用場(chǎng)景可以作為家庭的安全門(mén)鎖控制系統(tǒng);2.同樣可以作為企業(yè)的門(mén)禁考勤系統(tǒng);實(shí)現(xiàn)功能1.通過(guò)按鍵實(shí)現(xiàn)指紋的添加和刪除;2.可以
    發(fā)表于 08-05 11:27

    基于RT-ThreadN32G457的智能家居demo相關(guān)資料介紹

    1、基于RT-ThreadN32G457的智能家居demo簡(jiǎn)介本文使用 N32G457 開(kāi)發(fā)板,移植 RT-Thread 操作系統(tǒng),增加 ESP8266 WIFI 模塊模擬了一個(gè)小型
    發(fā)表于 08-22 15:09

    基于RT-ThreadN32G457的繼電器控制加熱設(shè)備制作方案

    1、基于RT-ThreadN32G457的繼電器控制加熱設(shè)備制作此項(xiàng)目是移植現(xiàn)有的加熱設(shè)備程序到RT-Thread 框架,主要是基于RT-Thread框架及對(duì)應(yīng)的軟件包(bottom
    發(fā)表于 08-26 15:55

    基于RT-ThreadN32G457的數(shù)字氣壓表設(shè)計(jì)相關(guān)資料分享

    1、基于RT-ThreadN32G457的數(shù)字氣壓表設(shè)計(jì)  基于RT-Thread系統(tǒng)和N32G457的數(shù)字氣壓表的設(shè)計(jì)。氣壓傳感器使用國(guó)產(chǎn)的華普HP5806氣壓傳感器,RTC時(shí)鐘使
    發(fā)表于 10-11 16:44

    基于RT-ThreadN32G457的溫度氣壓顯示系統(tǒng)設(shè)計(jì)方案

    1、基于RT-ThreadN32G457的溫度氣壓顯示系統(tǒng)設(shè)計(jì)  此次基于RTT和N32G457開(kāi)發(fā)實(shí)現(xiàn)u8g2 spi 硬件驅(qū)動(dòng)顯示及bmp280 傳感器驅(qū)動(dòng)?! ≌w架構(gòu)如下:原
    發(fā)表于 10-31 17:35

    基于RT-ThreadN32G457的嵌入式目標(biāo)識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

    1、基于RT-ThreadN32G457的嵌入式目標(biāo)識(shí)別系統(tǒng)設(shè)計(jì)  本演示示例移植蘇州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院王宜懷教授團(tuán)隊(duì)的金葫蘆嵌入式人工智能:物體認(rèn)知系統(tǒng)中的代碼在N32G457上實(shí)現(xiàn)??梢宰R(shí)別單獨(dú)的英文字母A B C
    發(fā)表于 11-30 11:36

    N32G457系列通用MCU RT_Thread設(shè)備注冊(cè)應(yīng)用筆記

    N32G457系列通用MCU RT_Thread設(shè)備注冊(cè)應(yīng)用筆記
    發(fā)表于 11-10 19:51 ?3次下載
    <b class='flag-5'>N32G457</b>系列通用MCU <b class='flag-5'>RT_Thread</b>設(shè)備注冊(cè)應(yīng)用筆記

    N32G457系列通用MCU RT_Thread使用指南

    N32G457系列通用MCU RT_Thread使用指南
    發(fā)表于 11-11 21:50 ?0次下載
    <b class='flag-5'>N32G457</b>系列通用MCU <b class='flag-5'>RT_Thread</b>使用指南

    求一種基于RT-ThreadN32G457的便攜測(cè)距模塊設(shè)計(jì)方案

    背景:基于RT-Thread系統(tǒng)和N32G457開(kāi)發(fā)板開(kāi)發(fā)的一款便攜測(cè)距小模塊;
    發(fā)表于 08-07 16:30 ?435次閱讀
    求一種基于<b class='flag-5'>RT-Thread</b>和<b class='flag-5'>N32G457</b>的便攜測(cè)距模塊設(shè)計(jì)<b class='flag-5'>方案</b>