語音合成(Text-to-speech,TTS)是指文本到音頻的人工轉換,也可以說給定一段文字去生成對應的人類讀音。人類通過閱讀來完成這項任務,而一個好的TTS系統(tǒng)是讓計算機自動完成這項任務。
在打造這樣一個系統(tǒng)時,一個非常有趣的地方是為生成的音頻選擇哪個聲音,是男人還是女人的聲音?聲音是大還是小?
在使用深度學習創(chuàng)建TTS時,這有一個限制,你必須收集文本-音頻的數(shù)據(jù)集,而錄制演講的演講者可能是固定的——因為你不可能有無限多個演講者!
所以,如果你想為自己或他人的聲音創(chuàng)建音頻,唯一的方法就是收集一個全新的數(shù)據(jù)集。
來自谷歌名為 Voice Cloning 的人工智能研究使計算機可以用任何類型聲音發(fā)出聲音。
很明顯,為了讓電腦能夠使用任何類型聲音發(fā)出聲音,它需要理解兩件事:它讀的是什么以及它是如何讀的。
因此,谷歌研究人員設計的語音克隆系統(tǒng)有兩個輸入:我們想要讀取的文本和我們想要用來閱讀文本的語音樣本。
例如,如果我們想讓蝙蝠俠讀“我愛披薩”這句話,那么我們會給系統(tǒng)兩樣東西:“我愛披薩”的文本和一小段蝙蝠俠的聲音樣本,這樣它就知道蝙蝠俠的聲音應該是什么樣的。而電腦的輸出應該是蝙蝠俠說“我愛披薩”的聲音音頻!
從技術角度來看,系統(tǒng)分為3個順序組件:
給定我們希望使用的聲音的一個小音頻樣本,將語音波形編碼為一個固定的維向量表示
給定一段文本,也把它編碼成向量表示。將語音和文本這兩個向量結合起來,將它們解碼成聲譜圖
使用聲碼器將聲譜圖轉換成我們可以聽到的音頻波形。
系統(tǒng)的簡化版本
在文章中,我們對這三個部分分別進行了訓練。
在過去幾年中,語音合成系統(tǒng)在深度學習社區(qū)中得到了很多研究關注。事實上,有很多基于深度學習針對語音合成的解決方案都非常有效。
這里的關鍵是,系統(tǒng)能夠將編碼器從語音中學到的“知識”應用到文本中。
在分別編碼后,將語音和文本組合在一個公共的嵌入空間中,然后進行解碼,生成最終的輸出波形。
多虧了人工智能社區(qū)中開放源碼思想的美妙之處,在這里有一個公開可用的語音克隆實現(xiàn)!你可以按照下面的介紹這樣來使用它。
首先克隆倉庫:
git clone https://github.com/CorentinJ/Real-Time-Voice-Cloning.git
安裝必要的庫并確保使用的是Python 3的版本:
pip3 install -r requirements.txt
在README文件中,你還可以找到下載預訓練模型和數(shù)據(jù)集的鏈接,并嘗試一些示例。
最后,你可以運行以下命令打開GUI:
python demo_toolbox.py -d <datasets_root>
下面是我這邊運行操作的一個截圖:
正如你所看到的,右上角的輸入框中是我想讓電腦閱讀的文字:“Did you know that the Toronto Raptors are Basketball champions? Basketball is a great sport.”
你可以點擊每個部分下面的 “Random” 按鈕來隨機化語音輸入,然后點擊 “Load” 將語音輸入加載到系統(tǒng)中。
Dataset 從你選擇的語音樣本中選擇數(shù)據(jù)集,Speaker 選擇說話的人,Utterance 選擇輸入語音所說的短語。如果想聽輸入的語音是怎樣的,只需點擊 “Play” 按鈕。
一旦你點擊 “Synthesize and vocode” 按鈕,算法就會運行。一旦運行結束,你將聽到揚聲器以某個聲音朗讀你的輸入文本。
你甚至可以錄制你自己的聲音作為輸入,只需要點擊 “Record one” 按鈕。相信我,這會非常有趣!
如果你想了解更多關于這個算法的工作原理,你可以閱讀谷歌的官方NIPS論文。這里(https://google.github.io/tacotron/publications/speaker_adaptation/)還有一些音頻樣本結果。
論文鏈接:
https://arxiv.org/pdf/1806.04558.pdf
歡迎關注磐創(chuàng)博客資源匯總站:
http://docs.panchuang.net/
歡迎關注PyTorch官方中文教程站:
http://pytorch.panchuang.net/