跳至主要内容

設定計時器並提供語音反饋

本課程的手繪筆記概述

手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。

課前測驗

課前測驗

介紹

智慧助理並不是單向的通信設備。你對它們說話,它們會回應你:

「Alexa,設置一個3分鐘的計時器」

「好的,你的計時器已設置為3分鐘」

在前兩節課中,你學會了如何將語音轉換為文本,然後從該文本中提取設置計時器的請求。在本課中,你將學習如何在物聯網設備上設置計時器,並用語音回應用戶確認他們的計時器,並在計時器結束時提醒他們。

在本課中,我們將涵蓋:

文本轉語音

顧名思義,文本轉語音是將文本轉換為包含該文本的語音的過程。基本原理是將文本中的單詞分解為其組成的聲音(稱為音素),並將這些聲音的音頻拼接在一起,可以使用預錄的音頻或使用AI模型生成的音頻。

典型文本轉語音系統的三個階段

文本轉語音系統通常有三個階段:

  • 文本分析
  • 語言分析
  • 波形生成

文本分析

文本分析涉及將提供的文本轉換為可用於生成語音的單詞。例如,如果你轉換「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端點並設置所需時間的計時器:

將文本轉換為語音

你用於將語音轉換為文本的相同語音服務也可以用於將文本轉換回語音,並可以通過你的物聯網設備上的揚聲器播放。要轉換的文本會被發送到語音服務,並附上所需的音頻類型(例如採樣率),然後返回包含音頻的二進制數據。

當你發送此請求時,你會使用語音合成標記語言(SSML),這是一種基於XML的語音合成應用標記語言。這不僅定義了要轉換的文本,還定義了文本的語言、使用的聲音,甚至可以用於定義某些或所有單詞的速度、音量和音調。

例如,這個SSML定義了一個請求,將文本「Your 3 minute 5 second time has been set」轉換為使用名為en-GB-MiaNeural的英式英語聲音的語音

<speak version='1.0' xml:lang='en-GB'>
<voice xml:lang='en-GB' name='en-GB-MiaNeural'>
Your 3 minute 5 second time has been set
</voice>
</speak>

💁 大多數文本轉語音系統都有多種語言的多種聲音,具有相關的口音,例如具有英國口音的英式英語聲音和具有紐西蘭口音的紐西蘭英語聲音。

任務 - 將文本轉換為語音

按照相關指南使用你的物聯網設備將文本轉換為語音:


🚀 挑戰

SSML 有多種方法可以改變單詞的發音方式,例如強調某些單詞、添加停頓或改變音調。嘗試一些這些方法,從你的物聯網設備發送不同的 SSML 並比較輸出。你可以閱讀更多關於 SSML 的內容,包括如何改變單詞的發音方式,請參閱世界萬維網聯盟的語音合成標記語言 (SSML) 1.1 版規範

課後測驗

課後測驗

將文本轉換為語音

你用於將語音轉換為文本的相同語音服務也可以用於將文本轉換回語音,並可以通過你的物聯網設備上的揚聲器播放。要轉換的文本會被發送到語音服務,並附上所需的音頻類型(例如採樣率),然後返回包含音頻的二進制數據。

當你發送此請求時,你會使用語音合成標記語言(SSML),這是一種基於XML的語音合成應用標記語言。這不僅定義了要轉換的文本,還定義了文本的語言、使用的聲音,甚至可以用於定義某些或所有單詞的速度、音量和音調。

例如,這個SSML定義了一個請求,將文本「Your 3 minute 5 second time has been set」轉換為使用名為en-GB-MiaNeural的英式英語聲音的語音