资讯详情

Xinference 内置模型实战:部署与调用 Qwen3-TTS-12Hz-0.6B-CustomVoice 多语言语音合成

📅 2026/9/16 21:52:03 | 华诺云谱 👁 阅读
Xinference 内置模型实战:部署与调用 Qwen3-TTS-12Hz-0.6B-CustomVoice 多语言语音合成
Xinference 内置模型实战部署与调用 Qwen3-TTS-12Hz-0.6B-CustomVoice 多语言语音合成【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inferenceQwen3-TTS-12Hz-0.6B-CustomVoice 是 Xinference 内置的一款 0.6B 规模的多语言文本转语音TTS模型归属于qwen3_tts模型家族具备text2audio能力。本文将围绕该内置模型的完整使用链路展开从双引擎PyTorch / MLX选型与启动命令到 OpenAI 兼容的/v1/audio/speech接口调用再到源码级剖析自定义音色CustomVoice与声音克隆的底层实现帮助你在一套生产级推理 API 上快速落地多语言语音合成。模型概览与核心规格根据官方内置模型文档 qwen3-tts-12hz-0.6b-customvoice.rst该模型的基本信息如下属性值模型名称Model NameQwen3-TTS-12Hz-0.6B-CustomVoice模型家族Model Familyqwen3_tts能力Abilities[text2audio]多语言MultilingualTruePyTorch 模型 IDQwen/Qwen3-TTS-12Hz-0.6B-CustomVoiceMLX 模型 IDmlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit在 model_spec.json 中该模型以同一模型名 两种引擎变体的形式注册PyTorch 变体model_format: pytorch与 MLX 变体cache_name为Qwen3-TTS-12Hz-0.6B-CustomVoice-MLX8-bit 量化格式。两套变体共享多语言声明model_lang包括auto、chinese、english、french、german、italian、japanese、korean、portuguese、russian、spanish共 11 项其中 MLX 变体额外声明了beijing_dialect北京话与sichuan_dialect四川话两种方言选项。双引擎架构PyTorch 与 MLX 的选择官方文档明确列出该模型支持两种引擎PyTorch与MLX。选择依据主要取决于你的运行平台PyTorch 引擎面向 NVIDIA GPU 等 CUDA 环境也兼容 CPU 运行。依赖qwen-tts推理库配合torch、numpy、pandas由虚拟环境规范#system_torch#、#system_numpy#、#system_pandas#标记复用系统安装的版本。MLX 引擎面向 Apple SiliconmacOS arm64使用mlx-audio[tts]0.4.6与soundfile运行 8-bit 量化版本专为 Apple 芯片优化。从 engine.py 的引擎注册逻辑可以看到PyTorchQwen3TTSAudioModel通过match()匹配qwen3_tts家族且引擎为 PyTorch或未指定的模型而MLXAudioTTSEngineModelengine.py则额外要求运行平台为Darwin且处理器为arm即 Apple Silicon。在 register_builtin_audio_engines() 中PyTorch 引擎先于 MLX 注册因此PyTorch 是默认引擎——不显式指定--model-engine时会优先选择它这与 core.py 中取第一个注册引擎作为默认引擎的逻辑一致。这一引擎匹配与校验逻辑同样有测试覆盖在 test_audio_engine.py 中apple_mlx_enginesfixture 模拟 Apple 平台后Qwen3-TTS-12Hz-0.6B-CustomVoice会被注册为[PyTorch, MLX]双引擎。启动模型CLI 与 Web UI 双入口官方文档给出的标准启动命令PyTorch 引擎xinference launch --model-name Qwen3-TTS-12Hz-0.6B-CustomVoice --model-type audio --model-engine PyTorch各参数含义参数说明--model-name内置模型名称即Qwen3-TTS-12Hz-0.6B-CustomVoice--model-type模型类型音频 TTS 模型固定为audio--model-engine引擎选择取PyTorch或MLX省略时默认使用 PyTorch若在 Apple Silicon 上使用 MLX 引擎xinference launch --model-name Qwen3-TTS-12Hz-0.6B-CustomVoice --model-type audio --model-engine MLX首次启动会自动下载权重。下载源由 core.py 中的match_audio()决定PyTorch 变体同时注册了 HuggingFaceQwen/Qwen3-TTS-12Hz-0.6B-CustomVoicerevisionmain与 ModelScopeQwen/Qwen3-TTS-12Hz-0.6B-CustomVoicerevisionmaster两个来源可通过--download-hub或环境配置切换MLX 变体来源为 HuggingFace 的mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit固定 revision。同时该模型在model_spec.json中声明了virtualenv依赖包当全局环境缺少qwen-tts或mlx-audio时Xinference 会按 engine_family.py 的逻辑为模型自动创建隔离虚拟环境并安装所需依赖通过enable_virtual_env开关控制。启动成功后你同样可以在 Xinference Web UI 的「Launch Model」页面中选择该模型并指定引擎、量化与下载源进行图形化启动前端入口位于 frontend/src/app/launch-model。调用语音合成服务1. Python 客户端调用Xinference 提供了同步与异步两套 REST 客户端其中 speech() 方法封装了语音合成调用from xinference.client import Client client Client(http://localhost:9997) model client.get_model(你的模型UID) # 使用自定义音色CustomVoice合成语音 audio model.speech( input你好欢迎使用 Xinference 语音合成服务。, voicedefault, # 指定说话人CustomVoice 变体会校验该值 response_formatmp3, # 输出格式如 mp3 / wav speed1.0, # 语速 streamFalse, # 该模型暂不支持流式输出 ) with open(output.mp3, wb) as f: f.write(audio)参数说明与 restful_client.py 的 docstring 一致参数类型说明inputstr待合成文本最大长度 4096 字符voicestr使用的音色/说话人名称response_formatstr输出音频格式默认mp3speedfloat语速默认1.0streambool是否流式返回默认Falseprompt_speechbytes参考音频字节用于声音克隆prompt_latentbytes参考音频隐向量字节kwargs任意透传给后端的附加参数如language、seed、instruct2. 直接调用 REST APIspeech()内部实际向/v1/audio/speech发送 POST 请求路由注册见 audio.py服务端实现见 create_speech()。使用 curl 的等价写法curl -X POST http://localhost:9997/v1/audio/speech \ -H Content-Type: application/json \ -d { model: 你的模型UID, input: 你好欢迎使用 Xinference 语音合成服务。, voice: default, response_format: mp3, speed: 1.0, stream: false, kwargs: {\language\: \chinese\} } --output output.mp3服务端解析SpeechRequest后调用模型的speech()方法并以_audio_response_media_type(response_format)对应的 MIME 类型返回音频字节流。源码级原理剖析PyTorch 引擎CustomVoice 的说话人校验与生成链路PyTorch 引擎实现在 qwen3_tts.py加载阶段load()导入qwen-tts包缺失时提示pip install qwen-tts以dtypetorch.bfloat16加载模型若环境安装了 flash-attention则使用attn_implementationflash_attention_2加速device_map默认cuda:0可通过device参数覆盖。语言校验speech()从 kwargs 中取出language默认chinese通过后端get_supported_languages()校验不支持的语言会抛出ValueError并列出全部可选语言——这正是测试 test_qwen3_pytorch_custom_voice_languages_pass_backend_validation 所覆盖的场景。CustomVoice 分支speech()当模型名以CustomVoice结尾且未提供prompt_speech时先调用get_supported_speakers()获取可用说话人列表校验voice参数合法后走generate_custom_voice(text, language, speakervoice, instructinstruct)完成带指令控制的音色合成。instruct参数允许以自然语言指令控制语气、情感等表达。结果封装生成的音频张量经soundfile编码为response_format指定的格式如 mp3字节流返回。声音克隆模式prompt_speech prompt_text同一份源码还提供了 Few-shot 声音克隆能力当同时传入prompt_speech参考音频字节与prompt_text参考音频对应文本时speech() 会将参考音频写入临时 wav 文件调用generate_voice_clone(text, language, ref_audio, ref_text)进行克隆合成完成后自动清理临时文件。注意prompt_text是必填项缺失时抛出RuntimeError而Base版本模型模型名不以VoiceDesign/CustomVoice结尾不支持这两种生成路径必须提供参考音频才能工作。MLX 引擎长文本分段与 codec token 限制MLX 引擎由 mlx_audio.py 中的MLXAudioTTSModel._build_generation_kwargs()处理默认max_tokens4096源码注释指出 mlx-audio 默认只生成 1200 个 codec token仅约 9 秒音频容易截断普通段落因此 Xinference 将其提升到 4096。语言与方言通过lang_code传入默认auto可覆盖到beijing_dialect、sichuan_dialect等方言。分段合成_speech()对qwen3_tts家族长文本会按split_pattern切分为多个片段逐段生成再通过_join_qwen_results()拼接规避长文本的生成截断问题同时支持prompt_speechprompt_text映射为ref_audio/ref_text的克隆模式。流式不支持PyTorch 与 MLX 引擎在streamTrue时都会抛出异常qwen3_tts.py、mlx_audio.py调用时请保持streamFalse。可复现性seed 参数两个引擎都支持通过seed参数固定随机数保证同一输入的可复现输出apply_audio_seed() 会同步设置 Python、NumPy、Torch 的随机种子apply_mlx_audio_seed()在此基础上额外设置 MLX 的随机种子。在调用时通过kwargs传入seed即可。常见问题与注意事项引擎与平台不匹配MLX 引擎仅在 Apple Silicon 上可用在 x86/Linux 上强行指定会因 engine.py 的match()校验失败而被拒绝相关拒绝逻辑测试见 test_invalid_audio_engine_is_rejected_before_download。依赖缺失PyTorch 引擎需要pip install qwen-ttsMLX 引擎需要mlx-audio[tts]0.4.6。建议开启 Xinference 的虚拟环境功能让模型依赖自动隔离安装。不支持流式qwen-tts 与 mlx-audio 目前均不支持流式生成streamTrue会直接报错。声音克隆必填参考文本使用prompt_speech时务必同时提供prompt_text否则无法进入克隆路径。说话人合法性CustomVoice 变体对voice参数有严格校验不存在的说话人名称会触发ValueError并列出全部可用说话人。方言与多语言MLX 8-bit 变体额外支持北京话与四川话可通过language参数如beijing_dialect指定。如需查看该模型的完整注册规格与引擎元数据可继续阅读 model_spec.json 与对应的引擎测试 test_mlx_audio.py、test_audio_engine.py在源码层面进一步印证本文所述行为。【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。