【多模态大模型】GLM-4-Voice端到端语音交互机器人VoiceAI
写在前面:开源选手中最能打的
GLM-4-Voice,由智谱 AI 和清华大学共同研发,并发表论文 “GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot”,旨在打造智能且类人化的端到端语音聊天机器人。GLM-4-Voice 不仅支持中文和英文,进行实时语音对话,还能根据用户指令调整语音的细微差别,例如情感、语调、语速和方言。
一、模型结构:端到端语音处理,融合文本能力
GLM-4-Voice 的模型架构以自回归 Transformer 为基础,并进行了精巧的改造,实现了端到端的语音处理能力。其核心目标是在保持 LLM 强大文本处理能力的同时,赋予模型理解和生成自然语音的能力。
GLM-4-Voice 的模型架构主要由以下几个核心组件构成:
- 语音 Tokenizer (Speech Tokenizer)
负责将连续的语音波形转换为离散的 语音 Token (Speech Token),保留语义信息和部分声学信息。GLM-4-Voice 采用了 监督式语音 Tokenizer,以 12.5Hz 的帧率,超低比特率 (175bps) 高效表示语音。
创新点: 超低比特率、单码本语音 Tokenizer。
实现逻辑: 微调预训练 ASR 模型 Whisper-large-v3,引入向量量化 (Vector Quantization, VQ) 瓶颈层,提取语音语义 Token。
- 语音 Decoder (Speech Decoder)
将离散的语音 Token 转换为自然流畅的 语音波形。GLM-4-Voice 采用了 基于流匹配 (Flow-Matching) 的语音 Decoder,保证语音生成质量。
创新点: 流匹配语音 Decoder,支持流式推理。
实现逻辑: 基于 CosyVoice 的 Decoder 架构,包含语音 Token Encoder、条件流匹配模型和 HiFi-GAN 声码器。
- LLM 主体 (LLM Body)
负责 语义理解、对话管理和文本生成。GLM-4-Voice 复用了 GLM-4-9B-Base 的 LLM 主体,并扩展词汇表以支持语音 Token。
创新点: 融合语音和文本处理能力,共享 LLM 主体。
实现逻辑: 基于 Transformer 的自回归语言模型,处理文本和语音 Token 序列。
模型架构图解:
音频Tokenizer和Decoder图解:
- 架构优势:
端到端语音处理: 模型直接处理语音输入和输出,无需 ASR 和 TTS 模块,降低延迟,避免错误累积。
融合文本能力: 复用 LLM 主体,继承强大的文本理解和生成能力,实现语音和文本的知识共享。
高效语音 Tokenization: 超低比特率语音 Tokenizer,高效表示语音信息,降低计算开销。
高质量语音生成: 流匹配语音 Decoder,生成自然流畅、富有表现力的语音。
二、模型预训练:海量语音-文本数据,多任务联合训练
GLM-4-Voice 的预训练目标是赋予 LLM 主体强大的语音建模能力,并建立语音和文本之间的跨模态知识桥梁。为了实现这一目标,GLM-4-Voice 采用了多阶段、大规模的联合预训练策略,利用了海量的语音-文本数据。
- 预训练数据类型:
交错式语音-文本数据 (Interleaved Speech-Text Data): 合成数据,利用文本预训练语料库,通过 文本到 Token 模型 合成语音 Token,构建 语音 Token 和文本 Token 交错排列 的数据。用于跨模态知识迁移,将文本知识迁移到语音模态。
创新点: 合成交错式语音-文本数据,低成本高效构建跨模态数据。
- 实现逻辑
利用预训练的文本到 Token 模型,将文本语料库转换为语音 Token 序列,并与原始文本 Token 交错排列。
无监督语音数据 (Unsupervised Speech Data): 真实语音数据,包含 70 万小时的语音,鼓励模型学习真实世界语音的特性。
创新点: 海量无监督语音数据,提升语音建模能力。
实现逻辑: 收集大规模语音数据,用于训练语音 Token 预测任务,提升模型对语音的理解和生成能力。
- 监督式语音-文本数据 (Supervised Speech-Text Data)
配对数据,包含 ASR (自动语音识别) 和 TTS (文本到语音) 数据,提升模型在基本语音任务上的能力。
创新点: 监督式语音-文本数据,提升 ASR 和 TTS 基础能力。
实现逻辑: 利用 ASR 数据训练语音到文本的映射,利用 TTS 数据训练文本到语音的映射,提升模型跨模态转换能力。
文本预训练数据 (Text Pre-training Data): 纯文本数据,用于保持模型的文本处理能力。
创新点: 混合文本预训练数据,保持 LLM 文本能力。
实现逻辑: 混合少量文本预训练数据,防止模型在语音预训练过程中遗忘文本知识。
- 预训练阶段划分:
Stage 1: 大规模语音-文本联合预训练 (Large-scale Speech-Text Pre-training): 利用上述四种数据,进行 混合训练,目标是扩展 LLM 的语音建模能力。
训练数据比例: 30% 文本数据,剩余为语音相关数据 (交错式语音-文本数据为主)。
训练时长: 1 万亿 Token。
训练目标: Next Token Prediction (预测下一个 Token)。
Stage 2: 监督式微调 (Supervised Fine-tuning): 利用高质量的 对话式语音数据,采用 Streaming Thoughts 模板 进行微调,提升聊天机器人的对话能力和语音质量。
训练数据: 高质量对话式语音数据,包括多轮对话和语音风格控制数据。
训练时长: 20 个 epoch (语音输出),4 个 epoch (文本输出)。
训练目标: 最大化对话质量和语音自然度。
预训练流程图解(两阶段):
- 预训练优势:
海量数据驱动: 1 万亿 Token 预训练,充分利用大规模语音-文本数据,提升模型性能。
多任务联合训练: 融合多种预训练任务,全面提升模型语音和文本能力,实现跨模态知识融合。
分阶段训练: 两阶段训练策略,先扩展语音建模能力,再提升对话质量和语音风格控制能力,循序渐进,高效训练。
三、后训练:Streaming Thoughts 模板,提升对话流畅性
GLM-4-Voice 的后训练 (Stage 2) 专注于提升聊天机器人的对话能力和语音质量。为了实现低延迟、高质量的语音对话,GLM-4-Voice 提出了 Streaming Thoughts (流式思考) 模板。
1 Streaming Thoughts 模板的核心思想:
解耦语音-文本任务: 将语音到语音任务解耦为语音到文本和文本到语音两个子任务。
交替输出文本和语音 Token: 在生成 response 时,模型交替输出文本 Token 和语音 Token,实现文本指导语音生成,提升语音连贯性。
降低初始延迟: 模型无需等待完整文本生成完毕,即可开始生成语音,降低用户感知延迟。
2 Streaming Thoughts 模板工作流程:
用户语音输入 (Qs): 用户通过语音输入 Query。
模型交替输出 (GLM-4-Voice): 模型以 1:2 的比例 交替输出 文本 Token 和语音 Token。
先输出 13 个文本 Token (At 部分)。
再输出 26 个语音 Token (As 部分)。
交替进行,直至生成完整 response。
文本和语音 Token 拼接: 将交替输出的文本 Token 拼接成 文本 response (At),语音 Token 拼接成 语音 response (As)。
语音 Decoder 合成语音: 使用语音 Decoder 将语音 Token 合成 语音波形 (Speech Decoder)。
语音输出 (Model Output): 将合成的语音波形输出给用户。
3 Streaming Thoughts优势:
低延迟: 无需等待完整文本生成,即可开始生成语音,降低用户感知延迟,实现实时对话。
高质量: 文本指导语音生成,保证语音内容与文本语义一致,提升语音连贯性和质量。
流式输出: 模型以流式方式输出文本和语音 Token,支持流式推理,进一步降低延迟。
四、推理:解耦式语音-语音任务,平衡质量与延迟
GLM-4-Voice 的推理过程采用了 解耦式语音-语音任务策略,将端到端语音聊天机器人任务分解为两个子任务:
语音到文本 (Speech-to-Text): 模型根据用户语音输入 (Qs),生成 文本 response (At)。
语音和文本到语音 (Speech-and-Text-to-Speech): 模型结合用户语音输入 (Qs) 和文本 response (At),生成 语音 response (As),并自适应调整语调和韵律,保证对话连贯性。
- 推理流程:
语音 Tokenization: 使用语音 Tokenizer 将用户语音输入 (Qs) 转换为语音 Token 序列。
LLM 推理 (Speech-to-Text): 将语音 Token 序列输入 LLM,模型生成 文本 response (At)。
LLM 推理 (Speech-and-Text-to-Speech): 将用户语音 Token 序列 (Qs) 和文本 response (At) 拼接 后输入 LLM,模型生成 语音 response (As) 的语音 Token 序列。
语音 Decoding: 使用语音 Decoder 将语音 Token 序列转换为 语音波形 (As)。
语音输出: 将合成的语音波形输出给用户。
- 推理策略优势:
提升语音质量: 文本 response (At) 指导语音 response (As) 生成,保证语音内容准确性和连贯性。
自适应语音风格: 模型根据用户语音输入和文本 response,自适应调整语音语调和韵律,提升对话自然度。
平衡质量与延迟: 解耦式推理策略,在保证语音质量的同时,也为 Streaming Thoughts 模板的低延迟输出创造了条件。
- 延迟优化:
GLM-4-Voice 在推理延迟方面进行了精细优化,主要包括:
流式语音 Tokenizer: 语音 Tokenizer 采用流式设计,边接收语音输入,边进行 Tokenization,降低 Tokenization 延迟。
Streaming Thoughts 模板: 模型交替输出文本和语音 Token,无需等待完整文本生成,降低 LLM 解码延迟。
语音 Decoder 流式推理: 语音 Decoder 支持流式推理,边接收语音 Token,边合成语音波形,降低语音合成延迟。
延迟计算公式:
论文中给出了 GLM-4-Voice 整体 response 延迟的计算公式,详细分析了各个环节的延迟占比,并验证了 Streaming Thoughts 模板在降低延迟方面的有效性。
五、实验评估:
多项语音-文本任务,超越 SOTA 基线
GLM-4-Voice 在多项语音-文本任务上进行了全面的实验评估,证明了其卓越的性能和类人化的语音交互能力。
评估任务:
语音语言建模 (Speech Language Modeling): 评估模型对交错式语音-文本数据的建模能力。
数据集: Spoken StoryCloze 和 Spoken Topic-StoryCloze。
评估指标: 准确率 (Accuracy)。
结果: GLM-4-Voice 在 S→T 和 S→S 两种设置下,均超越 SOTA 基线模型,展现出强大的语音语言建模能力。
语音问答 (Spoken Question Answering): 评估模型在语音理解和知识问答方面的能力。
数据集: Web Questions, Llama Questions 和 TriviaQA。
评估指标: 准确率 (Accuracy)。
结果: GLM-4-Voice 在 S→T 和 S→S 两种设置下,均大幅超越 SOTA 基线模型,特别是在 Llama Questions 数据集上,S→T 设置下准确率达到 64.7%,S→S 设置下达到 50.7%,显著优于其他模型。
ASR 和 TTS (语音识别和语音合成): 评估模型在语音识别和语音合成方面的基础能力。
数据集: LibriSpeech (英语) 和 AISHELL-1 (中文) (ASR),LibriTTS 和 Seed-TTS (TTS)。
评估指标: 词错误率 (WER) / 字错误率 (CER) (ASR),词错误率 (WER) (TTS)。
结果: GLM-4-Voice 在 ASR 和 TTS 任务上,与 Whisper-large-v3 和 CosyVoice 等 SOTA 基线模型性能相当,表明模型在语音和文本模态上都具备强大的基础能力。
聊天模型评估 (Chat Model Evaluation): 评估聊天机器人的对话质量和类人化程度。
评估数据集: Llama-Omni 的聊天评估数据集。
评估指标: ChatGPT 评分 (GPT-4o 评估,1-10 分),UTMOS (语音自然度),ASR-WER (语音-文本对齐度)。
结果: GLM-4-Voice 在 ChatGPT 评分和 UTMOS 指标上均显著优于其他基线模型,ASR-WER 指标也达到 SOTA 水平,表明 GLM-4-Voice 在对话质量、语音自然度和语音-文本对齐度方面均表现出色,证明了其类人化的语音交互能力。
实验结果总结:
GLM-4-Voice 在多项语音-文本任务上均取得了 SOTA 或接近 SOTA 的性能,全面超越现有基线模型,证明了其模型架构、预训练和后训练策略的有效性。特别是聊天模型评估结果,突显了 GLM-4-Voice 在智能性和类人化语音交互方面的优势。
六、小结:语音交互
GLM-4-Voice 的成功发布,标志着端到端语音聊天机器人技术迈出了重要一步。它有效地融合了 LLM 的强大文本能力和语音处理能力,实现了智能、自然、低延迟的语音交互体验。
GLM-4-Voice 的主要贡献:
端到端语音聊天机器人架构: 提出了一种基于 Transformer 的端到端语音聊天机器人架构,无需 ASR 和 TTS 模块,降低延迟,避免错误累积。
超低比特率语音 Tokenizer: 设计了超低比特率、单码本语音 Tokenizer,高效表示语音信息,降低计算开销。
Streaming Thoughts 模板: 提出了 Streaming Thoughts 模板,实现文本指导语音生成,提升对话流畅性和降低延迟。
大规模语音-文本联合预训练: 探索了大规模语音-文本联合预训练策略,有效提升模型语音建模能力和跨模态知识融合能力。
卓越的性能: 在多项语音-文本任务上取得 SOTA 或接近 SOTA 的性能,展现出强大的语音交互能力。
相关文章:
【多模态大模型】GLM-4-Voice端到端语音交互机器人VoiceAI
写在前面:开源选手中最能打的 GLM-4-Voice,由智谱 AI 和清华大学共同研发,并发表论文 “GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot”,旨在打造智能且类人化的端到端语音聊天机器人。GLM-4-Voi…...
Unity 列表滚动到指定位置
使用场景 策划提出需求:当玩家打开领奖界面时,奖励列表需要自动滑动到可以领奖的奖励栏处或者正在进行的任务栏处。 思路 1、将Content设置好对齐方式和锚点 子物体的预制体和Content:pivot轴心点设置为(0,1),并且设置为左上角对齐。 2、主…...
使用Crawlee可破题js渲染采集数据
使用 Crawlee 实现自动化爬虫流程 1. Crawlee 简介 Crawlee 是一个强大的爬虫框架,用于快速构建和维护可靠的爬虫。它支持多种爬虫类型,包括基于 Cheerio 和 Playwright 的爬虫,能够高效处理静态和动态网页。 2. 项目目标 通过自动化脚本实…...
小红的字母游戏(A组)
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 小红有一个长度为 nnn 的字符串 sss,仅包含小写字母,小红可以选出 kkk 个字符,组成一个新的字符串 ttt,对于 ttt 的每一个字符 tit_it…...
MFC线程
创建线程 HANDLE m_hThread; m_hThread CreateThread(NULL, 0, save_snapshot, (LPVOID)this, 0, &iThreadId);开启线程循环等待 DWORD WINAPI save_snapshot(LPVOID pVoid) {while (true){//持续循环等待事件到达。接收到事件信号后才进入if。if (::WaitForSingleObjec…...
目标检测YOLO实战应用案例100讲-面向无人机图像的小目标检测
目录 知识储备 YOLO v8无人机拍摄视角小目标检测 数据集结构 环境部署说明 安装依赖 模型训练权重和指标可视化展示 训练 YOLOv8 PyQt5 GUI 开发 主窗口代码 main_window.py 使用说明 无人机目标跟踪 一、目标跟踪的基本原理 二、常用的目标跟踪算法 基于YOLOv…...
【Java分布式】Nacos注册中心
Nacos注册中心 SpringCloudAlibaba 也推出了一个名为 Nacos 的注册中心,相比 Eureka 功能更加丰富,在国内受欢迎程度较高。 官网:https://nacos.io/zh-cn/ 集群 Nacos就将同一机房内的实例划分为一个集群,一个服务可以包含多个集…...
VSCode轻松调试运行.Net 8.0 Web API项目
1.背景 我一直都是用VS来开发.NetCore项目的,用的比较顺手,也习惯了。看其他技术文章有介绍VS Code更轻量,更方便。所以我专门花时间来使用VS Code,看看它是如何调试代码、如何运行.Net 8.0 WebAPI项目。这篇文章是一个记录的过程…...
PageHelper新发现
PageHelper 背景解决reasonablepageSizeZero 背景 今天发现了一个很有趣的现象,接手一个很老的项目springmvc项目、使用PageHelper分页实现常见的后端接口分页功能。但是发现当页码参数大于实际的页码数时、正常不应该返回数据,但是目前确一直返回数据不…...
python编写liunx服务器登陆自动巡检脚本
前言: 用户需要一份用Python编写的Linux系统巡检脚本,检查内存、磁盘、CPU使用率,还有网络连通性。 首先,我得确定用户的使用场景。可能用户是系统管理员,需要定期监控服务器状态,确保系统正常运行。 或者…...
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
本教程的演示都将在 Flink CDC CLI 中进行,无需一行 Java/Scala 代码,也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业,包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...
数据结构——并查集
AcWing - 算法基础课 Acwing——合并集合 代码如下: #include <bits/stdc.h>using namespace std; #define fs first #define sc second #define endl \n #define all(x) x.begin(), x.end() typedef long long ll; typedef pair<int, int> PII;cons…...
详细解析d3dx9_27.dll丢失怎么办?如何快速修复d3dx9_27.dll
运行程序时提示“d3dx9_27.dll文件缺失”,通常由DirectX组件损坏或文件丢失引起。此问题可通过系统化修复方法解决,无需重装系统或软件。下文将详细说明具体步骤及注意事项。 一.d3dx9_27.dll缺失问题的本质解析 当系统提示“d3dx9_27.dll丢失”时&…...
【STL】4.<list>
list 前言list容器一.list初始化二.常用函数三.排序 总结 前言 stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。 list容器 要使用…...
小程序中头像昵称填写
官方文档 参考小程序用户头像昵称获取规则调整公告 新的小程序版本不能通过wx.getUserProfile和wx.getUserInfo获取用户信息 <van-field label"{{Avatar}}" label-class"field-label" right-icon-class"field-right-icon-class"input-class&…...
vLLM服务设置开机自启动(Linux)
要在开机时进入指定的 conda 环境并启动此 vllm 服务,您可以通过以下步骤设置一个 systemd 服务来自动执行脚本。 一、第一步:创建一个启动脚本 1.打开终端并创建启动脚本,例如 /home/username/start_vllm.sh(请替换 username 为…...
Cherno 游戏引擎笔记(91~111)
好久不见! 个人库的地址:(GitHub - JJJJJJJustin/Nut: The game_engine which learned from Cherno),可以看到我及时更新的结果。 -------------------------------Saving & Loading scene-----------------------…...
面试八股文--数据库基础知识总结(1)
1、数据库的定义 数据库(DataBase,DB)简单来说就是数据的集合数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。数据库系统…...
算法系列之动态规划
动态规划(Dynamic Programming,简称DP)是一种用于解决复杂问题的算法设计技术。它通过将问题分解为更小的子问题,并存储这些子问题的解来避免重复计算,从而提高算法的效率。本文将介绍动态规划的基本概念、适用场景、复…...
网站漏洞安全测试 具体渗透思路分析
渗透测试这些是经常谈到的问题了,我觉得当有了渗透接口测试之后你就会发现渗透测试这一方面也就是:1.基本漏洞测试;2.携带"低调"构思的心血来潮;3.锲而不舍的信念。我们在对网站,APP进行渗透测试的过程中会发…...
Spring Boot(七):Swagger 接口文档
1. Swagger 简介 1.1 Swagger 是什么? Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…...
【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】
文章目录 前言电脑配置:安装的Deepseek版本:使用的UI框架:体验效果展示:本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…...
测试的BUG分析
在了解BUG之前,我们要先了解软件测试的生命周期,因为大多数BUG都是在软件测试的过程中被发现的 软件测试的生命周期 在了解 软件测试的生命周期 之前,我们要先了解 软件的生命周期 ,虽然他们之间只差了两个字,但是差距还是很大的 首先是 软件生命周期 ,这个是站在 软件 的角…...
linux里面的过滤符号 | 是如何实现的
ls -l | grep ".txt" 的实现过程涉及无名管道的创建、进程的创建(fork())以及输入输出的重定向(dup2())。以下是详细的实现步骤和代码示例: 实现步骤 创建无名管道: 使用pipe()系统调用创建一个无…...
结构型模式--组合模式
概念 组合人模式是结构型设计模式的一种,主要是用于解决代码中出现类像树一样进行组合而出现的组合结构的相关操作问题。使其树中的任意一个节点(无论是子节点还是父节点)都可以使用同一套接口进行操作。 使用场景 1、如果希望我们对象组合…...
drupal可以自动将测试环境的网页部署到生产环境吗
在 Drupal 中,自动将测试环境的网页部署到生产环境通常是通过设置合适的开发和部署流程来实现的。这种自动化部署过程通常涉及以下几个步骤: 1. 版本控制(Git) 为了保证测试环境和生产环境的一致性,首先需要使用 Git…...
Android应用app实现AI电话机器人接打电话
Android应用app实现AI电话机器人接打电话 --安卓AI电话机器人 一、前言 【Dialer3.0智能拨号器】Android版手机app,由于采用蓝牙电话的方式来调用手机SIM卡发起呼叫、接听来电,并接收和处理通话的声音,通常我们以“蓝牙电话方案”来称呼它。 …...
【面试宝典】Java中创建线程池的几种方式以及区别
强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能 创建线程池有多种方式,主要通过 Java 的 java.util.concurrent 包提供的 Executors 工具类来实现。以下是几…...
【数据结构】哈希表
目录 哈希表 基本思想 基本原理 哈希表工作机制简化描述 关于查找、插入和删除 HashMap 主要成员变量 主要方法 内部实现细节 注意事项 哈希表 哈希表是一种基于哈希函数的数据结构,它通过键值对的形式存储数据,并允许通过键快速查找对应的值…...
MySQL 使用 `WHERE` 子句时 `COUNT(*)`、`COUNT(1)` 和 `COUNT(column)` 的区别解析
文章目录 1. COUNT() 函数的基本作用2. COUNT(*)、COUNT(1) 和 COUNT(column) 的详细对比2.1 COUNT(*) —— 统计所有符合条件的行2.2 COUNT(1) —— 统计所有符合条件的行2.3 COUNT(column) —— 统计某一列非 NULL 的记录数 3. 性能对比3.1 EXPLAIN 分析 4. 哪种方式更好&…...
RabbitMQ系列(一)架构解析
RabbitMQ 架构解析 RabbitMQ 是一个基于 AMQP 协议的开源消息中间件,其核心架构通过多组件协作实现高效、可靠的消息传递。以下是其核心组件与协作流程的详细说明: 一、核心组件与功能 Broker(消息代理服务器) RabbitMQ 服务端核…...
如何让传统制造企业从0到1实现数字化突破?
随着全球制造业不断向智能化、数字化转型,传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新,更是管理、文化、业务流程等全方位的变革。从零开始,如何带领一家传统制造企业走向数字化突破,是许多企业领导者面…...
基于Spring Boot的二手物品交易平台设计与实现(LW+源码)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
释放 Cursor 的全部潜能:快速生成智能 Cursor Rules
释放 Cursor 的全部潜能:使用 PromptCoder 从 package.json 快速生成智能 Cursor Rules 我们将深入探讨如何利用您项目中的 package.json 文件,轻松生成 Cursor Rules,并通过 PromptCoder 这个强大的工具,快速创建高质量的 curso…...
C#高级:结合Linq的SelectMany方法实现笛卡尔积效果
一、笛卡尔积定义 又称直积,表示为X Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 二、基础示例 class Program {static void Main(string[] args){try{List<List<string>> input new List<List<string&g…...
【洛谷入门赛】B4018 游戏与共同语言
题意 这里有两个队伍分别叫 A 和 B。 分别给定这两个队伍的胜利数、净胜局、平局数量。 求哪个队更厉害,就输出哪个。 具体比较规则如下: 两队中胜利数高的队伍更厉害。 若胜利数相同,净胜数高的队伍更厉害。 若净胜数仍然相同&#x…...
Python学习总结
客户端与服务端聊天窗口 服务端 导入 wxPython 用于创建图形界面。 socket 用于网络通信,AF_INET 是 IPv4 地址族,SOCK_STREAM 表示流式套接字(TCP)。 利用wxPython 创建图形界面,并通过 socket 与服务器通信。 主要…...
android系统_模拟ZygoteServer写一个socket通信
目录 一,模拟ZygoteServer 二,Client 代表app 三,输出结果 四,结束语 一,模拟ZygoteServer ZygoteServer,不断的监听来自客户端的请求 package org.study.tiger;import java.io.*; import java.net.*; import java.util.concurrent.*;import java.io.*; impor…...
LangChain教程 - RAG - PDF问答
系列文章索引 LangChain教程 - 系列文章 在现代自然语言处理(NLP)中,基于文档内容的问答系统变得愈发重要,尤其是当我们需要从大量文档中提取信息时。通过结合文档检索和生成模型(如RAG,Retrieval-Augment…...
李代数(Lie Algebras)与Attention:深度学习中的数学之美
李代数与Attention:深度学习中的数学之美 引言 作为一名深度学习研究者,您一定对Transformer模型和其中的注意力机制(Attention)不陌生。Attention通过查询(Query)、键(Key)和值&a…...
docker本地镜像源搭建
最近Deepseek大火后,接到任务就是帮客户装Dify,每次都头大,因为docker源不能用,实在没办法,只好自己搭要给本地源。话不多说具体如下: 1、更改docker的配置文件,添加自己的私库地址,…...
监督学习单模型—线性模型—LASSO回归、Ridge回归
目标变量通常有很多影响因素,通过各类影响因素构建对目标变量的回归模型,能够实现对目标的预测。但根据稀疏性的假设,即使影响一个变量的因素有很多,其关键因素永远只会是少数。在这种情况下,还用传统的线性回归方法来…...
StableDiffusion打包 项目迁移 项目分发 1
文章目录 SD项目迁移前置知识webui-user.batwebui.batlaunch_utils.py 下一篇开始实践 SD项目迁移 显卡驱动更新:https://www.nvidia.cn/geforce/drivers/ 下载安装三个程序: python3.10.6: https://www.python.org/downloads/release/python-3106/gi…...
【C++】模板初阶
文章目录 一. 泛型编程1.1 什么是模板1.2 为什么要使用模板 二. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.4.1 隐式实例化2.4.2 显式实例化 2.5 模板参数的匹配原则 三. 类模板3.1 类模板的定义格式3.2 类模板的实例化3.3 在类模板外…...
STM32学习【4】ARM汇编(够用)
目录 ARM汇编语言基础写在前面 1. ARM汇编的分类2. 关于指令集指令集切换Thumb2指令集统一汇编语言(UAL)常用汇编指令 3. 汇编格式立即数与伪指令 4. 操作内存的汇编指令LDR:从内存加载数据到CPU寄存器STR:将数据从寄存器存储到内…...
傅里叶分析
傅里叶分析之掐死教程(完整版)更新于2014.06.06 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复…...
Jmeter插件下载及安装
1、在Jmeter官网(Install :: JMeter-Plugins.org)下载所需插件 2、将下载的插件复制到jmeter文件下的lib/ext文件里(PS:D:\Jmeter\apache-jmeter-5.6.2\lib\ext) 3、打开Jmeter,选择 选项----Plugins Manag…...
Docker迁移/var/lib/docker之后镜像容器丢失问题
迁移/var/lib/docker时,如果目标目录少写一个/,/etc/docker/daemon.json中的data-root后面需要多加一级目录docker。 若迁移命令如下 rsync -avz /var/lib/docker /home/docker/ 在/etc/docker/daemon.json中添加如下内容 "data-root": &q…...
【C++】深入理解List:双向链表的应用
凭时间赢来的东西,时间肯定会为之作证。 前言 这是我自己学习C的第七篇博客总结。后期我会继续把C学习笔记开源至博客上。 上一期笔记是关于C的vector类知识,没看的同学可以过去看看:【C】探索Vector:灵活的数据存储解决方案-CS…...
如何使用 Ollama 的 API 来生成文本
如何使用 Ollama 的 API 来生成文本 简介 生成文本 生成文本的示例 加载模型 卸载模型 简介 Ollama 提供了一个 RESTful API,允许开发者通过 HTTP 请求与 Ollama 服务进行交互。这个 API 覆盖了所有 Ollama 的核心功能,包括模型管理、运行和监控。本…...