- 共享引擎(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 模板
3.2 KiB
3.2 KiB
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(语音编解码器,上面两个模型自带副本,这个是独立的)
启用环境
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:预置音色 + 情感指令)
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(文字描述造音色)
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="撒娇稚嫩的萝莉女声,音调偏高且起伏明显",
)
预置音色查询
代码查询:
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 韩语女声)
冒烟测试
/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(可选)
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,充足。