news 2026/9/16 11:41:39

Xinference 内置音频模型全景指南:ASR 语音识别、TTS 语音合成与音乐生成的统一启动与调用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Xinference 内置音频模型全景指南:ASR 语音识别、TTS 语音合成与音乐生成的统一启动与调用

Xinference 内置音频模型全景指南:ASR 语音识别、TTS 语音合成与音乐生成的统一启动与调用

【免费下载链接】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

Xinference 在仓库 doc/source/models/builtin/audio/index.rst 中集中登记了一批开箱即用的内置音频模型,覆盖语音识别(audio2text)、语音合成(text2audio)、音乐生成(text2music)与说话人嵌入等能力。本文将以此清单为骨架,结合 模型能力文档 的用法说明与 音频模型源码 的实现细节,完整讲解内置音频模型的分类、多引擎选择机制、启动命令以及四种 OpenAI 兼容音频 API 的调用方式,帮助你直接用一条命令完成 ASR/TTS 模型的上线。

内置音频模型总览:从 Whisper 到 Qwen3 的一站式模型库

Xinference 的音频模型内置清单(见 doc/source/models/builtin/audio/index.rst)目前收录了约 60 个内置模型规格,每个规格对应一个独立的文档页面(如 whisper-large-v3.rst、cosyvoice2-0.5b.rst),这些页面为统一格式生成,包含模型名、模型族、能力(Abilities)、多语言标记(Multilingual)、模型 ID 与推荐启动命令。

按能力划分,内置音频模型可归为四大类(分类依据见 model_abilities/audio.rst):

能力类别代表模型典型用途
Audio to Text(语音识别/ASR)whisper 全系列(tiny/base/small/medium/large-v3/large-v3-turbo)、Belle-whisper-large-v3-zh、SenseVoiceSmall、Paraformer 系列、Fun-ASR 系列、Qwen3-ASR把音频转录为文本、翻译为英文
Text to Audio(TTS 语音合成)ChatTTS、CosyVoice 全系列、MeloTTS 全语种、Kokoro-82M、MegaTTS3、F5-TTS、FishSpeech-1.5、IndexTTS2、VoxCPM2、Qwen3-TTS、Breeze-TTS-2、FireRedTTS3 等根据文本合成语音,支持零样本、音色克隆、情感控制等
音乐生成ACE-Step1.5、MiniMax-Music3(仅 NVIDIA CUDA)根据歌词与音乐描述生成音乐
说话人嵌入speech_campplus_sv_zh-cn_16k-common、speech_campplus_sv_zh_en_16k-common_advanced从音频中提取 192 维说话人向量

从源码看,这些能力标记直接定义在模型规格文件 xinference/model/audio/model_spec.json 中,例如 Whisper 系列的model_ability["audio2text"],CosyVoice2-0.5B 为["text2audio", "text2audio_zero_shot", "text2audio_voice_cloning"]AudioModelFamilyV2(定义于 xinference/model/audio/core.py)会将这些规格解析为运行时可查询的描述,前端在“启动模型”对话框中即依据该描述展示能力与引擎选项。

多引擎架构:一个模型名,多种运行时

Xinference 音频模型的一个重要设计是"一模型多引擎":同一个模型名可以通过--model-engine参数选择不同的推理后端。规格页中明确标注了可用引擎,例如:

  • whisper-large-v3:transformers(默认)与MLX
  • Qwen3-ASR-1.7B:transformers(默认)、MLX;在 Linux + NVIDIA GPU 上还可使用vLLM
  • F5-TTS:PyTorch(默认)与MLX
  • Kokoro-82M:PyTorchMLX
  • Fun-ASR-Nano-2512:PyTorchMLX
  • Qwen3-TTS 系列:PyTorchMLX

引擎分发的底层实现位于 xinference/model/audio/engine_family.py。其中AUDIO_ENGINES字典维护"模型名 → 引擎名 → 实现类"的注册关系,check_engine_by_model_name_and_engine负责把用户传入的引擎名映射到具体实现类;当用户不指定引擎时,core.py 会取注册表中第一个引擎作为默认值。引擎探测还通过is_model_family_supported做精确过滤,避免无关引擎出现在启动选项中。

