首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >开源语音 AI:3 秒克隆声音,支持 9 种语言 — Voxtral TTS

开源语音 AI:3 秒克隆声音,支持 9 种语言 — Voxtral TTS

作者头像
技术人生黄勇
发布2026-04-09 11:05:30
发布2026-04-09 11:05:30
2410
举报
文章被收录于专栏:技术人生黄勇技术人生黄勇

在发出我的 OpenClaw 可以开口说话|NoizAI 技能安装使用教程后,有朋友问:Noiz 有本地吗?

我说:NoizAI是个在线的。本地转语音需要安装文本转语音的模型。想看的话,我可以找找。

今天就来看看本地的模型:Mistral 3 月 26 日发布的 Voxtral TTS,一个文本转语音模型,模型权重开放、可以本地自托管


Voxtral TTS 是什么

简单说:一个 41 亿参数的文本转语音模型。

支持九种语言:英语、法语、德语、西班牙语、荷兰语、葡萄牙语、意大利语、印地语和阿拉伯语。

有两种使用方式:

  1. 1. 直接用 20 个内置预设语音中的一个
  2. 2. 上传一段参考音频,克隆特定说话者的声音

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:

  • • 使用内置旗舰语音时:58.3% 的对比中,人工标注员偏好 Voxtral TTS
  • • 零样本语音克隆时:偏好比例上升到 68.4%
  • • 差距最大的语言:印地语(约 80%)、西班牙语(约 88%)
  • • 薄弱环节:荷兰语(49.4%),ElevenLabs 在这里占优

对比 ElevenLabs v3 和 Gemini 2.5 Flash TTS(情感引导测试):

  • • 对比 ElevenLabs v3:显式情感引导大致持平,隐式引导 Voxtral 略占优势
  • • 对比 Gemini 2.5 Flash TTS:Gemini 以约 65% 胜出

延迟数据:

格式

首音频时间

PCM

~0.8 秒(H200 单卡 70ms)

MP3

~1.5–2 秒

这些基准数据全部来自 Mistral 自己的内部评估,数据仅供参考。


上手三步:从零跑起来

第一步:安装 SDK 和配置 API Key

代码语言:javascript
复制
pip install mistralai
export MISTRAL_API_KEY="your-api-key-here"

第二步:生成基础语音(预设语音)

代码语言:javascript
复制
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 编码,写入前需要解码。

第三步:克隆自定义语音(需 API)

代码语言:javascript
复制
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))

Voxtral 语音矩阵:听 → 说 完整链路

前面介绍的是 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 链路已经全部开源可用。

端到端语音 Agent 代码示例

代码语言:javascript
复制
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,全部本地可跑。


格式选哪个:PCM vs MP3

API 支持五种输出格式:MP3、WAV、PCM(原始 float32)、FLAC 和 Opus。

怎么选?

  • 保存文件 / 常规播放:用 MP3,更通用,延迟 1.5–2 秒可以接受
  • 语音 Agent 管道 / 追求低延迟:用 PCM,0.6–0.9 秒,但是原始未压缩格式,需要应用层自己处理转换

模型单次可以生成最多两分钟的音频。

更长的内容,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 管道:低延迟 PCM 输出,接入流式应用有优势
  • 多语言旁白工具:九种语言覆盖,跨语言克隆能力实用
  • 数据不出本地的合规场景:开放权重 + 自托管,数据完全在你自己的基础设施上(注意非商业限制)
  • 需要个性化声音的应用:语音克隆 + 语音即指令,不用手动写情感标签

应用场景案例

场景

技术方案

部署方式

适合情况

智能客服 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-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术人生黄勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Voxtral TTS 是什么
  • 架构是怎么设计的
  • 语音克隆
  • "语音即指令":不用写情感标签
  • 基准测试
  • 上手三步:从零跑起来
    • 第一步:安装 SDK 和配置 API Key
    • 第二步:生成基础语音(预设语音)
    • 第三步:克隆自定义语音(需 API)
  • Voxtral 语音矩阵:听 → 说 完整链路
    • 端到端语音 Agent 代码示例
    • 完整开源语音链路的意义
  • 格式选哪个:PCM vs MP3
  • 本地部署须知
  • 适合什么场景
  • 应用场景案例
  • 常见问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档