综合介绍
CSM Voice Cloning 是一个由 Isaiah Bjork 开发的开源项目,托管在 GitHub 上。它基于 Sesame CSM-1B 模型,用户只需提供一段音频样本,就能克隆自己的声音并生成带有个人特色的语音。这个工具支持本地 GPU 运行和 Modal 云端运行两种方式,适合内容创作者、开发者或对语音技术感兴趣的人。虽然克隆效果不是最完美的,但生成的语音能保留目标声音的部分特点,效果可辨识。它需要一定的技术基础,比如安装 Python 和配置环境,但官方提供了详细指南。项目完全免费,且欢迎社区贡献代码改进。
功能列表
- 语音克隆:上传音频样本,生成与样本声音相似的语音。
- 文本转语音:输入文字,生成带有克隆声音的音频文件。
- 本地运行:使用个人 GPU 处理语音生成任务。
- 云端运行:通过 Modal 平台借助云端 GPU 加速处理。
- 开源支持:代码公开,用户可以修改或优化。
- 支持常见音频格式:接受 MP3 或 WAV 文件作为样本。
- 参数调整:允许用户调整模型设置以适配不同长度音频。
使用帮助
安装流程
要使用 CSM Voice Cloning,用户需要先搭建运行环境。以下是详细步骤:
本地运行安装
- 检查硬件和软件要求
- 需要 Python 3.10 或更高版本。
- 本地运行需要 NVIDIA CUDA 兼容显卡和足够显存。
- 确保有网络连接下载模型和依赖项。
- 克隆代码仓库
- 打开终端(Windows 用 CMD 或 PowerShell,Linux/Mac 用 Bash)。
- 输入命令:
git clone https://github.com/isaiahbjork/csm-voice-cloning.git cd csm-voice-cloning
- 安装依赖项
- 在终端运行:
pip install -r requirements.txt
- 这会安装 PyTorch、Hugging Face 等必要库。
- 在终端运行:
云端运行安装(Modal)
- 安装 Modal
- 在终端运行:
pip install modal
- 在终端运行:
- 配置 Modal 认证
- 输入命令:
modal token new
- 按提示登录 Modal 账户或创建新账户。
- 输入命令:
配置 Hugging Face 账户
- 注册并获取令牌
- 访问 Hugging Face 网站,注册或登录。
- 在 Sesame CSM-1B 模型页面 点击 “Access repository” 并接受条款。
- 生成 API 令牌:点击右上角头像 -> Settings -> Tokens -> New Token。
- 设置令牌
- 方法一:在终端输入:
export HF_TOKEN="你的令牌"
- 方法二:修改
voice_clone.py
文件,找到os.environ["HF_TOKEN"]
,填入令牌。
- 方法一:在终端输入:
准备音频样本
- 录制音频
- 录制一段 2-3 分钟的清晰音频,建议无背景噪音。
- 保存为 MP3 或 WAV 格式,比如
sample.mp3
。
- 转录文本
- 用 Whisper 或其他工具转录音频内容,记下准确文本(比如 “你好,这是我的测试音频”)。
主要功能操作
本地语音克隆
- 编辑参数
- 打开
voice_clone.py
文件,修改以下内容:context_audio_path = "sample.mp3"
(音频路径)。context_text = "你好,这是我的测试音频"
(转录文本)。text = "今天天气很好"
(要生成的文字)。output_filename = "output.wav"
(输出文件名)。
- 打开
- 运行程序
- 在终端输入:
python voice_clone.py
- 生成的音频会保存在项目文件夹中。
- 在终端输入:
云端语音克隆(Modal)
- 编辑参数
- 打开
modal_voice_cloning.py
文件,设置与本地相同的参数:context_audio_path = "sample.mp3"
。context_text = "你好,这是我的测试音频"
。text = "今天天气很好"
。output_filename = "output.wav"
。
- 打开
- 运行程序
- 在终端输入:
modal run modal_voice_cloning.py
- Modal 会使用云端 GPU 处理任务,完成后下载输出文件。
- 在终端输入:
调整模型序列长度
- 如果音频样本较长(超过 2-3 分钟),可能遇到张量维度错误。
- 解决方法:
- 打开
models.py
文件。 - 找到
llama3_2_1B()
函数,修改max_seq_len
参数:def llama3_2_1B(): return llama3_2.llama3_2(max_seq_len=4096, ...)
- 确保
llama3_2_100M()
的值一致,保存后重新运行。
- 打开
特色功能操作
云端加速(Modal)
- Modal 提供云端 GPU,适合没有强大本地设备的用户。
- 操作简单,只需安装 Modal 并运行相应脚本,处理速度比本地快。
处理长音频
- 默认设置适合 2 分 50 秒以内的样本。
- 更长的音频需要调整
max_seq_len
(如上所述),或者剪辑样本到推荐长度。
常见问题解决
- 张量维度错误
增加max_seq_len
值,或缩短音频样本。 - CUDA 内存不足
使用较短样本,或切换到 Modal 云端运行。 - 模型下载失败
检查 Hugging Face 令牌和网络,确保已接受模型条款。
应用场景
- 内容创作
- 场景描述
主播可以用自己的声音生成视频旁白。上传一段自我介绍音频,输入脚本,几分钟就能生成语音,省去反复录音的麻烦。
- 场景描述
- 教育支持
- 场景描述
老师克隆自己的声音,输入课程讲稿,生成教学音频。学生可以随时回听,适合远程学习。
- 场景描述
- 游戏开发
- 场景描述
开发者为游戏角色配音。录制几句样本,就能生成多段对话,提升角色真实感。
- 场景描述
QA
- 音频样本需要多长?
推荐 2-3 分钟。太短效果差,太长需调整参数。 - 为什么生成的语音不太像我?
模型效果有限,能保留声音特点但不完美。确保样本清晰,多试几次不同文本。 - Modal 和本地运行有什么区别?
Modal 用云端 GPU,速度快,适合无强大设备的用户。本地运行免费但需要好显卡。