音频课程文档

使用管道生成音频

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验

开始使用

使用管道生成音频

音频生成包含一组多功能的任务,这些任务涉及生成音频输出。我们这里将探讨的任务包括语音生成(也称为“文本转语音”)和音乐生成。在文本转语音中,模型将一段文本转换为逼真的口语声音,为虚拟助手、视障人士的辅助工具和个性化有声读物等应用打开了大门。另一方面,音乐生成可以促进创意表达,主要用于娱乐和游戏开发行业。

在 🤗 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"])