A newer version of the Gradio SDK is available:
5.46.1
WeClone-audio 模块
WeClone-audio 是一个使用微信语音消息克隆声音的模块,使用模型实现高质量语音合成。
显存需求
Spark-TTS 推荐
- 0.5B 模型: 约 4GB 显存
Llasa (已弃用)
- 3B 模型: 约 16GB 显存
- 1B 模型: 约 9GB 显存
1. 导出微信语音数据
1.1 准备工作
- 使用 PyWxDump 提取微信聊天记录
- 下载软件并解密数据库
- 点击聊天备份,导出类型选择"解密文件"
1.2 环境配置
语音导出仅支持Windows环境 WeClone Audio使用uv作为包管理器。
# 为 PyWxDump 创建 Python 环境和安装依赖
#
uv venv .venv-wx --python=3.10
.venv-wx\Scripts\activate
uv pip install pywxdump
1.3 导出语音文件
python weclone-audio/src/get_sample_audio.py --db-path "导出数据库路径" --MsgSvrID "导出聊天记录的MsgSvrID字段"
2. 语音合成推理
Spark-TTS模型
环境安装
可不创建新环境,直接安装sparktts
依赖组到WeClone共主环境
uv venv .venv-sparktts --python=3.10
source .venv-sparktts/bin/activate
uv pip install --group sparktts -e .
git clone https://github.com/SparkAudio/Spark-TTS.git weclone-audio/src/Spark-TTS
模型下载
通过python下载:
from huggingface_hub import snapshot_download
# 假设此 Python 代码在 weclone-audio 目录下运行 模型将下载到 weclone-audio/pretrained_models/Spark-TTS-0.5B
snapshot_download("SparkAudio/Spark-TTS-0.5B", local_dir="pretrained_models/Spark-TTS-0.5B")
或通过git下载:
# 假设当前在 weclone-audio 目录
mkdir -p pretrained_models
# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install
git clone https://huggingface.co/SparkAudio/Spark-TTS-0.5B pretrained_models/Spark-TTS-0.5B
使用代码推理
import os
import SparkTTS
import soundfile as sf
import torch
from SparkTTS import SparkTTS
# 假设此 Python 代码在 weclone-audio 目录下运行
# 模型路径相对于当前目录
model_path = "pretrained_models/Spark-TTS-0.5B"
sample_audio = "sample.wav"
output_audio = "output.wav"
model = SparkTTS(model_path, "cuda")
with torch.no_grad():
wav = model.inference(
text="晚上好啊,小可爱们,该睡觉了哦",
prompt_speech_path=sample_audio, # 使用相对路径
prompt_text="对,这就是我万人敬仰的太乙真人,虽然有点婴儿肥,但也掩不住我逼人的帅气。",
)
sf.write(output_audio, wav, samplerate=16000) # 使用相对路径
Llasa模型 (已弃用)
2.1 环境配置
# 创建并配置推理环境
## 可不创建新环境,与LLaMA-Factory环境共用
uv venv .venv-xcodec --python=3.9
source .venv-xcodec/bin/activate
uv pip install --group xcodec -e .
# 退出环境
deactivate
# 系统依赖安装(如果需要)
sudo apt install python3-dev
sudo apt install build-essential
2.2 使用代码推理
如果遇到问题,请尝试将参考音频转换为WAV或MP3格式,将其裁剪至15秒以内,并缩短提示文本。
import os
import soundfile as sf
# 假设 text_to_speech.py 位于 src/ 或其他可导入的位置
from text_to_speech import TextToSpeech
sample_audio_text = "对,这就是我万人敬仰的太乙真人,虽然有点婴儿肥,但也掩不住我逼人的帅气。" # 示例音频文本
# 假设此 Python 代码在 weclone-audio 目录下运行
# 示例音频路径相对于当前目录
sample_audio_path = "sample.wav"
output_audio = "output.wav"
tts = TextToSpeech(sample_audio_path, sample_audio_text)
target_text = "晚上好啊" # 生成目标文本
result = tts.infer(target_text)
sf.write(output_audio, result[1], result[0]) # 使用相对路径