要如何做到無須任何額外訓練樣本就能做到"跨語言"的語音生成,這聽起來很不可思議對吧? 但這就是OpenVoice Model取得的最大成就,不僅如此,該有的功能,如調整情感,口音節奏,停頓語調這些功能也不在話下。此外,運算效率極高,效果卻超群。跟我一起用探秘還有獨立思考的眼光來分析這篇論文,這會是很有趣的旅程。
假設現在有一個專門講英文的老外,你很喜歡他的聲音,想讓他講中文,你只需要輸入他的聲音,然後打入中文,他就能開始使用他的聲音講中文,然後你為了要產生一些情緒落差,可以調整讓他開心或是難過的講完內容。突然你又想要讓他講台灣國語,也可以調整讓他講台灣國語,所有的語音戲劇效果,都能夠用很簡單的方式產生。
其實不管是情緒/語調還是口音,都可以藉由學習有標記過的語音資料集配合文字來進行學習,這些條件在使用上也是放在輸入端當成選項,更為方便一些,這塊有大量的Previous Work可以參考,本篇作者使用 VITS架構,把要生成的語音風格利用MLP(多層感知層) 化成Embedding和文字的Embedding混合再輸入到Text Encoder裡面,其它的完全使用VITS架構,這告訴我們想要加一些額外的條件進入本來的Model裡面都可以使用這種便宜簡單的方法,但這個並不能算是獨門秘訣,比較廣為人知。
緊接著,拿手絕活登場了,下圖標紅字的部分,用了Tone Color Extractor自己的Base Speaker Encoder輸入到Flow (Normalization Flow Layer)裡面,並使用minimize KL-divergence & Time-domain warping的方式來盡可能的去除音色(Tone Color),讓其純粹的表達國際音標(IPA)所對應到的聲音,好讓Tone Color Extractor自己的Reference Speaker Encoder可以盡可能地往裡面加入音色,不會混雜了Base speaker TTS model 原有的音色。