speechbrain.lobes.models.huggingface_transformers.encodec 模块
该模块支持集成huggingface预训练的EnCodec。
EnCodec 使得将音频压缩成不同带宽的离散标记序列成为可能 - 并且可以从这些序列中重建音频,根据带宽的不同会有一些质量损失。
请注意,虽然encodec可以用于重建语音数据,但为了获得高质量的语音重建,建议使用专门训练的声码器,例如Vocos (speechbrain.lobes.models.huggingface_transformers.vocos)
仓库: https://huggingface.co/docs/transformers/v4.31.0/en/model_doc/encodec 论文: https://arxiv.org/abs/2210.13438
- Authors
阿尔乔姆·普洛日尼科夫 2023
摘要
类:
HuggingFace encodec 模型的封装器 |
参考
- class speechbrain.lobes.models.huggingface_transformers.encodec.Encodec(source, save_path=None, sample_rate=None, bandwidth=1.5, flat_embeddings=False, freeze=True, renorm_embeddings=True)[source]
-
HuggingFace encodec 模型的封装器
- Parameters:
source (str) – 一个 HuggingFace 仓库标识符或路径
save_path (str) – 预训练模型将被保存的位置
sample_rate (int) – 音频采样率
带宽 (float) – 编码带宽,单位为kbps(可选) 支持的带宽: 1.5, 3.0, 6.0, 12.0, 24.0
flat_embeddings (bool) – 如果设置为True,嵌入将被展平为 (Batch x Length x (Heads * Embedding))
freeze (bool) – 模型是否会被冻结(例如,如果用作训练另一个模型的一部分,则不可训练)
renorm_embeddings (bool) – 是否应该重新归一化嵌入。在原始模型中。
Example
>>> model_hub = "facebook/encodec_24khz" >>> save_path = "savedir" >>> model = Encodec(model_hub, save_path) >>> audio = torch.randn(4, 1000) >>> length = torch.tensor([1.0, .5, .75, 1.0]) >>> tokens, emb = model.encode(audio, length) >>> tokens.shape torch.Size([4, 4, 2]) >>> emb.shape torch.Size([4, 4, 2, 128]) >>> rec = model.decode(tokens, length) >>> rec.shape torch.Size([4, 1, 1280]) >>> rec_emb = model.decode_emb(emb, length) >>> rec_emb.shape torch.Size([4, 1, 1280]) >>> rec_tokens = model.tokens(emb, length) >>> rec_tokens.shape torch.Size([4, 4, 2]) >>> model = Encodec(model_hub, save_path, flat_embeddings=True) >>> _, emb = model.encode(audio, length) >>> emb.shape torch.Size([4, 4, 256])
- calibrate(sample, length)[source]
校准声音样本的归一化
- Parameters:
sample (torch.Tensor) – 一个 (Batch x Samples) 或 (Batch x Channel x Samples) 的音频样本
length (torch.Tensor) – 一个相对长度的张量
- Returns:
emb_mean (torch.Tensor) – 嵌入均值
emb_std (torch.Tensor) – 嵌入标准差
- forward(inputs, length)[source]
将输入音频编码为令牌
- Parameters:
inputs (torch.Tensor) – 一个 (Batch x Samples) 或 (Batch x Channel x Samples) 的音频张量
length (torch.Tensor) – 一个相对长度的张量
- Returns:
tokens – 一个 (Batch X Tokens) 的音频令牌张量
- Return type:
torch.Tensor
- encode(inputs, length)[source]
将输入音频编码为标记和嵌入
- Parameters:
inputs (torch.Tensor) – 一个 (Batch x Samples) 或 (Batch x Channel x Samples) 的音频张量
length (torch.Tensor) – 一个相对长度的张量
- Returns:
tokens (torch.Tensor) – 一个 (Batch x Tokens x Heads) 的音频令牌张量
emb (torch.Tensor) – 来自模型量化器的原始向量嵌入
- embeddings(tokens)[source]
将标记索引转换为向量嵌入
- Parameters:
tokens (torch.Tensor) – 一个 (Batch x Length x Heads) 的 token 索引张量
- Returns:
emb – 一个 (Batch x Length x Heads x Embedding) 张量 来自模型的量化器码本的原始向量嵌入
- Return type:
torch.Tensor
- decode(tokens, length=None)[source]
从标记解码音频
- Parameters:
tokens (torch.Tensor) – 一个 (Batch x Length x Heads) 的音频令牌张量
length (torch.Tensor) – 一个1维张量,表示相对长度
- Returns:
audio – 重建的音频
- Return type:
torch.Tensor