Stream-Omni:多模态交互的视觉、语音、文本融合
Stream-Omni 是由中国科学院计算技术研究所推出的多模态大模型,支持文本、图像和语音的交互。基于 LLM 骨干架构,通过序列拼接和 CTC 映射实现模态对齐。具备高效训练能力,仅需少量全模态数据。在视觉理解、语音交互及视觉引导语音任务上表现优异,适用于智能车载、教育、家居、医疗及客服场景。提供 Python 环境下的模型下载与部署指南。

Stream-Omni 是由中国科学院计算技术研究所推出的多模态大模型,支持文本、图像和语音的交互。基于 LLM 骨干架构,通过序列拼接和 CTC 映射实现模态对齐。具备高效训练能力,仅需少量全模态数据。在视觉理解、语音交互及视觉引导语音任务上表现优异,适用于智能车载、教育、家居、医疗及客服场景。提供 Python 环境下的模型下载与部署指南。

随着人工智能技术的飞速发展,多模态大模型(Multimodal Large Models, LMMs)逐渐成为研究和应用的热点。
Stream-Omni 是中国科学院计算技术研究所、中国科学院人工智能安全重点实验室及中国科学院大学联合推出的类似 GPT-4o 的大型语言 - 视觉 - 语音模型,能够同时支持文本、图像和语音等多种模态的交互。该模型不仅在视觉理解、语音交互和视觉引导的语音交互任务上表现出色,还通过高效的模态对齐机制,实现了在少量全模态数据(如 23000 小时语音数据)下的高效训练,为用户提供更丰富的多模态交互体验。
Stream-Omni 的核心优势在于其灵活的交互模式和高效的训练策略,使其在智能车载系统、教育辅助工具、智能家居控制、医疗辅助诊断和智能客服服务等多个领域具有广泛的应用前景。

Stream-Omni 是一个基于大型语言模型(LLM)的多模态交互模型,能够同时处理文本、图像和语音三种模态的输入,并生成相应的文本和语音输出。该模型通过序列维度拼接和层维度映射的方式,实现了视觉与文本的对齐,以及语音与文本的对齐,从而在视觉理解、语音交互和视觉引导的语音交互任务上表现出色。Stream-Omni 的训练仅需少量全模态数据,训练效率高,适合在资源有限的环境中部署。
Stream-Omni 的核心是基于大型语言模型(LLM)的骨干架构。LLM 作为模型的核心,提供了强大的语言理解和生成能力,为多模态交互提供了基础支持。通过将 LLM 与视觉和语音模态进行对齐,Stream-Omni 实现了跨模态的交互能力。
为了实现视觉与文本的对齐,Stream-Omni 使用序列维度拼接的方式,将视觉编码器提取的视觉特征与文本输入进行拼接,再共同输入到 LLM 中,实现视觉和文本模态的对齐。这种方式使得模型能够更好地理解图像内容,并生成与之相关的文本信息。
对于语音与文本的对齐,Stream-Omni 引入了基于 CTC(Connectionist Temporal Classification)的层维度映射。在 LLM 的底部和顶部添加语音层,实现语音到文本的映射和文本到语音的生成,从而将语音模态与文本模态对齐。这种对齐方式使得模型能够在语音交互过程中实时生成语音输出,提供流畅的交互体验。
Stream-Omni 采用多任务学习策略,同时训练视觉文本、语音文本及全模态(视觉 + 文本 + 语音)的任务,让模型更好地理解和生成多模态内容。这种策略不仅提高了模型的泛化能力,还增强了其在不同任务上的适应性。
基于特殊的语音层设计和层维度映射,Stream-Omni 在生成文本的同时,实时生成对应的语音输出,实现流畅的语音交互。这种能力使得用户在语音交互过程中能够同时看到文本和听到语音,从而获得更全面的交互体验。
Stream-Omni 依赖少量多模态数据进行训练,基于精心设计的对齐机制和多任务学习,能在有限的数据上实现高效的模态对齐和交互能力。这种设计使得模型在数据稀缺的情况下仍能保持良好的性能。

Stream-Omni 支持文本、图像和语音等多种模态的输入,并能同时生成文本和语音输出。这种能力使得模型能够处理复杂的多模态交互任务,满足不同场景下的需求。
在语音交互过程中,Stream-Omni 能实时输出中间文本结果(如自动语音识别 ASR 转录和模型响应),为用户提供更丰富的交互体验。这种无缝的交互体验类似于 GPT-4o 的高级语音服务,提升了用户的交互满意度。
Stream-Omni 仅需少量全模态数据(如 23000 小时语音数据)进行训练,对数据需求量小,训练效率高。这种高效训练能力使得模型能够在资源有限的环境中快速部署和使用。
Stream-Omni 支持多种模态组合的交互,包括文本 + 视觉→文本、文本 + 视觉→语音、语音 + 视觉→文本、语音 + 视觉→语音等,满足不同场景下的交互需求。这种灵活性使得模型能够适应各种应用场景,提高其适用性。
Stream-Omni 在视觉理解任务和语音交互任务上表现出色,能准确理解和生成与视觉内容相关的文本和语音信息。这种能力使得模型在智能车载系统、教育辅助工具、智能家居控制、医疗辅助诊断和智能客服服务等多个领域具有广泛的应用前景。
在多个视觉理解基准测试中,Stream-Omni 表现出色。例如,在 VQA-v2、GQA、VizWiz、ScienceQA-IMG、TextVQA、POPE、MME、MMBench、SEED-Bench 和 LLaVA-Bench-in-the-Wild 等基准测试中,Stream-Omni 的性能接近或超越了最先进的视觉导向 LMMs,如 LLaVA、BLIP-2、InstructBLIP、Qwen-VL、SPHINX 和 mPLUG-Owl2 等。

