Xinference 内置音频模型实战:whisper-base 语音转写与翻译部署指南
Xinference 内置音频模型实战whisper-base 语音转写与翻译部署指南【免费下载链接】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/inferencewhisper-base 是 Xinference 内置的轻量级多语言语音识别ASR模型通过audio2text能力以统一推理 API 对外提供音频转录transcriptions与音频翻译translations服务。本文围绕 whisper-base 官方内置模型文档 展开结合仓库源码讲解其双引擎架构、启动命令、可调参数与调用方式帮助你在一行命令内把 Whisper 语音识别能力接入生产级推理服务。whisper-base 模型概览根据内置模型规格whisper-base.rst该模型的元信息如下属性值Model Namewhisper-baseModel FamilywhisperAbilitiesaudio2text语音转文本MultilingualTrue支持多语言转录与翻译其中Multilingual: True意味着该模型不仅支持跨语言语音转录把任意支持语言的语音转写为对应语言文本还支持翻译任务translations将任意支持语言的语音翻译为英文。从源码看Xinference 会在调用翻译接口时检查该标记若不支持翻译会直接抛出RuntimeError见 whisper.py 中translations方法对self._model_spec.multilingual的校验。Specifications模型来源与权重标识原文档给出两个引擎对应的上游模型标识Model IDtransformers 引擎openai/whisper-baseMLX 引擎mlx-community/whisper-base-mlx在仓库的模型注册表 model_spec.json 中可以进一步看到这些标识的细节transformers 版本的model_format为pytorch并锁定了上游 Hugging Face 仓库的具体 revision8c1db9b51951100007a96a525d83a8ec81b3c237确保每次部署获取到的权重是一致的见 model_spec.jsonMLX 版本以独立条目注册cache_name为whisper-base-mlx同样指向mlx-community/whisper-base-mlx见 model_spec.jsonMLX 引擎的虚拟环境依赖声明为mlx-whisper与numba0.64.0而 transformers 引擎则依赖transformers、accelerate与系统自带的torch、numpy。这意味着两种引擎由 Xinference 的虚拟环境机制隔离管理互不污染。启动 whisper-base一行命令拉起 ASR 服务原文档给出的标准启动命令是xinference launch --model-name whisper-base --model-type audio --model-engine transformers参数语义如下参数说明--model-name指定模型名此处为whisper-base--model-type模型类型音频模型固定为audio--model-engine推理引擎可选transformers或MLX从 core.py 的resolve_audio_model_name_and_engine逻辑可以看到引擎解析细节如果省略--model-engineXinference 会依据注册表中的引擎顺序选择默认引擎若同时提供引擎参数则精确匹配。底层实例化时create_audio_model_instance 会根据model_family whisper且engine mlx的分支创建WhisperMLXModel否则创建WhisperModel两条实现路径在下一节详述。另外仓库为旧版命名提供了兼容别名whisper-base-mlx会被自动解析为(whisper-base, MLX)即旧名称直接映射到 whisper-base 的 MLX 引擎见 core.py 的LEGACY_AUDIO_MODEL_ALIASES。如果你之前习惯了whisper-base-mlx这种命名依然可以直接使用无需改写脚本。可用引擎与底层实现剖析原文档列出 whisper-base 支持的两类引擎transformers与MLX。它们的加载与推理实现分别位于whisper.py基于 Hugging Face Transformers 的pipeline(automatic-speech-recognition)whisper_mlx.py基于 Apple MLX 生态的mlx-whisper/lightning_whisper_mlx。transformers 引擎标准 PyTorch 加载链路WhisperModel.load()whisper.py的核心流程为通过get_available_device()自动选择可用设备或校验用户指定设备是否可用按设备偏好确定torch_dtype如 GPU 上的半精度并启用low_cpu_mem_usageTrue加载AutoModelForSpeechSeq2Seq加载AutoProcessor内部同时持有 tokenizer 与 feature extractor组装pipeline(automatic-speech-recognition, ...)并把模型配置项chunk_length_s、stride_length_s、return_timestamps、batch_size一并传入。MLX 引擎Apple Silicon 上的轻量推理WhisperMLXModel._load()whisper_mlx.py在 MLX 线程上执行并支持use_lightning参数auto/True/False当取值为auto或True时优先尝试导入lightning_whisper_mlxLightning Whisper MLX 加速版本导入失败且为auto时自动回退到原生mlx_whisper加载时以mx.float16精度调用ModelHolder.get_model推理时若启用 Lightning会以batch_size默认 12批量转写否则走mlx_whisper.transcribe单条路径见 whisper_mlx.py。从源码结构可以推断MLX 引擎专为 Apple 芯片Apple Silicon设计适合在 Mac 本机以低资源占用运行 whisper-base而 transformers 引擎覆盖 CUDA GPU 与 CPU 等更通用的环境。模型配置参数从启动到推理的完整控制WhisperModel在初始化时通过_sanitize_model_config为所有配置项设置默认值见 whisper.py配置项类型默认值作用chunk_length_sfloat30长音频按多少秒切块处理超过 30 秒的音频自动分块stride_length_sfloatNone相邻分块之间的重叠步长用于缓解切块边界处的识别损失return_timestampsboolFalse是否返回时间戳信息segment 级batch_sizeint16分块批处理大小影响吞吐与显存占用这些参数可在启动模型时作为附加配置传入如--model-config {chunk_length_s: 30, batch_size: 8}也可在单次请求中通过kwargs覆盖。max_new_tokens在构造函数中默认取128控制单次生成的最大 token 数同时会被写入转写请求的generate_kwargs见 whisper.py。统一推理 API转写与翻译whisper-base 通过 Xinference 的 OpenAI 兼容音频端点对外提供服务路由注册于 audio.pyPOST /v1/audio/transcriptions语音转写POST /v1/audio/translations语音翻译为英文POST /v1/audio/embeddings、POST /v1/audio/speech同一路由组中的其他音频能力服务端处理逻辑位于 restful_api.py 的create_transcriptions/create_translations请求以multipart/form-data提交核心字段包括字段类型默认值说明modelstr必填模型 UIDfilefile必填音频文件对象flac、mp3、mp4、mpeg、mpga、m4a、ogg、wav、webm 等格式languagestr可选输入音频语言ISO-639-1 格式显式指定可提升准确率与延迟promptstr可选引导模型风格或衔接上一音频片段的提示文本需与音频语言一致response_formatstrjson输出格式temperaturefloat0采样温度非 0 时开启do_sampletimestamp_granularities[]list可选时间戳粒度segment或wordkwargsstr可选附加 JSON 参数如max_new_tokens输出格式与时间戳行为在 whisper.py 的_call_model中后端实现明确了输出契约json返回{text: ...}纯文本结果verbose_json默认返回task、language、duration、text与segmentssegment 级时间戳与文本块当timestamp_granularities [word]时返回words词级时间戳列表每个词包含word、start、end其他response_format如text、srt、vtt在后端实现中会抛出ValueError——这与客户端 docstring 中列出的候选格式并不完全一致实际可用格式以当前 whisper 后端实现为准。temperature非零时实现会把temperature与do_sampleTrue注入generate_kwargs以引入随机性。客户端调用示例Python 客户端Xinference 官方 Python 客户端在 restful_client.py 中封装了transcriptions方法用法如下from xinference.client import Client client Client(http://localhost:9997) model_uid client.launch_model( model_namewhisper-base, model_typeaudio, model_enginetransformers, ) with open(speech.mp3, rb) as f: audio_bytes f.read() # 语音转写 result client.transcriptions( modelmodel_uid, audioaudio_bytes, languagezh, response_formatjson, ) print(result[text]) # 带词级时间戳的 verbose 结果 verbose client.transcriptions( modelmodel_uid, audioaudio_bytes, response_formatverbose_json, timestamp_granularities[word], ) print(verbose[words]) # 语音翻译为英文whisper-base 为多语言模型支持该能力 translation client.translations( modelmodel_uid, audioaudio_bytes, languagezh, ) print(translation[text])curl 直连 REST API对于无客户端环境的调用方可直接使用 HTTP 请求curl -X POST http://localhost:9997/v1/audio/transcriptions \ -F modelwhisper-base \ -F filespeech.wav \ -F languagezh \ -F response_formatjson小结与延伸阅读whisper-base 是 Xinference 内置音频模型中轻量、多语言、双引擎兼备的代表在通用设备上用 transformers 引擎在 Apple Silicon 上用 MLX 引擎均可通过同一条xinference launch命令完成部署并以 OpenAI 兼容的/v1/audio/transcriptions与/v1/audio/translations端点对外服务。如需继续深入可参考以下仓库资源同系列其他内置模型文档whisper-tiny、whisper-small、whisper-medium、whisper-large-v3对比不同规模模型的规格差异transformers 引擎实现 whisper.py 与 MLX 引擎实现 whisper_mlx.py音频模型注册与引擎派发逻辑 core.py 及内置模型清单 model_spec.jsonREST API 服务端处理 restful_api.py 与路由注册 audio.pyPython 客户端封装 restful_client.py 与 async_restful_client.py异步版本同样提供transcriptions/translations接口。【免费下载链接】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),仅供参考