在发出我的 OpenClaw 可以开口说话|NoizAI 技能安装使用教程后,有朋友问:Noiz 有本地吗?
我说:NoizAI是个在线的。本地转语音需要安装文本转语音的模型。想看的话,我可以找找。
今天就来看看本地的模型:Mistral 3 月 26 日发布的 Voxtral TTS,一个文本转语音模型,模型权重开放、可以本地自托管。
简单说:一个 41 亿参数的文本转语音模型。
支持九种语言:英语、法语、德语、西班牙语、荷兰语、葡萄牙语、意大利语、印地语和阿拉伯语。
有两种使用方式:
Mistral 对这个模型的核心定位是:小体积 + 前沿级质量。
Hugging Face 上的默认 BF16 权重约 8 GB。
本地运行的最低门槛是 16 GB 显存的 GPU。
研究论文里提到量化版本可以把权重压到约 3 GB,但那不是当前的默认发布版本。
官方说这个量化后的版本可以在智能手机上运行。
Voxtral TTS 是一个基于 Ministral 3B 的 Transformer 架构自回归流匹配(Flow-matching)模型,分三个组件:
组件 | 参数量 | 作用 |
|---|---|---|
Transformer 解码器骨干 | 34 亿 | 从文本和语音输入预测语义标记 |
流匹配声学 Transformer | 3.9 亿 | 把语义标记转换为音频表示 |
神经音频编解码器 | 3 亿 | Mistral 从零搭建,12.5 Hz,帧长 80ms |
三个组件加起来约 41 亿参数。
编解码器是效率的关键:在一个紧密压缩的潜在空间里运作,让整个模型在生成高质量音频的同时,BF16 权重只需约 8 GB。
这三阶段流水线也是语音克隆得以实现的底层逻辑:
编解码器在潜在空间里捕捉说话者特征,骨干网络和声学 Transformer 再利用这些特征在新文本上重现那个声音。
Voxtral TTS 支持零样本语音克隆:只要提供一段参考音频,模型就能生成保留对方口音、语调和节奏的语音。
推荐的参考音频长度是 5 到 25 秒,最低接受 3 秒。
实测结论是:3 秒够用,但 8 秒以上才能明显捕捉到说话者的特征。
3 秒的片段,缺少让声音有辨识度的那些特定语调,听起来像"可能是任何人"。
换成 8 秒的片段,差别就很明显:口音、节奏,以及问句末尾的轻微上扬,这些都能被捕捉到。
8 到 15 秒,是投入与效果之间的好平衡点。
而且支持跨语言克隆。
给一段法语语音参考,然后输入德语文本,模型倾向于生成听起来像那位法语说话者的德语语音,保留了大量口音和声音特征。
这不是训练的功能,但实际挺好用,尤其是语音翻译场景里需要保留原说话者声音的时候。
只是要提醒你注意: 开放权重的本地版本,只能用那 20 个预设语音,不能克隆。
如果要克隆自定义声音,必须调 Mistral 的云 API。
很多 TTS 系统控制情感表达的方式是打标签:比如 ElevenLabs 用显式情感标签告诉模型"这里要读得兴奋一点"。
Voxtral TTS 的方式不同。
它有一个叫做"语音即指令"(Voice-as-an-instruction)的特性:不依赖标签,而是直接从你提供的语音参考推断语调、节奏和情感表达。
给它一段说话者兴奋讲述的参考音频,生成的语音自然就倾向于那种风格。
语气藏在参考音频里,不需要你额外标注。
Mistral 用的是人工偏好评估,不是常见的平均意见得分(MOS)指标。
理由是 MOS 无法可靠捕捉跨语言和跨文化的自然度。
测试由九种支持语言的母语标注员进行盲听对比。
主要结论:
对比 ElevenLabs Flash v2.5:
对比 ElevenLabs v3 和 Gemini 2.5 Flash TTS(情感引导测试):
延迟数据:
格式 | 首音频时间 |
|---|---|
PCM | ~0.8 秒(H200 单卡 70ms) |
MP3 | ~1.5–2 秒 |
这些基准数据全部来自 Mistral 自己的内部评估,数据仅供参考。
pip install mistralai
export MISTRAL_API_KEY="your-api-key-here"import base64
import os
from pathlib import Path
from mistralai.client import Mistral
client = Mistral(api_key=os.getenv("MISTRAL_API_KEY"))
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="你好,这是 Voxtral TTS 的基础语音生成测试。",
voice_id="your-voice-id",
response_format="mp3",
)
Path("output.mp3").write_bytes(base64.b64decode(response.audio_data))
print("已保存到 output.mp3")注意:方法是 .complete(),不是 OpenAI 那边的 .create()。响应的音频是 base64 编码,写入前需要解码。
import base64
import os
from pathlib import Path
from mistralai.client import Mistral
client = Mistral(api_key=os.getenv("MISTRAL_API_KEY"))
# 读取参考音频并 base64 编码
sample_audio_b64 = base64.b64encode(
Path("reference_voice.mp3").read_bytes()
).decode()
# 创建可复用的语音配置文件
voice = client.audio.voices.create(
name="my-custom-voice",
sample_audio=sample_audio_b64,
sample_filename="reference_voice.mp3",
languages=["zh"],
gender="male",
)
print(f"语音 ID:{voice.id}")
# 用克隆的声音生成语音
response = client.audio.speech.complete(
model="voxtral-mini-tts-2603",
input="这句话用的是从几秒参考音频克隆的声音生成的。",
voice_id=voice.id,
response_format="mp3",
)
Path("cloned_output.mp3").write_bytes(base64.b64decode(response.audio_data))前面介绍的是 TTS(文本转语音)这一个方向。
实际上,Mistral 在 2026 年 3 月完成了整套语音 AI 基础设施的布局:
组件 | 模型 | 定位 |
|---|---|---|
STT(语音转文字) | Voxtral Mini 3B / Small 24B | 实时转写,支持30分钟长音频,多语言 |
Realtime 实时流 | Voxtral Mini 4B Realtime | 流式音频,超低延迟,vLLM Realtime API |
TTS(文字转语音) | Voxtral TTS 4B | 9语言,3秒声音克隆,70ms 低延迟 |
企业定制平台 | Mistral Forge | 私有化部署、微调、全链路 Agent 构建 |
这意味着从「听」到「说」的完整语音 Agent 链路已经全部开源可用。
from mistralai.client import Mistral
import os
import base64
client = Mistral(api_key=os.getenv("MISTRAL_API_KEY"))
def voice_agent_pipeline(audio_file_path: str) -> bytes:
"""完整的语音 Agent:听 → 理解 → 说"""
# Step 1: STT - 语音转文字
with open(audio_file_path, "rb") as f:
transcript = client.audio.transcriptions.create(
model="voxtral-transcribe",
file=(audio_file_path, f, "audio/mpeg"),
)
user_text = transcript.text
print(f"用户说: {user_text}")
# Step 2: LLM - 理解 + 生成回复
response = client.chat.complete(
model="mistral-large-latest",
messages=[{"role": "user", "content": user_text}]
)
reply_text = response.choices[0].message.content
print(f"Agent 回复: {reply_text}")
# Step 3: TTS - 文字转语音
tts_response = client.audio.speech.create(
model="voxtral-tts",
input=reply_text,
voice="en-US-Neural2-D",
)
return base64.b64decode(tts_response.audio)
# 运行
audio_output = voice_agent_pipeline("user_input.mp3")
with open("reply.mp3", "wb") as f:
f.write(audio_output)整个 pipeline 就是三步:语音 → 文字 → LLM 推理 → 文字 → 语音,配合 Mistral Forge 定制平台,企业可以构建从语音输入到语音输出的全流程离线语音 Agent。
完整开源语音链路是人形机器人、客服 Agent、车载助手等具身和语音应用的核心基础设施。
Mistral 的开源路线大幅降低了语音 Agent 的部署门槛:过去需要调用多个闭源服务(STT + TTS),现在同一套 SDK,全部本地可跑。
API 支持五种输出格式:MP3、WAV、PCM(原始 float32)、FLAC 和 Opus。
怎么选?
模型单次可以生成最多两分钟的音频。
更长的内容,API 会用 Mistral 称为"智能纠错"的技术自动处理:把文本分块合成,然后无缝拼接,不会有明显断点。
1. 硬件门槛
默认 BF16 权重约 8 GB,推理需要至少 16 GB 显存的 GPU。
量化到约 3 GB 可以降低门槛,但当前 Hugging Face 发布的不是量化版本,需要自己处理。
2. 许可限制
开放权重使用的是 CC BY-NC 4.0 许可,仅限非商业用途。
商业场景需要走云 API,或者联系 Mistral 申请企业授权。
对比一下他们的语音转文本模型:那个用的是 Apache 2.0,商用没有限制,两者差距很大。
3. 自托管当前需要 vLLM-Omni
这是个工程依赖,部署前要确认你的环境支持。
整体来看,Voxtral TTS 合适以下场景:
场景 | 技术方案 | 部署方式 | 适合情况 |
|---|---|---|---|
智能客服 Agent | Voxtral STT + LLM + Voxtral TTS | 云 API / SageMaker | 需要多轮对话、快速响应 |
人形机器人语音交互 | voxtral.c(C 语言推理)+ 实时流 | 边缘设备本地运行 | 数据不上云、实时性要求高 |
车载语音助手 | Voxtral Realtime 4B + vLLM | 车载 GPU / 高端手机 | 离线可用、多语言支持 |
多语言电话客服 | Voxtral 9语言支持 + 声音克隆 | 私有云 + Forge | 企业品牌声音一致性 |
会议实时转写+播报 | Transcribe 2(30min 长音频) | 本地 vLLM 服务 | 会议记录、字幕生成 |
企业品牌声音 | 3秒声音克隆 + TTS | Forge 定制平台 | 品牌 IP 语音化 |
本地运行一定要 GPU 吗?
云 API 不需要。本地自托管默认版本需要至少 16 GB 显存。。
不支持的语言怎么处理?
模型不会报错,但输出质量会下降,并且没有警告提示。
发请求前先确认语言是否在支持列表里。
开放权重可以商用吗?
不行,CC BY-NC 4.0 仅限非商业用途。
商业场景用云 API 或联系企业授权。
如果语音 AI 方案可以本地部署,你希望用来做什么?
欢迎评论区留言。
-END-