# 設定計時器並提供語音回饋 ![本課程的手繪筆記概覽](../../../../../translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.mo.jpg) > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片以查看更大版本。 ## 課前測驗 [課前測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/45) ## 簡介 智慧助理並非單向溝通的設備。你對它說話,它會回應你: 「Alexa,設定一個三分鐘的計時器」 「好的,計時器已設定為三分鐘」 在前兩節課中,你學會了如何將語音轉換為文字,並從文字中提取設定計時器的請求。在本課中,你將學習如何在物聯網設備上設定計時器,並以語音回應用戶確認計時器已設定,當計時器結束時提醒用戶。 本課將涵蓋以下內容: * [文字轉語音](../../../../../6-consumer/lessons/3-spoken-feedback) * [設定計時器](../../../../../6-consumer/lessons/3-spoken-feedback) * [將文字轉換為語音](../../../../../6-consumer/lessons/3-spoken-feedback) ## 文字轉語音 文字轉語音,顧名思義,是將文字轉換為包含語音的音頻的過程。基本原理是將文字中的單詞分解為其構成的聲音(稱為音素),然後將這些聲音的音頻拼接在一起,這些音頻可以是預先錄製的,也可以是由人工智慧模型生成的。 ![典型文字轉語音系統的三個階段](../../../../../translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.mo.png) 文字轉語音系統通常包含三個階段: * 文字分析 * 語言學分析 * 波形生成 ### 文字分析 文字分析是將提供的文字轉換為可以用於生成語音的單詞。例如,將「Hello world」轉換為語音時,不需要進行文字分析,因為這兩個單詞可以直接轉換為語音。然而,如果是「1234」,則可能需要根據上下文將其轉換為「一千兩百三十四」或「一二三四」。例如,「I have 1234 apples」應該是「一千兩百三十四」,而「The child counted 1234」則應該是「一二三四」。 單詞的生成不僅因語言而異,還因語言的地區差異而不同。例如,在美式英語中,120 是「One hundred twenty」,而在英式英語中則是「One hundred and twenty」,多了一個「and」。 ✅ 其他需要文字分析的例子包括「in」作為英寸的縮寫,以及「st」作為聖徒或街道的縮寫。你能想到在你的語言中有哪些在沒有上下文時容易產生歧義的例子嗎? 當單詞被定義後,它們會被送去進行語言學分析。 ### 語言學分析 語言學分析將單詞分解為音素。音素不僅基於使用的字母,還基於單詞中的其他字母。例如,在英語中,「car」和「care」中的「a」發音是不同的。英語有 44 個音素,而字母表只有 26 個字母,有些音素由不同的字母共享,例如「circle」和「serpent」開頭的音素相同。 ✅ 做一些研究:你的語言有哪些音素? 當單詞被轉換為音素後,這些音素需要額外的數據來支持語調,根據上下文調整音調或時長。例如,在英語中,音調的升高可以將句子轉換為疑問句,最後一個單詞的音調升高意味著這是一個問題。 例如,句子「You have an apple」是一個陳述句,表示你有一個蘋果。如果最後一個單詞「apple」的音調升高,則變成了「You have an apple?」,詢問你是否有一個蘋果。語言學分析需要利用句末的問號來決定是否提高音調。 當音素生成後,它們會被送去進行波形生成以產生音頻輸出。 ### 波形生成 最早的電子文字轉語音系統使用每個音素的單一音頻錄音,這導致了非常單調、機械化的聲音。語言學分析會生成音素,這些音素會從聲音數據庫中加載並拼接在一起生成音頻。 ✅ 做一些研究:找一些早期語音合成系統的音頻錄音。將其與現代語音合成(如智慧助理中使用的語音合成)進行比較。 更現代的波形生成使用基於深度學習的機器學習模型(非常大的神經網絡,類似於大腦中的神經元)來生成更自然的聲音,這些聲音甚至可以與真人無法區分。 > 💁 這些機器學習模型可以通過遷移學習重新訓練,使其聽起來像真實的人。因此,使用聲音作為安全系統(例如銀行越來越多地嘗試這樣做)已不再是一個好主意,因為任何擁有幾分鐘你聲音錄音的人都可以模仿你。 這些大型機器學習模型正在被訓練以將所有三個步驟結合成端到端的語音合成器。 ## 設定計時器 要設定計時器,你的物聯網設備需要調用你使用無伺服器代碼創建的 REST 端點,然後使用返回的秒數來設定計時器。 ### 任務 - 調用無伺服器函數以獲取計時器時間 按照相關指南從你的物聯網設備調用 REST 端點,並設定所需時間的計時器: * [Arduino - Wio Terminal](wio-terminal-set-timer.md) * [單板電腦 - Raspberry Pi/虛擬物聯網設備](single-board-computer-set-timer.md) ## 將文字轉換為語音 你用於將語音轉換為文字的語音服務也可以用於將文字轉換回語音,並通過物聯網設備上的揚聲器播放。要轉換的文字會被發送到語音服務,並附帶所需的音頻類型(例如採樣率),然後返回包含音頻的二進制數據。 當你發送此請求時,你會使用*語音合成標記語言*(SSML),這是一種基於 XML 的語音合成應用標記語言。它不僅定義了要轉換的文字,還定義了文字的語言、使用的語音,甚至可以用於定義某些或所有文字的速度、音量和音調。 例如,以下 SSML 定義了一個請求,將文字「Your 3 minute 5 second time has been set」轉換為語音,使用名為 `en-GB-MiaNeural` 的英式英語語音: ```xml Your 3 minute 5 second time has been set ``` > 💁 大多數文字轉語音系統針對不同語言都有多種語音,並帶有相關的口音,例如英式英語語音帶有英國口音,紐西蘭英語語音帶有紐西蘭口音。 ### 任務 - 將文字轉換為語音 按照相關指南,使用你的物聯網設備將文字轉換為語音: * [Arduino - Wio Terminal](wio-terminal-text-to-speech.md) * [單板電腦 - Raspberry Pi](pi-text-to-speech.md) * [單板電腦 - 虛擬設備](virtual-device-text-to-speech.md) --- ## 🚀 挑戰 SSML 提供了改變單詞發音方式的方法,例如對某些單詞加強語氣、添加停頓或改變音調。嘗試使用不同的 SSML 從你的物聯網設備發送請求,並比較輸出效果。你可以在 [萬維網聯盟的語音合成標記語言 (SSML) 1.1 版規範](https://www.w3.org/TR/speech-synthesis11/)中閱讀更多關於 SSML 的內容,包括如何改變單詞的發音方式。 ## 課後測驗 [課後測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/46) ## 回顧與自學 * 在 [維基百科的語音合成頁面](https://wikipedia.org/wiki/Speech_synthesis)上閱讀更多關於語音合成的內容 * 在 [BBC 新聞的「假聲音幫助網絡罪犯偷錢」報導](https://www.bbc.com/news/technology-48908736)中閱讀更多關於罪犯如何利用語音合成進行盜竊的內容 * 在 [Vice 的文章「這起 TikTok 訴訟突顯了 AI 如何損害配音演員」](https://www.vice.com/en/article/z3xqwj/this-tiktok-lawsuit-is-highlighting-how-ai-is-screwing-over-voice-actors)中了解更多關於語音演員因其聲音的合成版本而面臨的風險 ## 作業 [取消計時器](assignment.md) --- **免責聲明**: 本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。