值得注意的兼容性设计(见 core.py 与 audio.rst 的 "Audio engines" 一节):历史上形如whisper-large-v3-mlx的模型名依然可以作为启动别名使用,但会被自动解析为规范名whisper-large-v3加上--model-engine MLX;注册、缓存、版本查询和虚拟环境查找都统一使用规范模型名,新集成应优先使用--model-engine MLX的写法。

启动内置音频模型:一条命令完成部署

命令行启动

内置音频模型的统一启动入口是xinference launch,基本形态为:

xinference launch --model-name <模型名> --model-type audio [--model-engine <引擎>]

结合各规格页,常见示例:

# Whisper 语音识别(默认 transformers 引擎) xinference launch --model-name whisper-large-v3 --model-type audio --model-engine transformers # Apple Silicon 上使用 MLX 引擎 xinference launch --model-name whisper-large-v3 --model-type audio --model-engine MLX # Linux + NVIDIA GPU 上使用 vLLM 加速 Qwen3-ASR 转录 xinference launch --model-name Qwen3-ASR-1.7B --model-type audio --model-engine vLLM # TTS:Kokoro-82M(PyTorch 引擎) xinference launch --model-name Kokoro-82M --model-type audio --model-engine PyTorch # TTS:CosyVoice2-0.5B(单引擎,无需指定) xinference launch --model-name CosyVoice2-0.5B --model-type audio # ASR:Paraformer-zh(单引擎) xinference launch --model-name paraformer-zh --model-type audio # 中文 TTS:MeloTTS-Chinese xinference launch --model-name MeloTTS-Chinese --model-type audio

带特殊参数的启动

部分模型在启动时需要额外的模型级参数(--key value形式),这些参数最终会通过 create_audio_model_instance 的**kwargs通道传给模型实现:

  • Kokoro 中文支持:先执行pip install misaki[zh],启动时传lang_code='z';推理时 voice 需以z开头(如zf_xiaoyi)。
  • SenseVoiceSmall 离线 VAD:提前下载fsmn-vad模型后,启动时传--vad_model /path/to/fsmn-vad
  • Paraformer 说话人信息:使用paraformer-zh-longseaco-paraformer-zh时,追加--spk_model cam++才能输出说话人信息。
  • IndexTTS2 离线小模型:将 w2v-bert-2.0、campplus、bigvgan、MaskGCT 四个模型下载到同一目录后,启动时传--small_models_dir /path/to/small_models
  • ACE-Step1.5 启用 LM 规划--lm_model_path acestep-5Hz-lm-1.7Blm_backend可选pt/vllm/mlx
  • Breeze-TTS-2 加速--fast_all true,或单独启用fast_text_encoderfast_backbone_prefill等 CUDA Graph 选项。

四种 OpenAI 兼容音频 API

路由注册位于 xinference/api/routers/audio.py,四个端点与 OpenAI Audio API 对齐(启用认证时均需要models:read权限):

能力端点
转录(Transcription)/v1/audio/transcriptions
翻译(Translation,转英文)/v1/audio/translations
语音合成(Speech)/v1/audio/speech
说话人嵌入(Speaker Embedding)/v1/audio/embeddings

语音识别(转录与翻译)

转录把音频转为原文语言,翻译则统一转成英文。两者请求体一致,均可使用 cURL、OpenAI Python Client 或 Xinference Python Client:

curl -X 'POST' \ 'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/audio/transcriptions' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "model": "<MODEL_UID>", "file": "<audio bytes>" }'
import openai client = openai.Client( api_key="cannot be empty", base_url="http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1" ) with open("speech.mp3", "rb") as audio_file: client.audio.transcriptions.create(model="<MODEL_UID>", file=audio_file)

Xinference Python Client 等价写法:

from xinference.client import Client client = Client("http://<XINFERENCE_HOST>:<XINFERENCE_PORT>") model = client.get_model("<MODEL_UID>") with open("speech.mp3", "rb") as audio_file: model.transcriptions(audio=audio_file.read())

响应为包含text字段的 JSON。翻译端点把路径换成/v1/audio/translations,客户端方法改为model.translations(...)client.audio.translations.create(...)即可。

语音合成(Speech)

Speech 端点接收文本并返回音频二进制,默认非流式输出。基本用法:

