概述

关于ASR和TTS模型,之前汇总过:

Chatterbox

Resemble AI推出的开源(GitHub,14K Star,1.8K Fork)项目Chatterbox,摘下首个支持情感夸张控制的开源TTS桂冠,更在盲测中击败ElevenLabs等商业系统,重新定义开源语音合成的技术天花板。HF DemoDemo

从阿拉伯语的喉音到斯瓦希里语的节奏,从韩语的语调起伏到中文的四声变化,基于0.5B Llama架构的模型展现出惊人的跨语言能力。不同于传统多语言模型需要为每种语言单独微调,采用一次训练全语言覆盖策略,通过对齐训练技术让不同语言共享底层语音特征。实测显示,在无参考音频时,模型生成的日语发音自然度达到母语者可接受水平;切换至阿拉伯语时,能自动适配从右至左的语言特性带来的韵律变化。这种能力源自其独特的"对齐感知推理"机制,可动态调整音素时长与语调曲线。

零样本语音克隆:只需3-5秒的参考音频,就能捕捉说话人的声纹特征、语速习惯甚至微表情带来的语调变化。在对比测试中,78%的听众无法区分克隆语音与真人原声。技术实现上,模型通过Perceiver模块提取参考音频的深层特征,结合S3 Tokenizer的音素解析,在保持内容清晰度的同时,完美复刻说话人的个性特质。这种克隆能力可无缝迁移到23种语言,既能保持原语言的声线,又符合新语言的发音规则。

引入情感夸张控制为语音合成带来新维度,通过简单调整参数:

  • 将exaggeration调至0.7,可生成戏剧化的播报语气
  • 降低cfg_weight至0.3,配合0.5的exaggeration,能模拟娓娓道来的讲述风格
  • 极端值组合(exaggeration=2.0+cfg_weight=0.1)甚至可生成动画角色般的夸张语音

这种可控性源自模型独特的双路径架构:文本编码器负责语义准确性,语音风格编码器则处理情感表达,两者通过交叉注意力机制动态融合。

作为生产级开源项目,内置多项企业级特性:

  • PerTh水印技术:所有生成音频含不可察觉水印,支持MP3压缩和剪辑后仍可检测
  • 超低延迟:优化后的推理管线可实现200ms以内响应,满足实时交互需求
  • 稳定性保障:通过50万小时清洗数据训练,极端文本输入也能避免崩音

安装:pip install chatterbox-tts

VibeVoice

技术报告,微软开源,9.8K Star,1.2K Fork,专注于生成长时、多说话人、高表现力的对话式音频,支持长达90分钟、包含4名说话人的复杂对话场景。VibeVoice-1.5B TTS。

特性:

  • 超低帧率连续语音Tokenize,​双Tokenizer架构​:
    • 声学Tokenizer​:保留音色、韵律等声学特征;
    • ​语义Tokenizer​:捕捉对话上下文语义
  • 混合生成框架
    • LLM理解上下文​:大型语言模型解析文本语义与对话结构,确保逻辑连贯性
    • 扩散模型生成细节​:基于扩散模型的解码器合成高保真声学细节,实现接近人声的自然度
  • 多说话人控制:通过说话人嵌入向量(Speaker Embedding)区分角色,在长对话中维持不同说话人的音色稳定性,突破传统TTS的1-2人限制。

TEN

官网,开源(GitHub,8.4K Star,972 Fork)、支持实时对话、多模态输入与输出、ASR+TTS、多模型支持(远端+本地)、Dify+Coze+OceanBase PowerRAG集成、MCP集成、多平台、多语言SDK。体验

体验

在这里插入图片描述
模型切换
在这里插入图片描述
可和第三方平台集成:
在这里插入图片描述
体验下来的几个问题:

  • 需提前设置好待识别语音
  • ASR识别不太准确
  • 未提供submit提交按钮,导致一句话没说完自动发起Query
  • TTS表现不太行,如断句,中英文混杂发音

如下图,系统默认语言为英文,中文语言强制识别为英文,错误百出:
在这里插入图片描述
支持本地部署:

