Sesame CSM:一个会话式语音生成模型

2025/03/13 - 我们发布了 1B 的 CSM 变体。该检查点托管在 Hugging Face 上。

CSM (Conversational Speech Model) 是来自 Sesame 的语音生成模型,可以从文本和音频输入生成 RVQ 音频代码。该模型架构采用 Llama 主干网络和一个较小的音频解码器,该解码器生成 Mimi 音频代码。

CSM 的一个微调变体为我们博客文章 中显示的 交互式语音演示 提供支持。

一个托管的 Hugging Face space 也可用于测试音频生成。

要求

设置

git clone git@github.com:SesameAILabs/csm.git
cd csm
python3.10 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# You will need access to CSM-1B and Llama-3.2-1B
huggingface-cli login

Windows 设置

triton 包无法在 Windows 中安装。 请使用 pip install triton-windows 代替。

用法

生成一个句子

from generator import load_csm_1b
import torchaudio
import torch
if torch.backends.mps.is_available():
  device = "mps"
elif torch.cuda.is_available():
  device = "cuda"
else:
  device = "cpu"
generator = load_csm_1b(device=device)
audio = generator.generate(
  text="Hello from Sesame.",
  speaker=0,
  context=[],
  max_audio_length_ms=10_000,
)
torchaudio.save("audio.wav", audio.unsqueeze(0).cpu(), generator.sample_rate)

当提供上下文时,CSM 的效果最佳。您可以使用每个说话者的 Segment 来提示或向模型提供上下文。

speakers = [0, 1, 0, 0]
transcripts = [
  "Hey how are you doing.",
  "Pretty good, pretty good.",
  "I'm great.",
  "So happy to be speaking to you.",
]
audio_paths = [
  "utterance_0.wav",
  "utterance_1.wav",
  "utterance_2.wav",
  "utterance_3.wav",
]
def load_audio(audio_path):
  audio_tensor, sample_rate = torchaudio.load(audio_path)
  audio_tensor = torchaudio.functional.resample(
    audio_tensor.squeeze(0), orig_freq=sample_rate, new_freq=generator.sample_rate
  )
  return audio_tensor
segments = [
  Segment(text=transcript, speaker=speaker, audio=load_audio(audio_path))
  for transcript, speaker, audio_path in zip(transcripts, speakers, audio_paths)
]
audio = generator.generate(
  text="Me too, this is some cool stuff huh?",
  speaker=1,
  context=segments,
  max_audio_length_ms=10_000,
)
torchaudio.save("audio.wav", audio.unsqueeze(0).cpu(), generator.sample_rate)

FAQ

此模型是否附带任何声音?

这里开源的模型是一个基础生成模型。 它能够产生各种声音,但尚未针对任何特定声音进行微调。

我可以与模型交谈吗?

CSM 经过训练成为音频生成模型,而不是通用多模态 LLM。 它无法生成文本。 我们建议使用单独的 LLM 进行文本生成。

它支持其他语言吗?

由于训练数据中的数据污染,该模型对非英语语言具有一定的能力,但可能效果不佳。

误用和滥用⚠️

该项目提供高质量的语音生成模型,用于研究和教育目的。 虽然我们鼓励负责任和合乎道德的使用,但我们明确禁止以下行为:

使用此模型即表示您同意遵守所有适用的法律和道德准则。 我们对任何误用概不负责,并强烈谴责该技术的不道德应用。

作者

Johan Schalkwyk, Ankit Kumar, Dan Lyth, Sefik Emre Eskimez, Zack Hodari, Cinjon Resnick, Ramon Sanabria, Raven Jiang, 以及 Sesame 团队.