Sesame CSM: A Conversational Speech Generation Model
Sesame CSM:一个会话式语音生成模型
2025/03/13 - 我们发布了 1B 的 CSM 变体。该检查点托管在 Hugging Face 上。
CSM (Conversational Speech Model) 是来自 Sesame 的语音生成模型,可以从文本和音频输入生成 RVQ 音频代码。该模型架构采用 Llama 主干网络和一个较小的音频解码器,该解码器生成 Mimi 音频代码。
CSM 的一个微调变体为我们博客文章 中显示的 交互式语音演示 提供支持。
一个托管的 Hugging Face space 也可用于测试音频生成。
要求
- 一块兼容 CUDA 的 GPU
- 该代码已经在 CUDA 12.4 和 12.6 上进行了测试,但也可能在其他版本上工作
- 同样,建议使用 Python 3.10,但更新的版本可能也可以
- 对于一些音频操作,可能需要
ffmpeg
- 访问以下 Hugging Face 模型:
设置
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 团队.