docker 
# 源码
git clone
cd TEN-framework
cp .env.example .env
vim .env
# 构建
task use
# 启动
task run

WhisperLiveKit

基于OpenAI Whisper的开源(GitHub,8K Star,730 Fork)实时语音转录框架,WhisperLiveKit完美诠释现代语音处理系统的三大核心要素:

  1. 算法先进性
    • 集成2025年最新SOTA算法SimulStreaming
    • 支持WhisperStreaming (2023 SOTA)实时处理
    • 融合Streaming Sortformer说话人识别技术
  2. 工程实用性
    • 支持多种Whisper后端:原版、faster-whisper、MLX-whisper
    • WebSocket实时通信架构
    • 企业级并发处理能力
  3. 商业应用价值
    • 会议转录、客服系统、教育平台
    • 多语言支持,全球化部署就绪
    • 开源免费,降低企业成本

架构
在这里插入图片描述

实战

实时流式处理架构

from whisperlivekit import TranscriptionEngine, AudioProcessor
import asyncio

class RealTimeTranscriber:
	def __init__(self):
	self.engine = TranscriptionEngine(
		model="medium",
		diarization=True, # 说话人识别
		language="auto" # 自动语言检测
	)
	
	async def process_stream(self, audio_stream):
		"""实时处理音频流的核心逻辑"""
		processor = AudioProcessor(transcription_engine=self.engine)
		async for result in processor.stream_transcribe(audio_stream):
			yield {
				"text": result.text,
				"confidence": result.confidence,
				"speaker": result.speaker_id,
				"timestamp": result.timestamp
			}

WebSocket全双工通信实现

from fastapi import FastAPI, WebSocket
from contextlib import asynccontextmanager

@asynccontextmanager
async def lifespan(app: FastAPI):
	# 应用启动时初始化AI引擎
	global transcription_engine
	transcription_engine = TranscriptionEngine(model="large-v3")
	yield
	# 应用关闭时清理资源

app = FastAPI(lifespan=lifespan)

@app.websocket("/realtime-asr")
async def websocket_endpoint(websocket: WebSocket):
	await websocket.accept()
	audio_processor = AudioProcessor(transcription_engine)
	
	try:
		while True:
			# 接收音频数据
			audio_data = await websocket.receive_bytes()
			# 实时转录
			result = await audio_processor.transcribe_chunk(audio_data)
			# 立即返回结果
			await websocket.send_json({
				"type": "transcription",
				"data": result
			})
	except WebSocketDisconnect:
		print("客户端断开连接")

多模型性能优化策略

# 1. 开发测试环境 - 追求速度
whisperlivekit-server --model tiny --language en
# 2. 生产环境 - 平衡性能
whisperlivekit-server --model medium --diarization --warmup-file warmup.wav
# 3. 高精度场景 - 追求准确度
whisperlivekit-server --model large-v3 --language auto --ssl-certfile cert.pem

前端集成

// 现代化的前端实现
class MeetingAssistant {
	constructor() {
		this.websocket = new WebSocket('ws://localhost:8000/asr');
		this.mediaRecorder = null;
		this.transcripts = [];
	}
	
	async startRecording() {
		const stream = await navigator.mediaDevices.getUserMedia({audio: true});
		this.mediaRecorder = new MediaRecorder(stream);
		this.mediaRecorder.ondataavailable = (event) => {
			if (event.data.size > 0) {
				this.websocket.send(event.data);
			}
		};

		this.websocket.onmessage = (event) => {
			const result = JSON.parse(event.data);
			this.displayTranscript(result);
		};
		this.mediaRecorder.start(1000); // 每秒发送一次数据
	}
	
	displayTranscript(result) {
		const transcriptDiv = document.getElementById('transcripts');
		transcriptDiv.innerHTML += `
			<div class="transcript-item">
			<span class="speaker">${result.speaker_id || '未知说话人'}</span>
			<span class="text">${result.text}</span>
			<span class="time">${new Date(result.timestamp).toLocaleTimeString()}</span>
			</div>`;
	}
}
// 使用
const assistant = new MeetingAssistant();
document.getElementById('start-btn').onclick = () => assistant.startRecording();