在语音交互任务中,Stream-Omni 也表现出色。在 Llama Questions 和 Web Questions 等基准测试中,Stream-Omni 的准确率分别为 76.3% 和 65.0%,在语音到文本(S→T)和语音到语音(S→S)任务中均优于其他模型。此外,Stream-Omni 在语音识别任务中的 WER(Word Error Rate)也优于其他模型,如 Whisper、SpeechGPT、Moshi、Mini-Omni、Freeze-Omni 和 GLM-4-Voice 等。
在视觉引导的语音交互任务中,Stream-Omni 也表现出色。在 SpokenVisIT 基准测试中,Stream-Omni 的评分分别为 3.93 分(视觉 + 文本→文本)和 3.68 分(视觉 + 语音→文本),在语音生成任务中也表现出色。这种能力使得模型在真实世界中能够更好地理解和生成语音信息。
在语音 - 文本映射任务中,Stream-Omni 的表现也优于其他模型。在 LibriSpeech 基准测试中,Stream-Omni 的 WER 为 3.0%,在语音识别任务中的推理时间也优于其他模型。这种高质量的映射能力使得模型在语音交互任务中能够提供更准确的语音输出。
在智能车载系统中,司机可以通过语音指令查询路线、获取路况,系统结合视觉信息(如导航地图、路况摄像头图像)实时显示文本提示和语音反馈,提升驾驶安全性和交互效率。
在教育场景中,学生可以通过语音提问,系统依据教材视觉内容(如图表、图片)给出详细文本解释和语音回答,帮助学生更好地理解和学习知识。
作为智能家居助手,用户可以通过语音指令控制家电设备,系统结合视觉输入(如摄像头捕捉的环境信息)提供文本或语音反馈,实现更智能、便捷的家居控制。
在医疗场景中,医生可以通过语音指令查询关键信息,系统结合视觉报告(如 X 光片、CT 图像)提供详细的文本分析和语音解释,辅助医生更准确地做出诊断。
在客服领域,客服人员可以通过语音与客户交流,系统实时显示相关文本信息和视觉提示(如产品图片、操作流程图),帮助客服人员快速理解客户需求并提供准确解答,提升服务质量和效率。
1)从这里下载 Stream-Omni 模型,放入 ${STREAMOMNI_CKPT} 。 https://huggingface.co/ICTNLP/stream-omni-8b
2)从这里下载 CosyVoice(分词器 & 流模型),放入 COSYVOICE_CKPT=./CosyVoice-300M-25Hz : https://modelscope.cn/models/iic/CosyVoice-300M-25Hz/files
conda create -n streamomni python=3.10 -y
conda activate streamomni
pip install -e .
pip install flash-attn --no-build-isolation
pip install -r requirements.txt
pip install -r CosyVoice/requirements.txt
运行这些脚本以进行基于视觉的语音交互:
export CUDA_VISIBLE_DEVICES=0
export PYTHONPATH=CosyVoice/third_party/Matcha-TTS
export STREAMOMNI_CKPT=path_to_stream-omni-8b # Replace the path of cosyvoice model in run_stream_omni.py (e.g., cosyvoice = CosyVoiceModel('./CosyVoice-300M-25Hz'))
# add --load-8bit for VRAM lower than 32GB
python ./stream_omni/eval/run_stream_omni.py \
--model-path ${STREAMOMNI_CKPT} \
--image-file ./stream_omni/serve/examples/cat.jpg \
--conv-mode stream_omni_llama_3_1 \
--model-name stream-omni \
--query ./stream_omni/serve/examples/cat_color.wav
你应该得到以下输出:
ASR Outputs: What is the color of the cat
LLM Outputs: The cat is gray and black.
Speech Tokens: <Audio_2164><Audio_2247><Audio_671><Audio_246><Audio_2172><Audio_1406><Audio_119><Audio_203><Audio_2858><Audio_2099><Audio_1716><Audio_22><Audio_1736><Audio_1038><Audio_4082><Audio_1655><Audio_2409><Audio_2104><Audio_571><Audio_2255><Audio_73><Audio_760><Audio_822><Audio_701><Audio_2583><Audio_1038><Audio_2203><Audio_1185><Audio_2103><Audio_1718><Audio_2610><Audio_1883><Audio_16><Audio_792><Audio_8><Audio_8><Audio_535><Audio_67>
Speech Outputs: Audio saved at ./output_893af1597afe2551d76c37a75c813b16.wav
Stream-Omni 是一个强大的多模态交互模型,能够同时处理文本、图像和语音等多种模态的输入,并生成相应的文本和语音输出。其灵活的交互模式、高效的训练策略和广泛的应用场景,使其在智能车载系统、教育辅助工具、智能家居控制、医疗辅助诊断和智能客服服务等多个领域具有广泛的应用前景。通过本文的详细介绍,相信读者能够全面了解 Stream-Omni 的技术原理、主要功能和应用场景,并在实际项目中灵活应用。


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online