curl -X 'POST' \ 'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/audio/speech' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "model": "<MODEL_UID>", "input": "<The text to generate audio for>", "voice": "echo", "stream": true }'
import openai client = openai.Client( api_key="cannot be empty", base_url="http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1" ) client.audio.speech.create(model="<MODEL_UID>", input="<text>", voice="echo")

Xinference Python Client:

from xinference.client import Client client = Client("http://<XINFERENCE_HOST>:<XINFERENCE_PORT>") model = client.get_model("<MODEL_UID>") speech_bytes = model.speech(input="<text>", voice="echo")

除了通用参数,不同 TTS 模型还通过kwargs通道支持扩展能力(原文档在 audio.rst 中逐模型说明,原始 REST 请求需将kwargs编码为 JSON 字符串):

  • CosyVoice 系列CosyVoice-300M-SFT提供预置音色['中文女', '中文男', '日语男', '粤语女', '英文女', '英文男', '韩语女']CosyVoice-300M支持音色克隆,需传prompt_speech(WAV 格式,建议 16 kHz,其他采样率会被重采样到 16 kHz)与prompt_textCosyVoice-300M-Instruct额外支持instruct_text指令控制;CosyVoice2-0.5B集三者于一身,并支持stream=True原生流式。
  • FishSpeech-1.5:音色克隆参数对齐 CosyVoice,使用prompt_speechprompt_text
  • Breeze-TTS-2:支持自然语言音色设计(只传instruct)、音色克隆(prompt_speech+prompt_text)与"语音导演"(三者同传);cfg_scale默认 1,推荐 4,seed默认 42,仅支持 Linux + NVIDIA CUDA。
  • IndexTTS2:支持情感控制——emo_audio_prompt(情感参考音频)、emo_alpha(0.0~1.0,默认 1.0)、emo_vector(8 维情感强度列表,顺序为[happy, angry, sad, afraid, disgusted, melancholic, surprised, calm])、use_emo_text/emo_text(文本情感引导,建议emo_alpha约 0.6)以及use_random随机性开关;IndexTTS-2.5额外支持ZH/EN/JA/ES/AR语言参数、speed(0.5~2.0)与<词|读音>注音记号。
  • ACE-Step1.5(音乐生成):歌词放input,音乐描述放instructduration默认 60 秒(可传-1或 10~600);seed=-1随机、非负整数可复现;输出格式支持aac/flac/mp3/ogg/opus/wav/wav32;需要 Python 3.11/3.12,运行在独立虚拟环境中(源码约束见 core.py)。
  • MiniMax-Music3(音乐生成):同样复用 Speech 端点,duration范围 0.04~360 秒(默认 60,作为audio_duration直传 Diffusers),输出flac/mp3/ogg/wav;仅支持 NVIDIA CUDA(源码在 core.py 中显式校验)。

说话人嵌入(Speaker Embedding)

该端点一次输入一个音频文件,返回一个 192 维的说话人向量(内置 CAMPPlus 模型),设计上无状态,适合存储向量后用余弦相似度做说话人验证或 1:N 识别。请求使用multipart/form-data

curl -X POST \ 'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/audio/embeddings' \ -H 'accept: application/json' \ -F 'model=<MODEL_UID>' \ -F 'file=@speaker.wav'
from xinference.client import Client client = Client("http://<XINFERENCE_HOST>:<XINFERENCE_PORT>") model = client.get_model("<MODEL_UID>") with open("speaker.wav", "rb") as audio_file: result = model.create_embedding(audio_file.read()) embedding = result["embedding"] # 192 维向量

响应示例:

{ "object": "embedding", "model": "<MODEL_UID>", "dimensions": 192, "embedding": [0.0123, -0.0456, 0.0789] }

输入音频会被解码、转单声道并重采样到 16 kHz;比较两个向量时使用余弦相似度,阈值需结合自身场景数据标定。

从模型规格到实例化:内置音频模型的分发链路

