Faster-Whisper:极速语音识别的深度学习解决方案
技术原理:揭开高效语音识别的黑箱
核心架构:从模型到推理的全链路优化
Faster-Whisper的卓越性能源于其精心设计的技术架构,该架构在保持识别精度的同时实现了效率的飞跃。其核心创新在于将OpenAI的Whisper模型与CTranslate2引擎(一种专为Transformer模型设计的高效推理框架)相结合,形成了一个高度优化的语音识别系统。
架构流程图:
音频输入 → 特征提取 → CTranslate2优化编码器 → 优化解码器 → 文本输出
↑ ↓ ↓
PyAV处理 INT8量化支持 动态内存管理
CTranslate2引擎通过以下关键技术实现性能提升:
- 权重优化存储:将模型参数转换为更高效的格式
- 计算图优化:消除冗余操作,合并计算节点
- 硬件加速适配:针对CPU/GPU架构的指令优化
技术小结:Faster-Whisper通过CTranslate2引擎实现了计算效率的质的飞跃,同时保持了与原版Whisper相当的识别精度,为实时语音处理提供了强大基础。
量化技术:平衡精度与性能的艺术
量化是Faster-Whisper实现高效推理的核心技术之一,它通过降低模型参数的数值精度来减少计算资源消耗,同时尽可能保持识别质量。
量化策略对比:
| 计算类型 | 精度特点 | 硬件适用性 | 内存占用 | 速度提升 |
|---|---|---|---|---|
| float16 | 高精度,损失最小 | 现代GPU | 中等 | 2倍 |
| int8_float16 | 混合精度,关键层保留float16 | 中端GPU/高端CPU | 较低 | 3倍 |
| int8 | 全量化,精度损失较大 | 所有CPU/低端GPU | 最低 | 4倍 |
量化过程通过模型转换工具实现,将标准PyTorch模型转换为CTranslate2支持的格式:
# 模型转换示例(需安装ctranslate2库)
from ctranslate2.converters import WhisperConverter
converter = WhisperConverter("original-whisper-model/")
converter.convert("faster-whisper-model/", quantization="int8")
技术小结:量化技术使Faster-Whisper能够在不同硬件平台上高效运行,通过选择合适的量化策略,可以在精度和性能之间取得最佳平衡。
推理优化:突破性能瓶颈的关键技术
Faster-Whisper在推理过程中采用了多项优化技术,显著提升了语音识别速度:
- KV缓存机制:缓存解码器注意力层的键值对,避免重复计算
- 批处理优化:动态调整批处理大小,充分利用硬件资源
- 波束搜索改进:优化波束搜索算法,减少候选路径数量
这些优化共同作用,使Faster-Whisper相比原版Whisper实现了4倍以上的速度提升,同时内存占用减少60%以上。
技术小结:推理优化是Faster-Whisper性能优势的关键所在,通过算法层面的创新,实现了在不降低识别质量的前提下大幅提升处理速度。
实践指南:从零构建高效语音识别系统
环境搭建:跨平台安装与配置
问题:如何在不同操作系统上正确安装Faster-Whisper并解决常见依赖问题?
方案:
📌 基础安装步骤:
# 创建并激活虚拟环境
python -m venv whisper-env
source whisper-env/bin/activate # Linux/Mac
# 或
whisper-env\Scripts\activate # Windows
# 安装Faster-Whisper
pip install faster-whisper
📌 特定平台优化:
Apple Silicon (M1/M2):
# 针对Apple芯片优化安装
CMAKE_ARGS="-DLLAMA_METAL=on" pip install faster-whisper
Linux服务器:
# 安装系统依赖
sudo apt update && sudo apt install -y build-essential libsndfile1
# 安装带CUDA支持的版本
pip install faster-whisper[cuda12x]
验证:
# 验证安装是否成功
from faster_whisper import WhisperModel
model = WhisperModel("base")
print("安装成功!支持的计算类型:", model.supported_compute_types())
技术小结:Faster-Whisper提供了跨平台支持,通过针对不同硬件环境的优化安装命令,可以确保在各种系统上获得最佳性能。
模型选择:匹配需求的最佳实践
问题:面对多种模型尺寸和配置选项,如何为特定应用场景选择最合适的模型参数?
方案:
根据应用需求从三个维度进行选择:模型大小、计算类型和设备类型。
📌 模型选择决策树:
- 确定性能需求:实时性 > 精度 → 选择小型模型;精度 > 速度 → 选择大型模型
- 评估硬件条件:GPU可用 → 优先float16;仅CPU → 选择int8
- 考虑语言支持:多语言需求 → 选择-large模型;单一语言 → 可考虑专用模型
常用模型配置示例:
| 应用场景 | 模型选择 | 计算类型 | 设备要求 | 典型性能 |
|---|---|---|---|---|
| 实时语音转写 | base | int8 | 普通CPU | 10x实时速度 |
| 桌面应用 | medium | int8_float16 | 中端GPU | 8x实时速度 |
| 高精度转录 | large-v3 | float16 | 高端GPU | 4x实时速度 |
验证:
# 测试不同模型性能
import time
from faster_whisper import WhisperModel
def test_model_performance(model_size, compute_type, audio_path):
model = WhisperModel(model_size, compute_type=compute_type)
start_time = time.time()
segments, _ = model.transcribe(audio_path)
duration = time.time() - start_time
audio_duration = sum(seg.end - seg.start for seg in segments)
return f"模型: {model_size}, 计算类型: {compute_type}, 速度: {audio_duration/duration:.2f}x实时"
# 测试不同配置
results = [
test_model_performance("base", "int8", "test_audio.wav"),
test_model_performance("medium", "int8_float16", "test_audio.wav"),
test_model_performance("large-v3", "float16", "test_audio.wav")
]
for result in results:
print(result)
技术小结:模型选择需要综合考虑性能需求、硬件条件和语言支持,通过实际测试可以找到最适合特定应用场景的配置。
基础转录:构建高效处理流水线
问题:如何构建一个可靠的语音转录流水线,处理不同格式和质量的音频文件?
方案:
构建一个完整的语音转录流水线包括音频加载、预处理、模型推理和结果后处理四个关键步骤。
📌 完整转录流程实现:
from faster_whisper import WhisperModel
import json
from pathlib import Path
class AudioTranscriber:
def __init__(self, model_size="medium", compute_type="int8_float16", device=None):
self.model = WhisperModel(model_size, compute_type=compute_type, device=device)
def transcribe_audio(self, audio_path, language=None, word_level_timestamps=False):
"""
转录音频文件并返回结构化结果
参数:
audio_path: 音频文件路径
language: 指定语言代码(如"zh","en"), None表示自动检测
word_level_timestamps: 是否生成词级时间戳
返回:
包含转录文本和时间戳的字典
"""
segments, info = self.model.transcribe(
audio_path,
language=language,
word_timestamps=word_level_timestamps,
beam_size=5,
vad_filter=True
)
result = {
"language": info.language,
"language_probability": info.language_probability,
"segments": []
}
for segment in segments:
segment_data = {
"start": segment.start,
"end": segment.end,
"text": segment.text,
"words": []
}
if word_level_timestamps and segment.words:
for word in segment.words:
segment_data["words"].append({
"word": word.word,
"start": word.start,
"end": word.end,
"probability": word.probability
})
result["segments"].append(segment_data)
return result
def save_transcription(self, result, output_path):
"""保存转录结果到JSON文件"""
with open(output_path, "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=2)
# 使用示例
if __name__ == "__main__":
transcriber = AudioTranscriber(model_size="medium", compute_type="int8_float16")
audio_path = "meeting_recording.wav"
result = transcriber.transcribe_audio(audio_path, language="zh", word_level_timestamps=True)
transcriber.save_transcription(result, "transcription_result.json")
print(f"转录完成,结果已保存到 transcription_result.json")
验证:
- 检查输出的JSON文件是否包含完整的转录文本和时间戳
- 验证不同类型的音频文件(MP3、WAV等)是否都能正确处理
- 测试不同长度的音频(短至几秒,长至几小时)的处理稳定性
技术小结:构建结构化的转录流水线可以提高代码复用性和可维护性,同时确保处理结果的一致性和可靠性。
进阶应用:解锁Faster-Whisper的隐藏潜力
实时语音转写:打造低延迟交互系统
实时语音转写是Faster-Whisper的重要应用场景,可用于会议记录、实时字幕生成等交互系统。实现低延迟实时转写需要特殊的技术策略。
📌 实时转写实现:
import pyaudio
import numpy as np
from faster_whisper import WhisperModel
class RealTimeTranscriber:
def __init__(self, model_size="base", compute_type="int8", sample_rate=16000):
self.model = WhisperModel(model_size, compute_type=compute_type)
self.sample_rate = sample_rate
self.buffer = []
self.buffer_duration = 3.0 # 缓冲区持续时间(秒)
self.buffer_samples = int(sample_rate * self.buffer_duration)
self.is_running = False
def audio_callback(self, in_data, frame_count, time_info, status):
# 将音频数据转换为模型输入格式
audio_data = np.frombuffer(in_data, dtype=np.int16).astype(np.float32) / 32768.0
self.buffer.extend(audio_data)
# 当缓冲区达到指定长度时进行转录
if len(self.buffer) >= self.buffer_samples:
# 提取缓冲区数据并清空
audio_segment = np.array(self.buffer[:self.buffer_samples])
self.buffer = self.buffer[self.buffer_samples//2:] # 保留一半重叠数据
# 转录当前音频段
segments, _ = self.model.transcribe(
audio_segment,
language="zh",
condition_on_previous_text=False, # 禁用上下文依赖以降低延迟
beam_size=3,
vad_filter=True
)
# 输出转录结果
for segment in segments:
print(segment.text, end="")
return (in_data, pyaudio.paContinue)
def start(self):
self.is_running = True
p = pyaudio.PyAudio()
stream = p.open(
format=pyaudio.paInt16,
channels=1,
rate=self.sample_rate,
input=True,
frames_per_buffer=1024,
stream_callback=self.audio_callback
)
print("实时转录已启动,正在监听... (按Ctrl+C停止)")
try:
while self.is_running:
input("")
except KeyboardInterrupt:
print("\n正在停止转录...")
self.is_running = False
stream.stop_stream()
stream.close()
p.terminate()
# 使用示例
if __name__ == "__main__":
transcriber = RealTimeTranscriber(model_size="base", compute_type="int8")
transcriber.start()
性能优化技巧:
- 使用较小的模型(base或small)以降低延迟
- 禁用上下文依赖(condition_on_previous_text=False)
- 减少beam_size(3-5之间)
- 合理设置音频缓冲区大小(2-5秒为宜)
技术小结:实时语音转写需要在识别精度和延迟之间取得平衡,通过优化模型选择和转录参数,可以构建响应迅速且准确率高的实时转写系统。
多语言识别:构建全球化语音应用
Faster-Whisper支持多种语言的语音识别,通过合理配置可以构建支持多语言的全球化语音应用。
📌 多语言识别实现:
from faster_whisper import WhisperModel
from langdetect import detect # 需要安装langdetect库: pip install langdetect
class MultilingualTranscriber:
def __init__(self, model_size="large-v3", compute_type="float16"):
# large模型对多语言支持更好
self.model = WhisperModel(model_size, compute_type=compute_type)
self.supported_languages = {
"en": "英语",
"zh": "中文",
"ja": "日语",
"ko": "韩语",
"fr": "法语",
"de": "德语",
"es": "西班牙语",
"ru": "俄语"
}
def detect_language(self, text_sample):
"""从文本样本中检测语言"""
try:
lang_code = detect(text_sample)
return lang_code if lang_code in self.supported_languages else "en"
except:
return "en" # 默认返回英语
def transcribe_with_language_detection(self, audio_path, auto_detect=True, language=None):
"""
带语言检测的转录功能
参数:
audio_path: 音频文件路径
auto_detect: 是否自动检测语言
language: 手动指定语言代码(如"zh","en")
"""
if auto_detect and not language:
# 先使用快速模型进行初步转录以检测语言
fast_model = WhisperModel("base", compute_type="int8")
segments, _ = fast_model.transcribe(audio_path, language=None, beam_size=1)
text_sample = " ".join([s.text for s in segments])
language = self.detect_language(text_sample)
print(f"自动检测到语言: {self.supported_languages.get(language, language)}")
# 使用主模型进行高精度转录
segments, info = self.model.transcribe(
audio_path,
language=language,
beam_size=5,
initial_prompt=self._get_language_prompt(language)
)
return {
"language": language,
"language_name": self.supported_languages.get(language, language),
"segments": list(segments)
}
def _get_language_prompt(self, language):
"""根据语言提供适当的初始提示"""
prompts = {
"zh": "请用标准普通话转录以下内容,保留标点符号和语气词",
"en": "Please transcribe the following content in standard English, preserving punctuation",
"ja": "標準的な日本語で以下の内容を文字起こししてください。句読点を保持してください",
"ko": "표준 한국어로 다음 내용을 녹음하여 구두점을 유지하십시오",
# 其他语言提示...
}
return prompts.get(language, "")
def transcribe_multiple_files(self, audio_files, output_dir):
"""批量转录多个文件"""
import os
os.makedirs(output_dir, exist_ok=True)
for audio_path in audio_files:
try:
result = self.transcribe_with_language_detection(audio_path)
filename = os.path.splitext(os.path.basename(audio_path))[0]
output_path = os.path.join(output_dir, f"{filename}_{result['language']}.txt")
with open(output_path, "w", encoding="utf-8") as f:
f.write(f"语言: {result['language_name']}\n\n")
for segment in result["segments"]:
f.write(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}\n")
print(f"已处理: {audio_path} -> {output_path}")
except Exception as e:
print(f"处理 {audio_path} 时出错: {str(e)}")
# 使用示例
if __name__ == "__main__":
transcriber = MultilingualTranscriber(model_size="large-v3", compute_type="float16")
audio_files = ["english_lecture.mp3", "chinese_podcast.wav", "japanese_interview.mp3"]
transcriber.transcribe_multiple_files(audio_files, "transcriptions_output")
技术小结:多语言识别功能使Faster-Whisper能够适应全球化应用场景,通过结合语言自动检测和针对性提示,可以显著提高不同语言的识别准确率。
语音情感分析:结合转录文本的情感识别
创新场景:将语音转录与情感分析相结合,实现从语音中提取情感信息的高级应用。这在客户服务、心理健康监测等领域有重要应用价值。
📌 语音情感分析实现:
from faster_whisper import WhisperModel
from transformers import pipeline
import numpy as np
import json
class SpeechEmotionAnalyzer:
def __init__(self, whisper_model_size="medium", compute_type="int8_float16"):
# 初始化语音转录模型
self.whisper_model = WhisperModel(whisper_model_size, compute_type=compute_type)
# 初始化情感分析模型
self.emotion_analyzer = pipeline(
"text-classification",
model="bhadresh-savani/bert-base-uncased-emotion",
return_all_scores=True
)
# 情感标签映射
self.emotion_mapping = {
"joy": "喜悦",
"sadness": "悲伤",
"anger": "愤怒",
"fear": "恐惧",
"surprise": "惊讶",
"love": "喜爱"
}
def analyze_emotion(self, text):
"""分析文本情感"""
results = self.emotion_analyzer(text)[0]
# 提取情感分数并转换为中文标签
emotion_scores = {
self.emotion_mapping[item["label"]]: item["score"]
for item in results
}
# 找到主导情感
dominant_emotion = max(emotion_scores.items(), key=lambda x: x[1])[0]
return {
"text": text,
"emotion_scores": emotion_scores,
"dominant_emotion": dominant_emotion
}
def process_audio_emotion(self, audio_path, segment_duration=10):
"""处理音频文件,分析每个片段的情感"""
# 转录音频,获取时间戳和文本
segments, info = self.whisper_model.transcribe(
audio_path,
language="zh",
word_timestamps=False,
beam_size=5
)
# 将转录结果按指定时长分段
audio_segments = []
current_segment = {"start": 0, "end": segment_duration, "text": []}
for seg in segments:
# 如果当前片段超过指定时长,开始新片段
if seg.start > current_segment["end"]:
if current_segment["text"]:
current_segment["text"] = " ".join(current_segment["text"])
audio_segments.append(current_segment)
current_segment = {
"start": current_segment["end"],
"end": current_segment["end"] + segment_duration,
"text": [seg.text]
}
else:
current_segment["text"].append(seg.text)
# 添加最后一个片段
if current_segment["text"]:
current_segment["text"] = " ".join(current_segment["text"])
audio_segments.append(current_segment)
# 分析每个片段的情感
for segment in audio_segments:
emotion_result = self.analyze_emotion(segment["text"])
segment.update(emotion_result)
return {
"language": info.language,
"segments": audio_segments,
"overall_emotion": self._get_overall_emotion(audio_segments)
}
def _get_overall_emotion(self, segments):
"""计算整体情感倾向"""
emotion_scores = {emotion: 0 for emotion in self.emotion_mapping.values()}
total_duration = sum(seg["end"] - seg["start"] for seg in segments)
for seg in segments:
duration = seg["end"] - seg["start"]
weight = duration / total_duration
for emotion, score in seg["emotion_scores"].items():
emotion_scores[emotion] += score * weight
return max(emotion_scores.items(), key=lambda x: x[1])[0]
def save_analysis_result(self, result, output_path):
"""保存情感分析结果到JSON文件"""
with open(output_path, "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=2)
# 使用示例
if __name__ == "__main__":
analyzer = SpeechEmotionAnalyzer()
result = analyzer.process_audio_emotion("customer_service_call.wav", segment_duration=15)
analyzer.save_analysis_result(result, "emotion_analysis_result.json")
print(f"整体情感倾向: {result['overall_emotion']}")
print("详细片段情感分析:")
for i, seg in enumerate(result["segments"]):
print(f"片段 {i+1} ({seg['start']:.1f}s-{seg['end']:.1f}s): {seg['dominant_emotion']}")
print(f" 文本: {seg['text'][:50]}...")
技术小结:语音情感分析通过结合语音转录和文本情感识别,为语音内容分析提供了新的维度。这种技术可广泛应用于客户服务质量监控、心理健康评估等领域。
优化策略:释放Faster-Whisper全部性能
硬件优化:充分利用计算资源
针对不同硬件环境优化Faster-Whisper配置,可以显著提升性能。以下是针对各种硬件场景的优化策略。
CPU优化:
- 设置适当的线程数:通常设置为CPU核心数或核心数的1.5倍
- 使用int8量化减少内存带宽需求
- 启用CPU缓存优化
# 设置最佳线程数(Linux/Mac)
export OMP_NUM_THREADS=8
python your_script.py
GPU优化:
- 选择合适的计算类型(float16或int8_float16)
- 调整批处理大小以充分利用GPU内存
- 启用GPU内存池减少内存分配开销
# GPU优化配置示例
model = WhisperModel(
"large-v3",
device="cuda",
compute_type="float16",
device_index=0, # 指定GPU设备
cpu_threads=4 # 为CPU预处理指定线程数
)
硬件性能对比:
| 硬件配置 | 模型 | 计算类型 | 速度(实时倍数) | 内存占用 |
|---|---|---|---|---|
| i7-10700F | base | int8 | 5.2x | 1.2GB |
| i7-10700F | medium | int8 | 2.1x | 2.8GB |
| RTX 3060 | base | float16 | 18.5x | 2.1GB |
| RTX 3060 | large-v3 | float16 | 6.8x | 8.3GB |
| RTX 4090 | large-v3 | float16 | 15.3x | 8.3GB |
技术小结:硬件优化是提升Faster-Whisper性能的基础,通过合理配置线程数、计算类型和设备参数,可以充分发挥不同硬件平台的潜力。
参数调优:平衡速度与精度的艺术
Faster-Whisper提供了多种参数可以调整,以在速度和精度之间取得最佳平衡。
核心参数优化指南:
📌 beam_size(束搜索大小):
- 较小值(2-5):速度快,适合实时场景
- 较大值(10-15):精度高,适合离线转录
- 默认值5提供了较好的平衡
📌 temperature(温度参数):
- 0:确定性输出,无随机性
- 0.5-0.7:平衡随机性和稳定性
-
1.0:增加输出多样性,但可能降低准确性
📌 vad_filter(语音活动检测):
- 启用(True):过滤静音,减少处理时间
- 禁用(False):保留所有音频内容
- 可通过vad_parameters调整灵敏度
参数组合优化示例:
# 快速模式(优先速度)
fast_transcribe_params = {
"beam_size": 3,
"temperature": 0,
"vad_filter": True,
"vad_parameters": {"threshold": 0.6},
"condition_on_previous_text": False
}
# 高精度模式(优先质量)
high_accuracy_params = {
"beam_size": 12,
"temperature": 0.7,
"temperature_increment_on_fallback": 0.2,
"vad_filter": True,
"vad_parameters": {"threshold": 0.4},
"condition_on_previous_text": True,
"word_timestamps": True
}
# 根据场景选择参数
def transcribe_with_strategy(audio_path, strategy="balanced"):
strategies = {
"fast": fast_transcribe_params,
"accurate": high_accuracy_params,
"balanced": {
"beam_size": 5,
"temperature": 0.5,
"vad_filter": True
}
}
params = strategies.get(strategy, strategies["balanced"])
model = WhisperModel("medium", compute_type="int8_float16")
return model.transcribe(audio_path, **params)
技术小结:参数调优需要根据具体应用场景进行,通过调整beam_size、temperature和VAD参数等,可以在速度和精度之间取得最佳平衡。
常见误区解析:避开性能与精度陷阱
在使用Faster-Whisper时,开发者常陷入一些误区,影响系统性能或识别质量。
误区一:盲目追求大模型
- 问题:认为模型越大识别效果越好,无论应用场景如何都选择large-v3模型
- 分析:大模型需要更多计算资源,在资源受限环境会导致性能严重下降
- 解决方案:根据实际需求选择模型,实时场景优先考虑base或small模型
误区二:忽略计算类型选择
- 问题:不根据硬件条件选择合适的计算类型,统一使用float16
- 分析:CPU上使用float16会导致性能下降,GPU上使用int8可能影响精度
- 解决方案:CPU环境选择int8,GPU环境选择float16,中端设备考虑int8_float16
误区三:过度依赖自动语言检测
- 问题:总是依赖模型自动检测语言,不提供语言提示
- 分析:自动语言检测增加处理时间,且在低质量音频上准确率下降
- 解决方案:已知语言时显式指定language参数,提高速度和准确性
误区四:忽视VAD参数调整
- 问题:使用默认VAD参数处理所有类型音频
- 分析:不同环境下的音频需要不同的VAD阈值和静音时长设置
- 解决方案:根据环境噪音水平调整vad_parameters
💡 最佳实践:在项目初期进行参数测试,建立性能基准,然后针对特定场景优化关键参数,而非盲目调整多个参数。
技术小结:避免常见误区可以显著提升Faster-Whisper的实际应用效果,通过科学选择模型、计算类型和转录参数,可以在资源消耗和识别质量之间取得最佳平衡。
技术总结
Faster-Whisper作为高效的语音识别解决方案,通过CTranslate2引擎和模型优化技术,实现了比原版Whisper更高的性能和更低的资源消耗。本文从技术原理、实践指南、进阶应用和优化策略四个维度,全面介绍了Faster-Whisper的核心技术和应用方法。
通过合理的模型选择、参数配置和硬件优化,开发者可以构建从实时语音转写到多语言识别,再到语音情感分析的多种应用。无论是构建实时交互系统,还是处理大规模音频数据,Faster-Whisper都能提供高效可靠的技术支持。
未来,随着模型优化技术的不断进步,Faster-Whisper有望在保持高精度的同时进一步提升性能,为语音识别应用开辟更广阔的可能性。掌握本文介绍的技术方法,将帮助开发者充分发挥Faster-Whisper的潜力,构建高效、准确的语音识别系统。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
FreeSql功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+、Xamarin 以及 AOT。C#00