File size: 3,986 Bytes
88aba71 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# WeClone-audio 模块
WeClone-audio 是一个使用微信语音消息克隆声音的模块,使用模型实现高质量语音合成。
### 显存需求
**Spark-TTS** 推荐
- **0.5B 模型**: 约 4GB 显存
**Llasa** (已弃用)
- **3B 模型**: 约 16GB 显存
- **1B 模型**: 约 9GB 显存
## 1. 导出微信语音数据
### 1.1 准备工作
- 使用 [PyWxDump](https://github.com/xaoyaoo/PyWxDump) 提取微信聊天记录
- 下载软件并解密数据库
- 点击聊天备份,导出类型选择"解密文件"
### 1.2 环境配置
语音导出仅支持Windows环境
WeClone Audio使用uv作为包管理器。
```bash
# 为 PyWxDump 创建 Python 环境和安装依赖
#
uv venv .venv-wx --python=3.10
.venv-wx\Scripts\activate
uv pip install pywxdump
```
### 1.3 导出语音文件
```bash
python weclone-audio/src/get_sample_audio.py --db-path "导出数据库路径" --MsgSvrID "导出聊天记录的MsgSvrID字段"
```
## 2. 语音合成推理
### Spark-TTS模型
**环境安装**
可不创建新环境,直接安装`sparktts`依赖组到WeClone共主环境
```bash
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下载:
```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下载:
```bash
# 假设当前在 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
```
使用代码推理
```python
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 环境配置
```bash
# 创建并配置推理环境
## 可不创建新环境,与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秒以内,并缩短提示文本。
```python
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]) # 使用相对路径
```
|