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}")
相关推荐
打工仔折腾 AI2 分钟前
Prometheus 告警推钉钉:从单群 Webhook 到跨网络 Alertmanager 实战
人工智能·后端·python·性能优化
Ivanqhz7 分钟前
Ping-Pong 双缓冲
开发语言·人工智能·python·深度学习·mlir
三十岁老牛再出发7 分钟前
9月18日总结
python·深度学习·机器学习
就叫你天选之人啦19 分钟前
安装torch+vllm+flash_attn的prompt
人工智能·pytorch·python
wuyk5551 小时前
21.计数排序:不用比较的“空间换时间”排序算法
python·算法·排序算法
智码看视界1 小时前
第4篇:循环神经网络及其变体 LSTM/GRU 实战
python·自然语言处理·gru·lstm·循环神经网络·情感分析·梯度消失
Web3&Basketball1 小时前
Agent外传审计实战:3类失准事故拦截脚本
python·大模型·agent·性能调优·推理优化
何以解忧,唯有..1 小时前
Milvus 向量数据库的 DDL、DML、DQL 操作详解
python
罗狮粉 991 小时前
AI-Gateway — 面向 AI Agent 的本地 Runtime Gateway
人工智能·python·inscode·ai编程
蓝胖的四次元口袋1 小时前
Python数据结构知识梳理
python