<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

湫葉風 ? 來源:湫葉風 ? 作者:湫葉風 ? 2022-04-15 18:50 ? 次閱讀

出處:RT-Thread

作者:王胖胖

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

初步方案


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

再次降級

復制

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


再次降級后,使用上位機通過pyaudio進行音頻錄制,語音片段通過websocket上傳至百度實時語音接口進行語音識別,返回的結果轉換為指令通過pyserial寫入開發板,觸發對應動作,同時通過百度語音合成tts生成對應語音回復,通過pyaudio播放?;緦崿F了前期預定目標。
總結
由于是第一個硬件項目,經驗有限加上知識儲備不足,一開始的想法并沒有完全實現出來,只能一再降級,好在也不辱使命,完成了作品。后期我會繼續完善這個項目,把離線語音識別方案實現出來,真正發揮這塊開發板的價值!
bilibili:https://gitee.com/grinow/home-voice-assistant
gitee:https://www.bilibili.com/video/BV1gU4y1o7XJ/

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6008

    文章

    44062

    瀏覽量

    622642
  • 語音識別
    +關注

    關注

    38

    文章

    1650

    瀏覽量

    111896
  • RT-Thread
    +關注

    關注

    31

    文章

    1176

    瀏覽量

    38993
  • 語音助手
    +關注

    關注

    7

    文章

    229

    瀏覽量

    26675
  • N32G457
    +關注

    關注

    0

    文章

    16

    瀏覽量

    854
收藏 人收藏

    評論

    相關推薦

    基于N32G457 RT-Thread的設計作品集分享

    1、基于RT-ThreadN32G457的智能工業網關的設計方案基于RT-Thread系統和N32G457開發板,簡單的實現了modbus
    發表于 03-11 17:49

    作品分享-基于RT-Thread系統和N32G457開發板開發的電子圍欄設計

    基于RT-Thread系統和N32G457開發板開發的電子圍欄設計,主要采用的是N32G457開發板,并搭載AIR724 4G模塊作為數據傳輸模塊,通過采集GPS的數據,并將該設備的經
    發表于 03-14 14:25

    基于RT-ThreadN32G457的CAN網關

    使用情況本項目基于RT-Thread系統和N32G457開發板開發的一款CAN網關;硬件部分由W5500以太網模塊,SN65HVD234D收發器、TJA1050收發器,N32G457主控板等組成;開發板上
    發表于 04-18 15:10

    基于RT-ThreadN32G457的智慧家庭

    作品出處:RT-Thread作者:此生何用聲聲嘆本項目是基于國民芯片N32G457,和RT-thread操作系統開發的智慧家庭。由于萬物互聯深入人心,于是便有了把自己的
    發表于 04-18 15:21

    基于RT-ThreadN32G457家庭語音助手

    出處:RT-Thread作者:王胖胖應用方案說明及使用場景描述:本方案通過N32G457+RT-Thread,實現一個家庭
    發表于 04-18 15:25

    如何去實現一種基于RT-ThreadN32G457的墨水屏日歷設計

    1、基于RT-ThreadN32G457的墨水屏日歷本項目硬件部分包含N32G457開發板、ESP8266 Wi-Fi模組、W25Q128閃存模組、4.2寸三色墨水屏和墨水屏驅動板,硬件功能上
    發表于 06-07 15:15

    求一種基于RT-ThreadN32G457的室內互聯控制系統設計方案

    1、基于RT-Thread系統和N32G457開發板開發的一室內互聯控制系統基于RT-Thread系統和N32G457開發板開發的一室內互聯控制系統;硬件部分由ESP8266WIFI模
    發表于 06-15 15:36

    分享一種基于RT-ThreadN32G457的運動姿態解算設計

    1、基于RT-ThreadN32G457的運動姿態解算基本框架如上圖所示,設計框架由硬件和軟件兩部分組成,其中硬件主要包括N32G457主控板和MPU6050模塊,軟件部分主要包括eMPL的移植(
    發表于 06-23 10:24

    基于RT-ThreadN32G457的溫度氣壓顯示系統設計

    1、基于RT-ThreadN32G457的溫度氣壓顯示系統設計此次基于RTT和N32G457開發實現u8g2 spi 硬件驅動顯示及bmp280 傳感器驅動。整體架構如下:原作者:x
    發表于 07-21 11:44

    基于RT-ThreadN32G457的門禁控制系統設計方案

    1、基于RT-ThreadN32G457的門禁控制系統設計應用背景1.應用場景可以作為家庭的安全門鎖控制系統;2.同樣可以作為企業的門禁考勤系統;實現功能1.通過按鍵實現指紋的添加和刪除;2.可以
    發表于 08-05 11:27

    基于RT-ThreadN32G457的智能家居demo相關資料介紹

    1、基于RT-ThreadN32G457的智能家居demo簡介本文使用 N32G457 開發板,移植 RT-Thread 操作系統,增加 ESP8266 WIFI 模塊模擬了一個小型
    發表于 08-22 15:09

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

    1、基于RT-ThreadN32G457的繼電器控制加熱設備制作此項目是移植現有的加熱設備程序到RT-Thread 框架,主要是基于RT-Thread框架及對應的軟件包(bottom
    發表于 08-26 15:55

    基于RT-ThreadN32G457的數字氣壓表設計相關資料分享

    1、基于RT-ThreadN32G457的數字氣壓表設計  基于RT-Thread系統和N32G457的數字氣壓表的設計。氣壓傳感器使用國產的華普HP5806氣壓傳感器,RTC時鐘使
    發表于 10-11 16:44

    基于RT-ThreadN32G457的溫度氣壓顯示系統設計方案

    1、基于RT-ThreadN32G457的溫度氣壓顯示系統設計  此次基于RTT和N32G457開發實現u8g2 spi 硬件驅動顯示及bmp280 傳感器驅動?! ≌w架構如下:原
    發表于 10-31 17:35

    基于RT-ThreadN32G457的嵌入式目標識別系統設計實現

    1、基于RT-ThreadN32G457的嵌入式目標識別系統設計  本演示示例移植蘇州大學計算機科學與技術學院王宜懷教授團隊的金葫蘆嵌入式人工智能:物體認知系統中的代碼在N32G457上實現??梢宰R別單獨的英文字母A B C
    發表于 11-30 11:36
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>