跳到主要内容

小鲸点歌

收藏0

用本地 RVC 音色翻唱一首歌,并把 40 秒片段发成 QQ 语音条(需自备换声与语音服务)

让 AI 安装

lrt最新版本 0.1.0更新于 2026-11-06下载 0 次

SKILL.md

5.2 KB查看排版效果
1---
2name: qq-singing
3description: 用本机 RVC「小鲸」音色翻唱一首歌,并把 40 秒片段以 QQ 语音条发出去。用户说「唱首歌」「来一首 XX」「用你的声音唱 XX」「点歌」时使用。
4---
5
6# QQ 点歌:小鲸唱一首
7
8> 本技能依赖本地的 RVC 换声工作流与 TTS 语音服务,命令里的路径请按你自己的环境替换。
9
10## 一句话流程
11
121. 回一句短的(「好,等我几分钟」),别干等着不吭声。
132. 释放显存:`curl -s -X POST http://127.0.0.1:<TTS端口>/unload`
143. 出整首翻唱 → 4. 切 40 秒 → 5. 用语音条发出去。
15
16全部命令都在 `~/.dsh-workspace\rvc2` 目录下跑,先 export 这几个环境变量:
17
18```bash
19cd "~/.dsh-workspace/rvc2"
20export PYTHONIOENCODING=utf-8
21export TMP="~/.dsh-workspace/tmp" TEMP="~/.dsh-workspace/tmp" TMPDIR="~/.dsh-workspace/tmp"
22```
23
24## 出整首翻唱
25
26```bash
27"python" cover.py "<歌名 歌手>" "assets/weights/xiaojing.pth" 0 "<标签>"
28```
29
30- 标签随便起,用来做文件名,例如 `我本将心向明月`。
31- 下载 → 人声分离 → 45 秒分段换声 → 拼接混音,一般 3~6 分钟。
32- 成功时最后一行是 `OUT <mp3 路径>`,产物在 `out/<标签>.mp3`。
33- 音源顺序(脚本里已写好,不用管):网易云 → SoundCloud → YouTube → B站。**网易云是唯一在国内稳定的**,整首能下;其它三个经常超时或 412。四个全失败才算真的下不到。
34
35### 网易云会员音质(cookie)
36
37**已接入会员账号**,下载音质顺序 `hires/lossless/exhigh/bestaudio`(会员无损优先,实测一首 5 分钟歌约 115MB flac)。
38
39cookie 文件:`~/.dsh-workspace\rvc2\netease_cookies.txt`(Netscape 格式,含 MUSIC_U)。脚本每次下网易云都先带它;带了失败会自动退回匿名(普通码率,但仍是完整整曲,不影响出歌)。
40
41cookie 一般能撑很久,哪天发现音质掉回 320k 就是过期了,重新登录一次:
42
43```bash
44# 1. 起一个独立的 Edge(专用 profile,不动用户平时的 Edge)
45powershell -NoProfile -Command "Start-Process 'msedge.exe' -ArgumentList '--remote-debugging-port=9334','--user-data-dir=~/.dsh-workspace\edge-netease-profile','https://music.163.com/#/login'"
46# 2. 让用户在那个窗口扫码登录,登录完再执行:
47"python" export_netease_cookies.py
48# 3. 导出完关掉这个 Edge(只杀这个实例,别动用户自己的 Edge)
49```
50
51`export_netease_cookies.py` 通过 CDP `Network.getAllCookies` 读出 cookie 并写成 cookies.txt,成功后打印 `has MUSIC_U: True`。这个专用 profile 会保留登录态,下次重登通常不用再扫码。
52
53## 去噪重混(建议每次都跑)
54
55```bash
56"python" gate_vocal.py "<标签>"
57```
58
59输出 `out/<标签>_gated.mp3`。作用:按源人声能量做门限,把前奏、间奏里 RVC 生成的沙沙声压掉,并用定值增益对齐响度(不要改回单遍 loudnorm,会把静音段底噪抬成嘶声)。
60
61## 切 40 秒语音条
62
63```bash
64"python" qq_sing.py "out/<标签>_gated.mp3"
65```
66
67- 自动跳过前奏、挑能量最高的 40 秒(通常是副歌),输出 32k 单声道 wav:`out/<标签>_gated_qq40.wav`。
68- 想换长度:`--seconds 30`。
69- 最后一行是 `OUT <wav 路径>`。
70
71## 发出去
72
73整条回复只写这一行,`[[voice]]` 必须在最开头,前面不能有任何字:
74
75```
76[[voice]]@@SING@@~/.dsh-workspace/rvc2/out/<标签>_gated_qq40.wav
77```
78
79- 语音服务看到 `@@SING@@` 就把这个文件当音频返回,QQ 通道再压成语音条。**不要发文件**,除非用户明确说「发文件」。
80- 路径写正斜杠,绝对路径,别加引号。
81
82## 失败怎么办
83
84| 现象 | 处理 |
85| --- | --- |
86| `ERR 下载失败` | 音源全挂。换一首歌或过一会儿再说;别反复重试同一条,最多试两次。 |
87| `torch.OutOfMemoryError` / `CUDA out of memory` | 显存被占。先 `POST /unload` 再重跑;还不行就跟用户说这台机器现在腾不出显存,等几分钟。 |
88| `No usable added index` | `--index` 路径写错,索引是 `F:\DSH\rvc-index\xiaojing_added_IVF920_Flat_nprobe_1_xiaojing_v2.index`(脚本里已默认设好,一般不会遇到)。 |
89| 出来的歌前奏有沙沙声 | 没跑 `gate_vocal.py`,补跑。 |
90| 语音条发出去没声音/没收到 | 检查 wav 存在且大于 1MB;`[[voice]]` 是否在整条回复最开头。 |
91
92## 音色与参数
93
94- 权重:`assets/weights/xiaojing.pth`(Breeze 语音语料训 200 轮,13.8 分钟语料)。
95- 索引:`F:\DSH\rvc-index\xiaojing_added_IVF920_Flat_nprobe_1_xiaojing_v2.index`,index-rate 0.65(实测 0.65 咬字最清楚;0.5 更清楚但音色会偏,0.8 音色准但字糊)。
96- `pitch 0` 是原调;女声唱男声原调可以 `--pitch 7` 之类,太高会尖,7 以内比较稳。
97- 一首歌不要在 GPU 上并行跑两遍,会 OOM。
98
99## 别做的事
100
101- 不要在训练/其它 GPU 任务进行时点歌(会 OOM),先问一句或直接说明。
102- 不要用 `Get-Process pythonw | Stop-Process` 清显存:会把模型入口进程一起杀掉,整台机器的模型请求全 500。只按具体 PID 杀,或者用 `/unload`。
103- 不要为了「修好」重启 DSH。

文件内容是平台检查时读出的文本,只供查看。平台不会运行包里的任何脚本或程序。