# 設定計時器並提供語音回饋 ![本課程的手繪筆記概覽](../../../../../translated_images/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.tw.jpg) > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 ## 課前測驗 [課前測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/45) ## 簡介 智慧助理並非單向的溝通設備。你對它說話,它會回應你: 「Alexa,設定一個3分鐘的計時器」 「好的,您的計時器已設定為3分鐘」 在前兩節課中,你學會了如何將語音轉換為文字,然後從文字中提取設定計時器的請求。在本課中,你將學習如何在物聯網設備上設定計時器,並以語音回應用戶確認計時器已設定,並在計時器結束時提醒用戶。 本課將涵蓋以下內容: * [文字轉語音](../../../../../6-consumer/lessons/3-spoken-feedback) * [設定計時器](../../../../../6-consumer/lessons/3-spoken-feedback) * [將文字轉換為語音](../../../../../6-consumer/lessons/3-spoken-feedback) ## 文字轉語音 顧名思義,文字轉語音是將文字轉換為包含語音的音頻的過程。其基本原理是將文字中的單詞分解為其組成的聲音(稱為音素),然後將這些聲音的音頻拼接在一起,這些音頻可以是預錄的,也可以是由人工智慧模型生成的。 ![典型文字轉語音系統的三個階段](../../../../../translated_images/tts-overview.193843cf3f5ee09f8b3371a9fdaeb0f116698a07ca69daaa77158da4800e5453.tw.png) 文字轉語音系統通常有三個階段: * 文字分析 * 語言學分析 * 波形生成 ### 文字分析 文字分析是指將提供的文字轉換為可以用於生成語音的單詞。例如,如果你轉換「Hello world」,則不需要進行文字分析,這兩個單詞可以直接轉換為語音。但如果是「1234」,則可能需要根據上下文將其轉換為「一千二百三十四」或「一、二、三、四」。例如,「我有1234個蘋果」應該是「一千二百三十四」,而「孩子數到1234」則應該是「一、二、三、四」。 單詞的生成不僅取決於語言,還取決於該語言的地區。例如,在美式英語中,120是「One hundred twenty」,而在英式英語中則是「One hundred and twenty」,多了一個「and」。 ✅ 其他需要文字分析的例子包括「in」作為英寸的縮寫,以及「st」作為聖徒或街道的縮寫。你能想到在你的語言中有哪些單詞在沒有上下文時會產生歧義嗎? 一旦單詞被定義,它們就會被送去進行語言學分析。 ### 語言學分析 語言學分析將單詞分解為音素。音素不僅基於使用的字母,還基於單詞中的其他字母。例如,在英語中,「car」和「care」中的「a」發音是不同的。英語中有44個不同的音素,而字母表只有26個字母,有些音素由不同的字母共享,例如「circle」和「serpent」的開頭使用相同的音素。 ✅ 做些研究:你的語言有哪些音素? 當單詞被轉換為音素後,這些音素需要額外的數據來支持語調,根據上下文調整音調或持續時間。例如,在英語中,音調的升高可以將一個句子轉換為疑問句,最後一個單詞的音調升高意味著這是一個問題。 例如,句子「You have an 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定義了一個請求,將文字「您的3分鐘5秒計時器已設定」轉換為語音,使用名為`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) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。