音訊課程文件
使用管道進行音訊生成
並獲得增強的文件體驗
開始使用
使用管道進行音訊生成
音訊生成包含一系列涉及生成音訊輸出的通用任務。我們將在這裡探討的任務是語音生成(又稱“文字轉語音”)和音樂生成。在文字轉語音中,模型將一段文字轉換為逼真的口語,為虛擬助手、視障輔助工具和個性化有聲讀物等應用打開了大門。另一方面,音樂生成可以實現創造性表達,主要用於娛樂和遊戲開發行業。
在 🤗 Transformers 中,您會找到一個涵蓋這兩個任務的管道。這個管道被稱為 "text-to-audio"
,但為了方便起見,它也有一個 "text-to-speech"
別名。在這裡我們將同時使用這兩個,您可以自由選擇哪個更適用於您的任務。
讓我們探討如何使用此管道,僅需幾行程式碼即可開始為文字生成音訊旁白和音樂。
此管道是 🤗 Transformers 的新功能,作為 4.32 版本的一部分發布。因此,您需要將庫升級到最新版本才能獲得此功能
pip install --upgrade transformers
生成語音
讓我們從探索文字轉語音生成開始。首先,就像音訊分類和自動語音識別一樣,我們需要定義管道。我們將定義一個文字轉語音管道,因為它最能描述我們的任務,並使用 suno/bark-small
檢查點。
from transformers import pipeline
pipe = pipeline("text-to-speech", model="suno/bark-small")
下一步就像將一些文字傳遞給管道一樣簡單。所有預處理都將在幕後為我們完成
text = "Ladybugs have had important roles in culture and religion, being associated with luck, love, fertility and prophecy. "
output = pipe(text)
在筆記本中,我們可以使用以下程式碼片段來收聽結果
from IPython.display import Audio
Audio(output["audio"], rate=output["sampling_rate"])
我們與管道一起使用的模型 Bark 實際上是多語言的,因此我們可以輕鬆地將原始文字替換為法語文字,並以完全相同的方式使用管道。它會自行識別語言
fr_text = "Contrairement à une idée répandue, le nombre de points sur les élytres d'une coccinelle ne correspond pas à son âge, ni en nombre d'années, ni en nombre de mois. "
output = pipe(fr_text)
Audio(output["audio"], rate=output["sampling_rate"])
這個模型不僅是多語言的,它還可以生成包含非語言交流和歌唱的音訊。以下是您可以讓它唱歌的方法
song = "♪ In the jungle, the mighty jungle, the ladybug was seen. ♪ "
output = pipe(song)
Audio(output["audio"], rate=output["sampling_rate"])
我們將在後續專門介紹文字轉語音的單元中深入探討 Bark 的具體細節,並展示如何將其他模型用於此任務。現在,讓我們生成一些音樂!
生成音樂
和之前一樣,我們首先例項化一個管道。對於音樂生成,我們將定義一個文字轉音訊管道,並使用預訓練檢查點 facebook/musicgen-small
初始化它。
music_pipe = pipeline("text-to-audio", model="facebook/musicgen-small")
讓我們建立一個我們想要生成的音樂的文字描述
text = "90s rock song with electric guitar and heavy drums"
我們可以透過向模型傳遞一個額外的 max_new_tokens
引數來控制生成輸出的長度。
forward_params = {"max_new_tokens": 512}
output = music_pipe(text, forward_params=forward_params)
Audio(output["audio"][0], rate=output["sampling_rate"])