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}")
相关推荐
代码山河20 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行20 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者21 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”1 天前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc1 天前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读1 天前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放1 天前
Python基础语法练习题(73)
java·前端·python
锋行天下1 天前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐1 天前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹1 天前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi