qwen3-tts使用实例

环境

  • 操作系统:Windows 11
  • Python:3.11.9

安装

bash 复制代码
# 安装 PyTorch(CPU 版)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

# 安装 Qwen-TTS 库
pip install -U qwen-tts

# 安装 ModelScope 并下载模型
pip install -U modelscope
modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice

代码实例

python 复制代码
import time

import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel

# 加载 0.6B 模型,使用 CPU + float32
# (GPU 上缺 flash-attn 会退化到手动注意力,触发 CUDA 内核断言,故用 CPU)
model = Qwen3TTSModel.from_pretrained(
    r"C:\Users\admin\Qwen3-TTS-12Hz-0.6B-CustomVoice",
    device_map="cpu",
    dtype=torch.float32,
)

# 生成语音测试
text = "就像股票一样,每个人也存在一个市场给你的"估值"和真实的"价值",通过简单的类比你就能知道,外人很难准确知道你的价值。市场只能对你有个估值,与你的真实价值相比,有时高估,有时极度高估,有时低估,有时极度低估。估值与价值偶有交点,那也不是故意的,是极少的瞬间。对于自己的价值和估值,桥水资本的老大达里奥是这样建议的:不要让自己的估值过分超过自己的实际价值。这是有道理的。如果交易只有一次,那么,估值越高越好。可若是注定要交易多次,那么情况就不同了。人们过分在意,甚至有意抬高估值的根源是"终点式思维",误以为可以"一锤定音"。可实际上,路很长,交易(选择)很多,甚至,大多数交易干脆算不上是里程碑,只不过是漫漫长路上的鸡毛蒜皮,于是,每次都想以大于价值的估值交易实际上是完全不可能的。更为重要的,是另外一方面。因为当你在意估值的时候,你就会忘记你的价值,你就会不由自主做那些提高你估值的事,而不是去想办法提高你的价值。长期来看,估值是虚幻的,虽有波动,却实际上锚定在价值上,价值不增长,长期来看估值一定长不上去,而且既然有极度高估,那么就不但随时有低估,还随时会有极度低估。我们不用道德层面的词语去形容这种选择,比如"踏实"等,仅从冰冷的经济学角度出发,我们就能知道:忘记价值,追求估值------这肯定是极度愚蠢的。从另外一个层面来看,我还有个理解:只有这样,你才真正有尊严。因为不顾价值地追求估值,本质上就是选择做骗子。做那些不顾价值地追求估值的事情,比如,通过频繁跳槽获得短期内的更高工资,既是骗了别人也是骗了自己。做一次事,骗起码两次人,后果很严重啊。骗别人倒也罢了,不知不觉把自己也骗了,那就真的太傻了。但还是有很多人忍不住这么做,成了一种习惯,因为欺骗的短期收益总是很高。长久以后,这个习惯几乎无法根除,你看坚守铁律之所以难,是因为违背铁律的诱惑实在太大了。可是反过来看,所有的欺骗都不长久,都有水落石出的一天,这样来看,桥水的达里奥给出的建议实在很睿智。"
t_start = time.perf_counter()
wavs, sr = model.generate_custom_voice(
    text=text,
    speaker="serena",    # 内置说话人:serena/vivian/uncle_fu/ryan/aiden/ono_anna/sohee/eric/dylan
    language="chinese",  # 中文;可选 english/german/japanese 等
)
gen_seconds = time.perf_counter() - t_start

# 保存为 wav 文件(wavs[0] 已是 numpy.ndarray,无需 .cpu())
sf.write("output_test.wav", wavs[0], sr)

duration_sec = len(wavs[0]) / sr  # 生成音频的实际时长(秒)
print("语音生成完毕,已保存为 output_test.wav")
print(f"文字转语音耗时: {gen_seconds / 60:.4f} 分钟 ({gen_seconds:.2f} 秒)")
print(f"生成音频时长: {duration_sec:.2f} 秒,实时率 RTF = {gen_seconds / duration_sec:.3f}")
相关推荐
陈年老古董1 小时前
OpenCV实战:文档扫描与图像风格迁移
人工智能·python·opencv·计算机视觉
benchmark_cc1 小时前
数据 API 稳定性为什么会影响量化策略?从数据获取到信号执行的完整分析
开发语言·python·数据分析·量化·股票数据·quantdash·量化数据源
STLearner1 小时前
KDD 2026 | (2月轮)时空数据(Spatial-Temporal)论文总结时空(交通)预测,轨迹数据挖掘(表示,生成)
论文阅读·人工智能·python·深度学习·学习·机器学习·数据挖掘
axinawang1 小时前
ddddocr--识别验证码
python
2601_962180331 小时前
python——Django 框架
开发语言·python·django
长江后浪博客1 小时前
Conda环境下测试Intel NPU:Python版本如何选择?
开发语言·python·conda·openvino·intel npu
陈年老古董2 小时前
PyTorch 实现 MNIST 手写数字识别学习笔记
笔记·python·深度学习·学习
always_TT2 小时前
【Python 字符串格式化:format() 方法】
android·开发语言·python
小义_2 小时前
JDK 深度解析
java·linux·开发语言·python·面试