劉梅 山東省淄博第一中學
語音交互指的是人與計算機設備通過語音進行信息交流的過程,其中兩個關鍵過程包括STT(語音轉文字)即語音識別、TTS(文本轉語音)即語音合成。本項目帶領學生通過完整的模型訓練流程實現對訓練指令的語音識別,并結合Arduino板實現模型的本地部署,使語音小助手不僅具有交流對話的功能,更能根據訓練好的指令完成一系列操作。
本項目的主題是“看見”你的聲音,那么如何使聲音能夠被“看見”呢?在本項目中主要體現在兩個方面:一是在數據集處理的過程中,通過將音頻信號轉換成波形圖與音譜圖,讓學生實現用看的方式直觀理解音頻信號在圖像維度上的波形特征,并通過將音頻信號轉成音譜圖,使學生可以利用處理圖像的CNN卷積神經網絡去處理音頻方面的問題,讓計算機實現用“看”的方式去處理“聽”的問題。二是在模型部署階段,除了可以使語音對話機器人實現聊天功能外,還能根據指令完成一系列可被看到的操作:開關燈、開關風扇、開關窗戶、查詢室內溫濕度并反饋等。
天貓精靈、小愛音箱等設備都具備了對話交流、完成各種指令操作等功能,其核心原理就是語音交互。那么,語音交互是如何實現的呢?除了對話交流外還能設計哪些功能呢?本項目將對這些問題進行探索,并采集自己的指令音頻打造一個專屬私人語音小助手。
該項目分四部分,共5課時:自主采集音頻指令數據(課前)、處理音頻數據為語譜圖(1課時);模型訓練(1課時);模型轉換(1課時);模型部署(2課時)。
因采集音頻需要安靜的環境,該階段讓學生在課前完成。學生2人一組,先利用matplotlib、librosa庫對采集的音頻信號進行預處理并批量轉成語譜圖;然后搭建CNN卷積神經網絡模型,對處理好的音頻數據進行模型訓練;接著將訓練出的模型封裝,生成onnx模型,實現本地調用;最后,利用Arduino板、溫濕度傳感器、LED小燈、風扇傳感器等完成硬件部署,實現語音小助手的制作。
(1)音頻文件采集
學生根據自己的項目需求采集指令音頻。以本項目語音小助手為例,采集7種指令語句,每種指令150條,其中130條用作訓練集,20條用于驗證集。學生結合pyaudio庫,運行圖1所示的代碼進行音頻錄制。錄制時只需要設置好聲道數、比特率、錄制時間等即可。

圖1
同時,教師要提前配置好機房環境,為學生準備好半成品模板代碼,鼓勵學生積累代碼范例并上傳至自己的學習平臺。例如,pyaudio調用麥克風采集音頻文件、opencv采集圖像文件,學生將這些經常用到的代碼,形成固定的代碼模塊,這樣在下一個項目中使用時,只要根據項目主題更改邏輯語句或簡單參數即可,進而提高課堂效率。
(2)音頻文件預處理
任意選擇兩條不同的語句,利用matplotlib、librosa庫繪制波形圖與音譜圖,圖2為“小梅關燈”與“屋里好黑”的音頻圖與語譜圖,學生通過對比,可以直觀理解兩條語音指令在圖像維度上的特征差異。然后將錄制好的音頻文件批量生成音頻譜圖,為后續模型訓練做好準備。

圖2
利用語音頻譜圖進行模型訓練有如下優勢:①有利于本地機房環境下學生進行模型訓練,解決了機房環境下算力不足的問題。②用處理圖像的神經網絡模型解決音頻問題,大大提高了所生成模型對音頻文件識別的準確率。本項目基于pytorch搭建CNN卷積神經網絡,模型預測階段識別準確率在98%左右。
(3)批量生成語譜圖
利用librosa庫,將音頻信息批量轉化為語譜圖,核心代碼如下頁圖3所示。

圖3
CNN卷積網絡在計算機視覺領域發揮了重要的作用,筆者借助某平臺搭建了卷積神經網絡,對生成的語音譜圖進行模型訓練,核心代碼如下頁圖4所示。

圖4
onnx模型是一種廣泛使用的模型轉換文件格式,將訓練好的模型文件導出并轉換為onnx模型,這樣便可以結合智能硬件,在本地對訓練出的模型進行部署。
在模型部署環節,教師帶領學生實現兩大功能:一是能“聽”會“說”,即傳統意義上的語音交互功能,通過在代碼中接入圖靈機器人平臺API,實現與小助手對話交流;二是能“聽”會“做”,即利用Arduino,結合LED小燈、風扇模塊、舵機、溫濕度傳感器等智能硬件,讓小助手根據語音指令完成包括開關燈在內的一系列操作。
環節一:能“聽”會“說”
在這一環節,教師使用識別出的指令,關聯圖靈平臺API,與圖靈機器人進行對話,并將返回的文字對話結果利用pyttsx3模塊轉換成語音進行播報,實現與小助手對話的功能。學生兩人一組在圖靈機器人平臺注冊賬號,創建一個自己的聊天機器人,記錄下Apikey,這樣便可以在項目中實現與小機器人的對話了。接著,利用訓練好的語句進行測試,如“你的名字是什么”,機器人反饋結果“我就是人見人愛花見花開的劉小梅呀”。但圖靈平臺返回的是文字內容,還需要利用pyttsx3模塊,將返回得到的結果轉化為語音形式,這一過程又叫做語音合成。核心代碼如圖5所示。

圖5
環節二:能“聽”會“做”
作品只能進行對話交流顯然是不夠的,“小梅同學”還要具備其他功能,完成更多的任務,如“‘屋里好黑呀’:LED燈亮起”“‘小梅關燈’:LED燈關閉”“‘天氣真熱’:風扇轉動”等。以“小梅查詢溫濕度”為例,核心代碼如圖6所示,作品如圖7所示。

圖6

圖7