会议纪要生成

# 添加会议纪要生成功能
import openai
from datetime import datetime

class MeetingSummarizer:
	def __init__(self):
		self.transcripts = []
		self.client = openai.OpenAI()
	
	def add_transcript(self, text, speaker, timestamp):
		self.transcripts.append({
			'speaker': speaker,
			'text': text,
			'timestamp': timestamp
		})
	
	def generate_summary(self):
		meeting_text = "\n".join([f"{t['speaker']}: {t['text']}" for t in self.transcripts
])
		response = self.client.chat.completions.create(
			model="gpt-3.5-turbo",
			messages=[{
				"role": "user",
				"content": f"请为以下会议内容生成结构化纪要:\n{meeting_text}"
			}]
		)
		return response.choices[0].message.content

NeuTTS Air

HF,开源(GitHub,3.7K Star,352 Fork),Neuphonic发布的NeuTTS Air,基于Qwen 0.5B构建,CPU可运行、具备即时语音克隆能力,只支持英文?

特性:

  • 超真实语音:尽管体积不大,输出的语音在自然度与人声接近程度上表现优异;
  • 本地运行:提供GGUF/GGML格式模型,可在CPU上推理,适合手机、笔记本、树莓派等设备;
  • 即时语音克隆:仅需约3秒钟参考音频,就能生成该说话人的音色与语调;
  • 轻量且高效架构:采用语言模型+编解码器的组合设计,成为在速度、质量和资源占用之间的折中方案;
  • 水印机制:所有生成音频都带有Perth(水印机制),用于责任追踪与版权保护;
  • 优化功耗与延迟:针对移动与嵌入式设备做功耗优化与实时推理优化。

用户只需要提供两类输入:一段参考语音(即样本音频)与目标文本。模型从参考语音中提取音色、语调特征,再将输入文本合成出与之匹配的语音。

技术:

  • 音频编解码器:NeuCodec,专有神经音频编解码器,使用单个码本在低比特率下实现卓越的音频质量;

实战

安装:

git clone https://github.com/neuphonic/neutts-air.git
cd neuttsair 
pip install -r requirements.txt
# 安装espeak
https://github.com/espeak-ng/espeak-ng/blob/master/docs/guide.md

命令行示例:

python -m examples.basic_example --input_text "..." --ref_audio samples/dave.wav --ref_text samples/dave.txt

SDK

from neuttsair.neutts import NeuTTSAir
import soundfile as sf

tts = NeuTTSAir( backbone_repo="neuphonic/neutts-air-q4-gguf", backbone_device="cpu", codec_repo="neuphonic/neucodec", codec_device="cpu")
input_text = "..."

ref_text = "samples/dave.txt"
ref_audio_path = "samples/dave.wav"

ref_text = open(ref_text, "r").read().strip()
ref_codes = tts.encode_reference(ref_audio_path)

wav = tts.infer(input_text, ref_codes, ref_text)
sf.write("test.wav", wav, 24000)

最佳实践:

  • 参考音频样本:单声道,16-44 kHz采样率,时长3至15秒,.wav格式,干净(无背景噪音极小甚至没有),自然连续的语音——就像独白或对话一样,几乎没有停顿,因此模型可有效地捕捉语调。

Step-Audio-2

阶跃星辰开源(GitHub,1.2K Star,83 Fork),论文

系列包括两款模型

可处理从语音输入到语音输出的完整交互链,包括语义理解、副语言信息捕捉、工具调用等。能力包括:语音识别、语音翻译(文本输出和语音输出)、语音理解、多轮语音问答(文本输出和语音输出)等。

Paralinguistic information understanding,副语言信息理解,包括:Gender、Age、Timbre、Scenario、Event、Emotion、Pitch、Rhythm、Speed、Style、Vocal。

URO-Bench,understanding, reasoning, and oral conversation。

