








摘 要:文中設計出一款多功能智能拐杖,可以實現路徑規劃、自主導航、物品識別、語音交互等功能,最重要的是可以讓老人對智能拐杖進行語音控制,使之更加便捷化、智能化,從而更好地為老人服務。語音交互功能采用STM32F405作為底層開發板,分為語音識別、語音合成以及語音控制等部分。
關鍵詞:智能拐杖;語音交互;STM32;語音識別;語音合成;語音控制
中圖分類號:TP393 文獻標識碼:A 文章編號:2095-1302(2024)03-0-03
0 引 言
在當代,人口老齡化程度不斷加深,整個社會對老年人的關注度也越來越高,老年人的行動安全也受到格外的重視[1-3]。老年人常用的傳統拐杖具有功能單一、智能化程度低等缺點,無法真正滿足老年人的行動需求[4-6]。因此,亟需一款更加便捷、智能的拐杖,能夠更好地為老人服務。為此,本文設計一款多功能智能拐杖,可以實現路徑規劃、自主導航、物品識別、語音交互等功能,方便老人日常生活和出行。
1 系統總統方案設計
語音交互模塊主要由語音導航、語音識別、語音合成、語音控制四大部分組成。主要功能可總結為:語音識別、語音合成、智能聊天、語音導航、語義分析、語音喚醒、語音打斷、多媒體服務等。
語音交互模塊由Jetson Nano機器人、USB外部麥克風、音響三部分組成。在Ubuntn開發環境中打開終端,通過SSH遠程連接機器人,輸入roslaunch huanyu_speech robot_speech.launch啟動機器人語音交互功能。具體系統總體設計方案如圖1所示。
Jetson Nano機器人通過USB麥克風將音頻信號傳送到語音識別模塊,經過ASR轉化得到的文字作為參數發送給圖靈機器人,圖靈機器人經過與數據庫中的數據進行對比運算,返回為答復用戶所需要的文本文字,Jetson Nano將得到的文本進行語音合成,最后通過音響播報給用戶。具體流程如圖2所示。
2 系統硬件設計
采用STM32F405作為底層開發板[7-8],根據需求開發設計上位機,確保對相關功能所需的程序進行編譯;同時實時接收LD3320A通過ADC數模轉換得到的音頻信號,將接收到的音頻信號轉化為所需要的數據信息;通過特定的運算步驟,并且運用交互邏輯向SYN6288傳輸數據,運行合成語句的代碼,由外部USB麥克風播報。硬件原理框圖如圖3所示。
2.1 語音識別電路設計
語音識別電路主要由SPCE061A和集成功率放大器SPY0030組成。語音信號經過SPCE061A的DAC引腳,被輸送到電路的J4端口處;通過R9音量電位器的調節,將信號送到集成功率放大器SPY0030。SPY0030的原理就是利用三極管的電流控制作用或場效應管的電壓控制作用將電源的功率轉換為隨輸入信號變化的電流。語音識別電路如圖4所示。
2.2 語音合成電路設計
語音合成模塊采用SYN6288中文語音合成芯片,SYN6288通過異步串口(UART)通信方式,接收待合成的文本數據,實現文本到語音(或TTS語音)的轉換;支持GB2312、GBK、BIG5和UNICODE內碼格式的文本,支持多種控制命令,包括合成、停止、暫停合成、繼續合成、改變波特率等。同時,支持多種控制命令,包括合成、停止、暫停合成、繼續合成、改變波特率等。具體電路設計如圖5所示。
3 系統軟件設計
在Ubuntu開發環境中,使用robot_speech.launch來啟動語音交互功能。從語音交互的啟動文件 robot_speech.launch 中我們可以看到一共啟動了4個節點,它們對應的功能如下:
(1)機器人的智能聊天服務(question_to_answer.py):調用圖靈機器人智能聊天平臺,以服務的形式供客戶端調用。
(2)機器人的語音合成功能(text_to_speech.py):調用百度在線語音合成API,分別以服務和話題訂閱回調形式封裝,支持用戶的服務調用和話題發布;并且在合成語音后,直接播放。
(3)機器人的語音控制中心(speech_control.py):訂閱語音識別的結果,進行語義分析、控制命令提取;然后發布語音控制命令,比如發布導航命令、調用智能聊天服務、播放本地歌曲庫等[9];可以根據具體格式自定義所需的控制命令。
(4)機器人的語音識別、語音喚醒、語音打斷功能(speech_recognize.py):調用了百度在線語音識別AP進行語音識別。
3.1 語音識別
語音識別采用的是百度在線語音識別技術,調用短語音識別標準版[10],具體實現采用REST-API-PythonSDK。源文件:huanyu_speech功能包中的script目錄下的speech_recognize.py。
調用語音識別接口代碼如下:
result = client.asr(get_file_content(baseDir + 'resource/listen.wav'), 'pcm', 16000, { 'dev_pid': 1537,
})
其中參數dev_pid表示識別的語言為普通話(純中文識別),不同參數下的模型見表1所列。
3.2 語音合成
語音合成采用的是百度在線語音合成技術,具體實現采用 PythonSDK。源文件:uanyu_speech 功能包中的 script 目錄下 text_to_speech.py。
調用語音合成接口如下:
result= client.synthesis('合成語音的文字', 'zh', 1, {'vol': 10,})
其中:'zh'表示語言選擇,目前只有中英文混合模式,填寫固定值zh;'vol'表示合成音頻的音量。具體參數類型見表2所列。
3.3 語音控制
在語音識別之后,可以對識別的內容進行篩選,提取相應的語音命令。在huanyu_speech功能包config目錄下的speechCommand.json中配置。在該配置文件中按照已有的命令格式,并在此JSON文件中添加新的語音控制指令,示例如下:
{
\"command\": [
\"唱首歌\",
\"唱一首歌\",
\"唱個歌\", \"唱歌\"],
\"type\": \"sing\", \"code\": 1,
\"reply\": [
\"小主人馬上為你播放音樂!\",]
}
其中:command參數為語音控制指定內容,為字符串數組,即同一個操作可以對應多個語音指令,靈活性更高;type為語音指令的類型,可以自行設定,用于區分不同類的語音命令;code為語音指令對應的編碼、整型,同一類型下的指令以此參數區分;reply為設定的機器人回復內容。
3.4 自定義提示語
在設計過程中,我們想讓機器人在特定情況下播放設定的提示語。例如機器人語音交互包依賴于網絡,若檢測沒有網絡時,播放提示語來提醒用戶配置網絡;或者在機器人完成某項任務時,提示用戶任務完成;導航中,提示導航開始、導航失敗、導航成功。
本部分將在huanyu_speech功能包中config目錄下的warnAudio.json中進行配置。命令如圖6所示。
然后開始合成提示語,并播放出來,最后在終端上打印提示語生成情況的統計數,若失敗數為0,說明全部合成成功,如圖7所示。
4 結 語
本文設計了基于Jetson Nano的多功能智能拐杖,針對其中的語音交互模塊,從硬件和軟件的設計出發,進行了系統全面的介紹。該模塊在很大程度上體現了多功能拐杖的智能化,為老年群體使用拐杖提供了更大的便利,同時對智能化助老設備的推廣和智能語音交互技術的普及應用有較大的促進意義。
參考文獻
[1]馬可,何人可,馬超民.基于語音交互的家用智能掃地機器人體驗設計研究[J].包裝工程,2020,41(18):118-124.
[2]康婷,沈雷,周帥.具有防摔檢測預警的老人智能服裝設計研究[J].毛紡科技,2021,49(4):70-75.
[3]楊帆,雷迪.基于STM32設計的避障小車[J].制造業自動化,2021,43(3):40-43.
[4]付蔚,唐鵬光,李倩.智能家居語音控制系統的設計[J].自動化儀表,2014,35(1):46-50.
[5]王璟珣,滕召勝,高云鵬,等.嵌入式盲人手機語音識別與控制系統設計[J].計算機測量與控制,2009,17(10):1951-1954.
[6]屈瑾.基于語音識別的智能交互系統設計[J].自動化與儀器儀表,2023,43(1):221-225.
[7]李淵博,馬豪杰.語音交互空調遙控器的設計[J].內江科技,2022,43(8):67-68.
[8]程穎.基于智能語音交互的多媒體閱讀輔助系統設計[J].自動化與儀器儀表,2022,42(2):112-115.
[9]賈志成,田祺,周婕妤,等.基于STM32的外加式電梯語音交互按鍵系統[J].信息科技,2022,40(2):313-318.
[10]張許如,任龍,攀婧,等. AI語音交互智能座椅控制器的設計與開發[J].自動化技術,2023,13(2):122-125.