TextToSpeech-語音初探

TextToSpeech-語音初探

更新於 發佈於 閱讀時間約 4 分鐘

一.引言

  在 AI 應用中,圖像語音文字三種可以說是主要應用,其中我一直以來都是專注於圖像上的研究,對於另兩種僅止於淺嚐,接下來就往音訊上研究看看,先從入門級的Text-To-Speech (TTL) 入場並一個個嘗試其他類型的應用,那麼,就讓我們開始吧。

二.TTS 技術的基本原理

  文字轉語音技術主要包括兩個核心原理:文字分析 (Text Analysis) 和語音合成 (Speech Synthesis)。

文字分析 (Text Analysis)

  • 文本正規化 (Text Normalization): 將輸入的文本轉換為標準形式,如將數字、符號、縮寫等轉換為全稱。
  • 詞法分析 (Lexical Analysis): 將句子分割成詞或詞組。
  • 音韻分析 (Phonetic Analysis): 將詞轉換為音標,對應發音。

為什麼要文字分析?

在設計深度學習架構時,很重要的一點便是定義出輸入輸出,該設計一個合理的輸入輸出是成功訓練的第一步

在先前的影像訓練中,圖片本身已經是一個數位化的結果,像素值也都限制在0-255的範圍,所以在圖像應用中,神經網路能直接利用這些像素值理解整張圖像的內容,所以並不用對輸入考慮太多

但到了文字這裡,情況就不太一樣了,我們輸入的文字該如何讓網路理解呢?

平常網頁或文字檔案若要顯示文字,會使用各種編碼方式定義出每個字,例如<我>這個字在UTF-8編碼下是&#x6211,但是&#x6211與ㄨㄛˇ這個發音可說是完全不相干,所以要讓神經網路理解<我>是<我>,勢必得找尋其他方案,所以文字分析便是讓句子轉換成一個網路能夠理解的格式,並且與我們想訓練的目標是有連結性的。

語音合成 (Speech Synthesis)

  • 參數合成 (Parametric Synthesis): 使用預設的語音參數生成語音波形。
  • 波形合成 (Waveform Synthesis): 直接生成語音波形,常見的方法有基於神經網絡的 WaveNet 和基於聲碼器的 Griffin-Lim 演算法。

語音合成部分則是將我們的文字編碼輸入經過神經網路後,我們希望他能轉換成某種音訊特徵,然後我們可以利用此音訊特徵將音訊重建出來,這個重建的過程便是語音合成。

於是統整下來,整個 TTL 流程可以分成幾個部分 :

  1. 輸入前處理 : 將文字編碼成網路能理解的模式
  2. 預測音訊特徵 : 使用神經網路將文字編碼轉換成音訊特徵
  3. 語音合成 : 使用神經網路將音訊特徵重建成音訊

三.結語

  TTL 包含了文字與音訊的處理,要說明完善篇幅也不太足夠(像是前處理的Embedding,其中網路架構設計以及音訊重建時的細節),於是我打算接下來會分個幾篇詳細說明 TTL 中的每個環節,這篇主要是了解 TTL 大致上有甚麼步驟,對其有個概念,下篇開始就會參雜一些比較硬的部分了,希望能夠說明得淺顯易懂。

avatar-img
貓貓學習筆記
9會員
21內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
留言
avatar-img
留言分享你的想法!
貓貓學習筆記 的其他內容
不知道大家會不會有這種感覺,在使用現今的一些預訓練模型時,雖然好用,但是實際在場域部屬時總感覺殺雞焉用牛刀,實際使用下去後續又沒有時間讓你去優化它,只好將錯就錯反正能用的想法持續使用,現在有個不錯的方法讓你在一開始就可以用相對低廉的成本去優化這個模型,讓後續使用不再懊悔。
  經過三篇的進展,我們目前實作的網路已經能做到同時訓練多種風格,且後續可以直接進行轉換,不用重新訓練,但是這種方法畢竟還是受到了預訓練的風格制約,無法跳脫出來,那麼有什麼辦法能夠讓他對於沒學過的風格也有一定的反應能力呢?
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
在第一篇我講到一開始的圖像風格轉換,每產生一張圖片都得重新訓練,這對於使用上難免綁手綁腳,所以理所當然的下一步就是要解決這個問題,看看能不能只要訓練一次,就可以重複使用。
  最近遇到一些人想做音訊的合成,我回答他或許可以從圖像風格轉換中找到些靈感,我才突然想起我對於這部分的認知只止於知道他能做什麼及結果大概如何,對於內部訓練邏輯及結構並沒有認真的去了解,現在剛好趁此機會好好的學習一下。
不知道大家會不會有這種感覺,在使用現今的一些預訓練模型時,雖然好用,但是實際在場域部屬時總感覺殺雞焉用牛刀,實際使用下去後續又沒有時間讓你去優化它,只好將錯就錯反正能用的想法持續使用,現在有個不錯的方法讓你在一開始就可以用相對低廉的成本去優化這個模型,讓後續使用不再懊悔。
  經過三篇的進展,我們目前實作的網路已經能做到同時訓練多種風格,且後續可以直接進行轉換,不用重新訓練,但是這種方法畢竟還是受到了預訓練的風格制約,無法跳脫出來,那麼有什麼辦法能夠讓他對於沒學過的風格也有一定的反應能力呢?
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
在第一篇我講到一開始的圖像風格轉換,每產生一張圖片都得重新訓練,這對於使用上難免綁手綁腳,所以理所當然的下一步就是要解決這個問題,看看能不能只要訓練一次,就可以重複使用。
  最近遇到一些人想做音訊的合成,我回答他或許可以從圖像風格轉換中找到些靈感,我才突然想起我對於這部分的認知只止於知道他能做什麼及結果大概如何,對於內部訓練邏輯及結構並沒有認真的去了解,現在剛好趁此機會好好的學習一下。