- 共享引擎(app/src/main):GestureEngine 6 手势识别、AudioEngine 三层音频 (ExoPlayer BGM 交叉淡入 / 对白 ducking / SoundPool 低延迟)、Game/GameEngine 状态机接口、MainActivity 全屏封面 + TalkBack - 《声命线》storyline:末世互动广播剧,3 幕 8 抉择点 4 结局 - 《声东击西》reflex:听声辨位反应,12 波战斗 + BGM 三档 BPM 变速 - 《暗室》escape:3x3 网格密室逃脱,钥匙→铁柜→保险丝→电箱→大门谜题链 - 文档:setup(从零搭建)/ architecture(架构)/ engine-api(引擎 API)/ asset-pipeline(资产流水线)/ games/*(三款游戏设计文档) - 资产管线:Qwen3-TTS 对白 + 程序合成音效/BGM + Mureka BGM 的 gen 脚本与台账, 全部 ogg 资产入库可复现 - env.d 环境脚本:android/tts 入库;sfx/mureka 含密钥不入库,仅提交 .example.sh 模板
97 lines
3.2 KiB
Markdown
97 lines
3.2 KiB
Markdown
# Qwen3-TTS 本地对白生成环境使用说明
|
||
|
||
## 环境位置
|
||
|
||
- 虚拟环境:`/home/ubuntu/SoundGame/.venv-tts`(Python 3.12.14,uv 创建)
|
||
- 关键包:`torch 2.11.0+cu128`、`torchaudio 2.11.0+cu128`、`qwen-tts 0.1.1`、`soundfile`、`transformers 4.57.3`
|
||
- 模型缓存:`/home/ubuntu/SoundGame/models/hf`(HF_HOME)
|
||
- `Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice`(预置音色 + 情感指令,主力)
|
||
- `Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign`(文字描述造音色)
|
||
- `Qwen/Qwen3-TTS-Tokenizer-12Hz`(语音编解码器,上面两个模型自带副本,这个是独立的)
|
||
|
||
## 启用环境
|
||
|
||
```bash
|
||
source /home/ubuntu/SoundGame/env.d/tts.sh # 设置 HF_HOME / HF_ENDPOINT(hf-mirror 镜像)
|
||
source /home/ubuntu/SoundGame/.venv-tts/bin/activate
|
||
```
|
||
|
||
注意:本机连不通 huggingface.co,必须走 `HF_ENDPOINT=https://hf-mirror.com`(tts.sh 已设好)。
|
||
|
||
## 生成对白(CustomVoice:预置音色 + 情感指令)
|
||
|
||
```python
|
||
import torch, soundfile as sf
|
||
from qwen_tts import Qwen3TTSModel
|
||
|
||
model = Qwen3TTSModel.from_pretrained(
|
||
"Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
|
||
device_map="cuda:0",
|
||
dtype=torch.bfloat16,
|
||
)
|
||
wavs, sr = model.generate_custom_voice(
|
||
text="快躲开!它来了!",
|
||
language="Chinese",
|
||
speaker="Vivian",
|
||
instruct="用惊恐、急促的语气大声喊出来", # 不需要情感控制时省略
|
||
)
|
||
sf.write("out.wav", wavs[0], sr) # sr = 24000
|
||
```
|
||
|
||
支持批量:`text`/`language`/`speaker`/`instruct` 均可传等长 list。
|
||
可透传 HF `generate` 参数,如 `max_new_tokens=2048`。
|
||
|
||
## VoiceDesign(文字描述造音色)
|
||
|
||
```python
|
||
model = Qwen3TTSModel.from_pretrained(
|
||
"Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign",
|
||
device_map="cuda:0", dtype=torch.bfloat16,
|
||
)
|
||
wavs, sr = model.generate_voice_design(
|
||
text="哥哥,你回来啦!",
|
||
language="Chinese",
|
||
instruct="撒娇稚嫩的萝莉女声,音调偏高且起伏明显",
|
||
)
|
||
```
|
||
|
||
## 预置音色查询
|
||
|
||
代码查询:
|
||
|
||
```python
|
||
model.get_supported_speakers() # ['aiden','dylan','eric','ono_anna','ryan','serena','sohee','uncle_fu','vivian']
|
||
model.get_supported_languages() # auto/chinese/english/french/german/italian/japanese/korean/portuguese/russian/spanish
|
||
```
|
||
|
||
中文对白推荐音色(母语中文):
|
||
|
||
| speaker | 描述 |
|
||
|---|---|
|
||
| Vivian | 明亮略带锋芒的年轻女声 |
|
||
| Serena | 温暖柔和的年轻女声 |
|
||
| Uncle_Fu | 低沉醇厚的中年男声 |
|
||
| Dylan | 北京话年轻男声 |
|
||
| Eric | 四川话活泼男声,略带沙哑 |
|
||
|
||
(其余:Ryan/Aiden 英语男声,Ono_Anna 日语女声,Sohee 韩语女声)
|
||
|
||
## 冒烟测试
|
||
|
||
```bash
|
||
/home/ubuntu/SoundGame/.venv-tts/bin/python /home/ubuntu/SoundGame/tools/tts_smoke_test.py
|
||
# 输出 /home/ubuntu/SoundGame/tools/samples/tts_test.wav(实测 1.92s, 24kHz)
|
||
```
|
||
|
||
## Web UI(可选)
|
||
|
||
```bash
|
||
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --ip 0.0.0.0 --port 8000
|
||
```
|
||
|
||
## 已知事项
|
||
|
||
- 未装 `flash-attn`(可选加速,编译耗时长;RTX 3090 24GB 不装也完全够用,加载+生成一句仅十几秒)。
|
||
- 系统无 `sox` 命令行二进制(无 sudo 装不了),qwen-tts 会打印警告但**不影响生成**;只有用到 sox 音频处理链路时才需要它。
|
||
- 显存占用:1.7B 模型 bf16 推理远低于 24GB,充足。
|