使用物聯網設備識別語音
手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。
這段視頻概述了 Azure 語音服務,這是本課程將涵蓋的主題:
🎥 點擊上方圖片觀看視頻
課前測驗
介紹
'Alexa,設置12分鐘計時器'
'Alexa,計時器狀態'
'Alexa,設置一個名為蒸西蘭花的8分鐘計時器'
智能設備變得越來越普及。不僅僅是像 HomePods、Echos 和 Google Homes 這樣的智能音箱,還嵌入在我們的手機、手錶,甚至是燈具和恆溫器中。
💁 我家裡至少有19個具有語音助手的設備,這還只是我知道的!
語音控制通過允許行動受限的人與設備互動來提高可訪問性。無論是先天性殘疾如天生沒有手臂,還是暫時性殘疾如手臂骨折,或者雙手拿滿購物或照顧小孩,能夠用語音而不是手來控制我們的房子,開啟了一個訪問的世界。在處理嬰兒換尿布和不聽話的幼兒時,大喊“嘿 Siri,關閉我的車庫門”可以是生活中的一個小但有效的改進。
語音助手的一個更受歡迎的用途是設置計時器,特別是廚房計時器。能夠僅用語音設置多個計時器在廚房中非常有幫助——不需要停止揉麵團、攪拌湯或清理手上的餃子餡來使用實體計時器。
在本課程中,您將學習如何將語音識別構建到物聯網設備 中。您將學習麥克風作為傳感器,如何從連接到物聯網設備的麥克風捕獲音頻,以及如何使用 AI 將聽到的內容轉換為文本。在本項目的其餘部分中,您將構建一個智能廚房計時器,能夠使用多種語言通過語音設置計時器。
在本課程中,我們將涵蓋:
麥克風
麥克風是將聲波轉換為電信號的模擬傳感器。空氣中的振動使麥克風中的元件微小移動,這些移動會引起電信號的微小變化。這些變化然後被放大以生成電輸出。
麥克風類型
麥克風有多種類型:
-
動圈 - 動圈麥克風有一個連接到移動振膜的磁鐵,該磁鐵在一個線圈中移動,產生電流。這與大多數揚聲器相反,揚聲器使用電流在線圈中移動磁鐵,移動振膜以產生聲音。這意味著揚聲器可以用作動圈麥克風,動圈麥克風也可以用作揚聲器。在用戶要么聽要么說但不會同時進行的設備(如對講機)中,一個設備可以同時 作為揚聲器和麥克風。
動圈麥克風不需要電源工作,電信號完全由麥克風產生。
-
鉑帶 - 鉑帶麥克風類似於動圈麥克風,但它們有一個金屬鉑帶而不是振膜。這個鉑帶在磁場中移動產生電流。像動圈麥克風一樣,鉑帶麥克風不需要電源工作。
-
電容 - 電容麥克風有一個薄金屬振膜和一個固定的金屬背板。電流應用於這兩者,當振膜振動時,板之間的靜電荷變化產生信號。電容麥克風需要電源工作,稱為 幻象電源。
-
MEMS - 微機電系統麥克風,或 MEMS,是芯片上的麥克風。它們在硅芯片上刻有壓力敏感振膜,工作原理類似於電容麥克風。這些麥克風可以非常小,並集成到電路中。
在上圖中,標有 LEFT 的芯片是 MEMS 麥克風,具有不到一毫米寬的微小振膜。
✅ 做一些研究:你周圍有哪些麥克風——無論是在你的電腦、手機、耳機還是其他設備中。它們是什麼類型的麥克風?
數字音頻
音頻是一個攜帶非常細微信息的模擬信號。要將此信號轉換為數字信號,需要每秒對音頻進行數千次取樣。
🎓 取樣是將音頻信號轉換為代表該時刻信號的數字值。
數字音頻使用脈衝編碼調製(PCM)進行取樣。PCM 涉及讀取信號的電壓,並使用定義的大小選擇最接近該電壓的離散值。
💁 你可以將 PCM 視為脈衝寬度調製(PWM)的傳感器版本(PWM 在入門項目第3課中介紹)。PCM 涉及將模擬信號轉換為數字信號,PWM 涉及將數字信號轉換為模擬信號。
例如,大多數流媒體音樂服務提供16位或24位音頻。這意味著它們將電壓轉換為適合16位整數或24位整數的值。16位音頻將值適合範圍從-32,768到32,767,24位音頻範圍為-8,388,608到8,388,607。位數越多,取樣越接近我們實際聽到的聲音。
💁 你可能聽說過8位音頻,通常稱為 LoFi。這是使用僅8位取樣的音頻,因此範圍為-128到127。由於硬件限制,第一台計算機音頻被限制為8位,因此這通常出現在復古遊戲中。
這些取樣每秒進行數千次,使用以 KHz(每秒數千次讀數)測量的定義取樣率。流媒體音樂服務對大多數音頻使用48KHz,但一些“無損”音頻使 用高達96KHz甚至192KHz。取樣率越高,音頻越接近原始音頻,直到某個點。人類是否能區分48KHz以上的差異存在爭議。
✅ 做一些研究:如果你使用流媒體音樂服務,它使用什麼取樣率和大小?如果你使用 CD,CD 音頻的取樣率和大小是多少?
有多種不同的音頻數據格式。你可能聽說過 mp3 文件——壓縮音頻數據以使其變小而不失去任何質量。未壓縮音頻通常存儲為 WAV 文件——這是一個包含44字節頭信息的文件,後跟原始音頻數據。頭信息包含取樣率(例如16KHz的16000)和取樣大小(16位的16),以及通道數。頭信息之後是原始音頻數據。
🎓 通道是指構成音頻的不同音頻流的數量。例如,立體聲音頻有左右兩個通道。家庭影院系統的7.1環繞聲音頻有8個通道。
音頻數據大小
音頻數據相對較大。例如,以16KHz(對語音轉文本模型來說足夠好)的速率捕獲未壓縮的16位音頻,每秒需要32KB的數據:
- 16位意味著每個取樣2字節(1字節是8位)。
- 16KHz 是每秒16,000次取樣。
- 16,000 x 2字節 = 每秒32,000字節。
這聽起來像是很少的數據,但如果你使用的是內存有限的微控制器,這可能會很多。例如,Wio Terminal 有192KB的內存,這需要存儲程序代碼和變量。即使你的程序代碼很小,你也無法捕獲超過5秒的音頻。
微控制器可以訪問額外的存儲,如 SD 卡或閃存。在構建捕獲音頻的物聯網設備時,你需要確保不僅有額外的存儲,還需要你的代碼將從麥克風捕獲的音頻直接寫入該存儲,並在將其發送到雲端時,從存儲流式傳輸到網絡請求。這樣你可以避免試圖一次在內存中保存整個音頻數據塊而導致內存不足。
從您的物聯網設備捕獲音頻
您的物聯網設備可以連接到麥克風以捕獲音頻,準備轉換為文本。它還可以連接到揚聲器以輸出音頻。在後續課程中,這將用於提供音頻反饋,但現在設置揚聲器以測試麥克風是有用的。
任務 - 配置您的麥克風和揚聲器
按照相關指南配置您的物聯網設備的麥克風和揚聲器:
任務 - 捕獲音頻
按照相關指南在您的物聯網 設備上捕獲音頻:
語音轉文本
語音轉文本,或語音識別,涉及使用 AI 將音頻信號中的單詞轉換為文本。
語音識別模型
要將語音轉換為文本,將音頻信號中的樣本分組並輸入基於循環神經網絡(RNN)的機器學習模型。這是一種可以使用先前數據來對輸入數據做出決定的機器學習模型。例如,RNN 可以將一個音頻樣本塊檢測為聲音“Hel”,當它接收到另一個它認為是聲音“lo”的樣本時,它可以將其與先前的聲音結合,發現“Hello”是一個有效的單詞並選擇它作為結果。
機器學習模型總是每次接受相同大小的數據。你在前一課中構建的圖像分類器會將圖像調整為固定大小並進行處理。語音模型也是如此,它們必須處理固定大小的音頻塊。語音模型需要能夠結合多個預測的輸出來獲得答案,以便區分“Hi”和“Highway”或“flock”和“floccinaucinihilipilification”。
語音模型還足夠先進,可以理解上下文,並且可以在處理更多聲音時糾正它們 檢測到的單詞。例如,如果你說“我去商店買了兩根香蕉和一個蘋果”,你會使用三個聽起來相同但拼寫不同的單詞——to、two 和 too。語音模型能夠理解上下文並使用適當的單詞拼寫。
💁 一些語音服務允許自定義,使其在嘈雜環境(如工廠)或具有行業特定單詞(如化學名稱)時工作得更好。這些自定義通過提供樣本音頻和轉錄來進行訓練,並使用遷移學習,與你在前一課中僅使用少量圖像訓練圖像分類器的方式相同。
隱私
在消費者物聯網設備中使用語音轉文本時,隱私非常重要。這些設備會持續聆聽音頻,因此作為消費者,你不希望你說的所有內容都被發送到雲端並轉換為文本。這不僅會使用大量的互聯網帶寬,還會有巨大的隱私問題,特別是當一些智能設備製造商隨機選擇音頻讓人類驗證生成的文本以幫助改進他們的模型時。
你只希望你的智能設備在你使用它時將音頻發送到雲端進行處理,而不是在它聽到你家中的音頻時,這些音頻可能包括私人會議或親密互動。大多數智能設備的工作方式是使用喚醒詞,例如“Alexa”、“Hey Siri”或“OK Google”這樣的關鍵短語,這會使設備“喚醒”並聆聽你說的內容,直到它檢測到你的語音中斷,表示你已經完成了與設備的對話。
🎓 喚醒詞檢測也稱為關鍵詞檢測或關鍵詞識別。
這些喚醒詞是在設 備上檢測的,而不是在雲端。這些智能設備有小型 AI 模型在設備上運行,聆聽喚醒詞,當檢測到時,開始將音頻流式傳輸到雲端進行識別。這些模型非常專業,只聆聽喚醒詞。
💁 一些科技公司正在為他們的設備增加更多的隱私,並在設備上進行部分語音轉文本轉換。蘋果公司宣布,作為其2021年 iOS 和 macOS 更新的一部分,他們將支持在設備上進行語音轉文本轉換,並能夠處理許多請求而不需要使用雲端。這得益於他們設備中強大的處理器,可以運行機器學習模型。
✅ 你認為將音頻發送到雲端存儲的隱私和道德影響是什麼?這些音頻應該被存儲嗎?如果是,應該如何存儲?你認為將錄音用於執法是隱私損失的良好權衡嗎?
喚醒詞檢測通常使用稱為 TinyML 的技術,即將機器學習模型轉換為可以在微控制器上運行。這些模型體積小,運行時消耗的功率很少。
為了避免訓練和使用喚醒詞模型的複雜性,你在本課程中構建的智能計時器將使用按鈕來打開語音識別。
💁 如果你想嘗試創建一個在 Wio Terminal 或 Raspberry Pi 上運行的喚醒詞檢測模型,請查看這個 Edge Impulse 的回應你的聲音教程。如果你想使用你的計算機來做這個,你可以嘗試 Microsoft 文檔上的自定義關鍵詞快速入門。
將語音轉換為文本
就像在前一個項目中的圖像分類一樣,有預構建的 AI 服務可以將語音作為音頻文件並轉換為文本。其中一個服務是語音服務,這是認知服務的一部分,你可以在你的應用中使用這些預構建的 AI 服務。
任務 - 配置語音 AI 資源
-
為此項目創建一個名為
smart-timer
的資源組 -
使用以下命令創建一個免費的語音資源:
az cognitiveservices account create --name smart-timer \
--resource-group smart-timer \
--kind SpeechServices \
--sku F0 \
--yes \
--location <location>將
<location>
替換為創建資源組時使用的位置。 -
你將需要一個 API 密鑰來從你的代碼訪問語音資源。運行以下命令以獲取密鑰:
az cognitiveservices account keys list --name smart-timer \
--resource-group smart-timer \
--output table複製其中一個密鑰。
任務 - 將語音轉換為文本
按照相關指南在您的物聯網設備上將語音轉換為文本:
🚀 挑戰
語音識別已經存在很長時間,並且不斷改進。研究當前的能力並比較這些能力隨時間的演變,包括機器轉錄與人類轉錄的準確性。
你認為語音識別的未來會是什麼?
課後測驗
回顧與自學
- 閱讀有關不同麥克風類型及其工作原理的文章 Musician's HQ 上的動圈和電容麥克風之間的區別。
- 閱讀有關認知服務語音服務的更多信息 Microsoft Docs 上的語音服務文檔
- 閱讀有關關鍵詞檢測的更多信息 Microsoft Docs 上的關鍵詞識別文檔