Sayathing

KanthorLabs开源(GitHub,68 Star)的TTS平台,使用先进的AI模型,结合Kokoro TTS引擎。

核心模块:

  • HTTP服务:基于FastAPI构建的REST API
  • 任务队列:使用SQLite实现的后台任务处理系统
  • TTS引擎:集成强大Kokoro TTS语音合成引擎
  • 数据库:采用SQLAlchemy ORM和异步SQLite
  • 依赖注入:通过容器管理服务,模块之间解耦清晰
功能 说明
RESTful API 提供清晰的API接口,方便调用
异步处理 支持后台任务队列,高效处理多个请求
多种音色 提供多种语音风格和语言选择
Web控制台 可视化监控任务状态和系统运行情况
Docker支持 支持容器化部署,易于上线
依赖注入 架构清晰,模块化设计
高并发支持 多worker架构,轻松应对高并发
稳定性强 内置重试机制和错误处理

实战

支持多种安装方式:

git clone https://github.com/kanthorlabs/sayathing.git
cd sayathing
# 基于uv
uv sync
uv run python main.py
# 基于pip
python -m venv venv
source venv/bin/activate
pip install -e .
python main.py
# 基于Docker
docker build -t sayathing .
docker run -p 8000:8000 sayathing

浏览器打开http://localhost:8000/ui/dashboard查看Web UI,打开http://localhost:8000/docs查看REST API文档。

curl命令:

# 获取支持的语音列表
curl "http://localhost:8000/api/voices"
# tts
curl -X POST "http://localhost:8000/api/tts" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello, world! This is SayAThing speaking.",
    "voice_id": "kokoro.af_heart"
  }'

其他命令

# 测试
make test              # 运行所有测试
make test-coverage     # 带覆盖率的测试
make test-integration  # 集成测试
make check             # 代码检查 + 测试
# 开发
uv run python main-dev.py  # 自动重载的开发服务器
# 参数
uv run python main.py --primary-workers 2 --retry-workers 1  # 指定 worker 数量
uv run python main.py --no-http  # 只运行后台任务
uv run python main.py --help   # 查看帮助信息

LFM2-Audio

Liquid AI推出LFM2-Audio-1.5B,一款紧凑的音频-语言基础模型,能够通过单一的端到端架构理解和生成语音与文本。旨在为资源受限的设备提供低延迟、实时助手功能,同时将LFM2家族扩展到音频领域,保持小巧的体积。

将1.2B参数的LFM2语言骨干网络扩展到音频和文本,将它们视为一级序列标记。该模型分离音频表示:输入是直接从原始波形块(约80毫秒)投影的连续嵌入,而输出是离散的音频代码。避免输入路径上的离散化伪影,同时保持输出路径上两种模态的自回归训练和生成。

大多数全能堆栈将ASR→LLM→TTS耦合在一起,会增加延迟,导致接口脆弱。LFM2-Audio的单一骨干设计,具有连续的输入嵌入和离散的输出代码,减少粘合逻辑,并允许交错解码以提前发出音频。对于开发者来说,更简单的管道和更快的感知响应时间,同时仍然支持ASR、TTS、分类和对话代理,所有这些功能都来自一个模型。

组件和特性:

  • 骨干网络:LFM2(混合卷积+注意力),1.2B参数(仅语言模型)
  • 音频编码器:FastConformer(约1.15亿参数,canary-180m-flash)
  • 音频解码器:RQ-Transformer,预测离散的Mimi编码器标记(8个码本)
  • 上下文:32768个标记;
  • 词汇表:65536(文本)/2049×8(音频)
  • 精度:bfloat16;

两种生成模式用于实时代理

  • 交错生成:用于实时语音到语音聊天,模型交替使用文本和音频标记,以最小化感知延迟。
  • 顺序生成:用于ASR/TTS(按轮次切换模态)。

VoiceBench:九项音频助手评估,包括AlpacaEval、CommonEval、WildVoice、AMI、LibriSpeech-clean、ASR WER、

安装:pip install liquid-audio

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