要理解"为什么一条启动命令就能拉起任意音频模型",可以追踪 create_audio_model_instance 的完整流程:

  1. 解析引擎resolve_audio_model_name_and_engine先把*-mlx旧别名归一化为"规范名 + MLX 引擎"。
  2. 匹配规格match_audioBUILTIN_AUDIO_MODELS(由model_spec.json注册)中按模型名、引擎、量化等级、下载源(HuggingFace / ModelScope / OpenMind Hub / CSGHub)筛选出AudioModelFamilyV2规格。
  3. 引擎分发:若该模型注册了多引擎,则通过check_engine_by_model_name_and_engine找到具体实现类;若启用了虚拟环境(enable_virtual_env),走check_engine_by_model_name_and_engine_with_virtual_env绕过兼容性检查。
  4. 缓存下载:通过CacheManager把权重缓存到本地再实例化。
  5. 按模型族创建实例:未走引擎分发的模型族按model_spec.model_family分支创建对应实现类(如whisper族在 MLX 引擎下创建WhisperMLXModel,否则WhisperModelfunasr族对应FunASRModel/MLXAudioSTTModelqwen3_tts族对应Qwen3TTSModel/MLXAudioTTSModel等)。

每个内置模型规格还带有virtualenv依赖声明(如 Whisper 依赖transformersaccelerate、系统 torch/numpy,见 model_spec.json),配合 虚拟环境机制 可实现依赖隔离。若需要接入清单之外的模型,可参考 自定义音频模型 与 xinference/model/audio/custom.py 注册自有模型族。

结语

从 内置音频模型索引 出发,Xinference 以"一份模型规格 + 一条启动命令 + 四类 OpenAI 兼容 API"的方式封装了当今主流的开源音频模型。无论是用 Whisper/Qwen3-ASR 做多语种转录、用 CosyVoice/F5-TTS/IndexTTS2 做音色克隆与情感语音、还是用 ACE-Step/MiniMax-Music3 生成音乐,核心动作都收敛为一次xinference launch --model-type audio与一次标准 HTTP 调用,工程侧则可通过--model-engine在 CPU/GPU/Apple Silicon 之间灵活切换运行时。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 11:40:25

数字营销技术驱动增长:易点天下案例分析

1. 易点天下业绩增长背后的商业逻辑解析38亿年营收、50%同比增长、1.6亿研发投入——这组数据来自数字营销技术服务商易点天下最新发布的财报。作为深耕出海营销领域的老兵&#xff0c;我在分析这份成绩单时发现几个值得行业关注的信号&#xff1a;当多数企业还在为个位数增长挣…

作者头像 李华
网站建设 2026/9/16 11:39:11

Falcon Perception与PBench评估指标实战完整指南:从跑通到读报告

Falcon Perception与PBench评估指标实战完整指南&#xff1a;从跑通到读报告 【免费下载链接】VidBee Download video and audio from YouTube , TikTok , Twitter , Instagram , Facebook , Twitch , Bilibili , and 1000 sites—or import local media. Create searchable tr…

作者头像 李华
网站建设 2026/9/16 11:39:09

便携式双脉冲测试平台:IGBT与SiC器件动态参数快速验证方案

1. 项目概述&#xff1a;为什么一个“便携式双脉冲测试平台”值得工程师连夜拆箱&#xff1f;“青铜剑技术便携式双脉冲测试平台”——光看名字&#xff0c;你可能以为是某家新锐半导体设备商在搞概念营销。但如果你正在做新能源逆变器、车载OBC/DC-DC、光伏储能系统或工业变频…

作者头像 李华
网站建设 2026/9/16 11:36:15

用TensorFlow实现Iris分类神经网络:从数据预处理到checkpoint保存

简介&#xff1a;面向机器学习初学者的课程设计参考&#xff0c;围绕Iris鸢尾花数据集&#xff0c;演示从零搭建神经网络、训练分类模型的完整流程。资源包共25个文件&#xff0c;压缩后仅75KB&#xff0c;核心包含Python训练脚本main.py、Iris数据集iris.csv、TensorFlow模型文…

作者头像 李华
网站建设 2026/9/16 11:36:14

熟练掌握SpringCloud流行技术栈,如Nacos、Seata、Zookeeper、Dubbo、OpenFeign、GateWay、Sentinel、SkyWalking和Discovery。熟悉

Nacos 注册中心原理nacos1.x 1.提供方调用rest接口发起服务注册&#xff0c;注册自己的ip:端口 2.消费方每隔10秒拉取服务提供方注册列表 3.消费方提供方都需要和nacos每隔5秒进行心跳检测&#xff0c;15秒没有心跳&#xff0c;标志为不健康&#xff0c;30秒没有心跳标志位下线…

作者头像 李华