# CosyVoice 情绪控制教程：instruct2 单变量对照与台词完整性

CosyVoice 情绪控制教程通过独立输入、具体脚本和逐项回听完成。本页准备了真实音频输入与官方接口对应脚本，WhisperX/CosyVoice 模型本次未执行。

## 1. 固定同一台词与参考音频

target.txt 固定一段原创台词，reference.wav 来自系统合成输入。两版只改变 instruct 文本，保持模型、台词和参考一致；输入示范不是情绪合成成片。

## 2. 核对 CosyVoice3 支持的指令

官方 common.py 列出开心、伤心、快慢语速等示例。素材用中性与开心两个任务，不堆叠多种情绪；指令能力存在不代表该练习效果已通过。 将 --repo-dir 设为已安装依赖的 CosyVoice 克隆目录；--model-dir 使用该目录中实际模型的绝对路径。运行脚本的数据文件仍从素材包所在目录读取。

## 3. 用 inference_instruct2 而非旧版 instruct

run-cosy.py 调用 AutoModel 后用 inference_instruct2(target,instruct,reference)。CosyVoice 1 的 inference_instruct 与 CosyVoice2/3 路径不同，不能直接只改模型名。

```sh
python run-cosy.py --repo-dir /path/to/CosyVoice --model-dir /path/to/CosyVoice/pretrained_models/Fun-CosyVoice3-0.5B
python check.py --result generated.json
```

## 4. 为两版输出建立独立编号

jobs.json 记录 neutral/happy 的指令，输出各自生成 WAV 与 hash。不得把系统朗读的 input.wav 改名成 happy.wav 表示成功。当前生成状态明确 pending。

## 5. 试听台词完整度再听情绪

review.csv 先检漏字、重复、数字和段尾，再判断情绪强弱；语速快时也不能漏读文本。情绪是人工听感评审，文件校验不自动判定成功。

## 6. 只重做失败版本并留记录

如果开心版遗漏数字，修改一个指令或台词规范后另存版本。不覆盖中性基线，保存完整参数和失败理由；最终音频接剪辑器前完整试听。

## 7. 下载材料、检查负例与继续操作

解压素材包后先运行 python check.py，再运行 python check.py --self-test。前者读取真实 WAV / JSON / SRT 与源 hash；后者拒绝损坏 WAV、倒置时间、越界时间和缺失词时间。文件通过不代表文字、情绪或说话人判定已通过。

## 来源与范围

见 PROVENANCE.md。WhisperX/CosyVoice 推理本次未执行，系统音频为原创练习输入。

- https://github.com/QwenAudio/CosyVoice
- https://github.com/QwenAudio/CosyVoice/blob/main/example.py
- https://github.com/QwenAudio/CosyVoice/blob/main/cosyvoice/utils/common.py
