腾讯云语音识别实战:半小时会议实时字幕与纪要自动生成

会开完,一屋子人盯着白板,但会议纪要却要等到明天行政同事整理好再群发出去。这期间我们大概率忘了讨论到第三个人时他到底承诺了什么。我尝试过用手机录音,回头逐句听一遍再整理,半小时的会来回折腾两个小时,效率惨不忍睹。

后来我花了几天时间,基于腾讯云 AI 语音识别搭了一套会议小帮手,彻底把“录音转文字+自动整理纪要”的环节自动化了。整个过程踩了不少坑,从鉴权到热词配置,几乎每个环节都翻过车。但最终跑通的版本,能同步出几乎实时的字幕,会刚结束纪要就生成好,准确率在安静会议室里能到九成以上。这篇文章就是把我这一整套的方案、代码和翻车记录完整复盘一遍,给正在考虑给团队做类似工具的朋友一个参考。

1. 会议小帮手的需求分析与方案选型

1.1 先想清楚:会议助手到底要解决什么问题

很多人一听“会议小帮手”,第一反应就是“不就是给录音转个文字吗”。真上手做才发现,如果只做个录音转文字,这东西的价值会大打折扣。用户愿意每天打开这个工具,核心诉求其实有三个:一是开会时能实时看到字幕,确保自己没有走神;二是会后能直接产出一份像样的会议纪要,而不是一坨没有断句的原始文字;三是能从这堆文字里快速找到“谁负责做什么、下一步什么时候完成”这类关键信息。

所以我在正式写代码之前,花了不少时间把需求拆成了几个明确的功能边界。最底层是“语音转文字”,这是整个系统的心脏,直接决定后续所有环节的天花板;往上一层是“实时字幕”,用于会议现场播放,对延迟和稳定性要求比较高;最顶层是“会议纪要生成”,需要把转写结果做清洗、分段、提关键动作,这一层我一开始想得很复杂,后来被现实教育得学会了收敛。

1.2 为什么选腾讯云语音识别,而不是自研或离线方案

聊到技术选型,团队里有人提过用开源的语音识别引擎,说本地跑不花钱,还能保护隐私。我认真对比测试过,最终放弃了。原因很实在:中文会议场景下的识别准确率,离线开源方案和商业云服务差距相当明显。会议语言随机性高,动不动还带点英文缩写、行业术语、中英混杂,开源模型想达到同样水准,需要我自己去折腾更复杂的模型训练和参数调优,这还不算 GPU 服务器的成本。

腾讯云语音识别对我这种做业务开发的团队来说,最大优势是不用从零调模型。它提供了开箱即用的实时语音识别、录音文件识别等多种接口,只要把音频流送过去,拿回来的就是处理好的文本。配合自定义热词功能,可以把公司产品名、同事英文名这些通用模型大概率识别错误的词提前注册进去,准确率提升很实在。

还有一个考量是生态。我做的是会议场景,后续还想扩展出语音分析、关键词提取这类功能,腾讯云语音的接口体系和文本处理服务能配合起来,不需要自己再对接一套完全陌生的系统。综合考虑开发周期、效果和后期维护成本,走云 API 方案对我这个场景是投入产出比最高的选择。

1.3 整体架构与数据流设计

整个小帮手的架构看起来简单,但有几个细节决定成败。我最终确定的是:音频采集端放在笔记本或者手机旁,通过麦克风阵列取音源,这会通过推流模块把音频数据一边录制存本地,一边切片推给云端做实时识别。云端识别引擎把转写结果回传到业务后端,再由后端推送到每个与会议绑定的网页端,完成字幕实时展示。

音频流的处理,最关键的一点是“推流识别”和“录音存档”必须分离。原理上是因为实时识别接口为了降延迟会对音频做分段处理,如果你在会后想拿完整转写结果,靠拼剪实时识别的回传文本来重排,很容易产生重复和漏字;正确的做法是识别归识别,原始音频完整录下来,需要终极准确率时直接再跑一遍录音文件识别接口。

整体数据链路大致长这样:麦克风声音进入采集端之后,本地先把原始音频格式转换成 16bit 单声道的标准格式,保证兼容性;然后一个线程负责把 PCM 数据块按固定间隔推给语音服务的 WebSocket 通道,收到识别中间结果后立即合并到字幕队列;另一个线程同时将同样的数据不动声色地写入磁盘,作为备份源。用户会后点“生成纪要”,后端拿录音文件调批次识别接口,得到全文后走清洗与分段逻辑。

2. 腾讯云 ASR 核心细节与参数选型

2.1 实时识别、录音文件识别,还是流式识别

腾讯云语音识别在会议这种场景下,基本只有两类接口可选:一个是实时语音识别,另一个是录音文件识别。我第一次做的时候压根没仔细看文档,直接就调了录音文件接口,然后开会时干等着,半分多钟过去一个字都出不来,才意识到这个接口是“给整段音频文件慢慢识别”的异步方案,响应速度完全不匹配字幕场景需求。

实时语音识别走的是 WebSocket 协议,把麦克风采集到的音频切成小的数据分片,连续不断的发送给服务端,返回的结果也是逐步返回的。这里有个最容易被忽视的“中间结果”和“最终结果”的机制:语音是流式的,服务端出的是“当前这截语音正在逐渐识别”的临时文本,在检测到一次停顿或者一句话说完时,会把这句话的精修结果推送过来。开发时必须两套结果都接住,先用中间结果做流畅字幕展示,等最终结果到了再替换掉上一条临时语句。

所以我最终采用的组合是:会议现场用实时语音识别接口做字幕,会后用录音文件识别接口做精确转写。前者负责速度,后者负责质量。录音文件识别不是实时的,视频通话里几次“哦哦你说完了吗”的尴尬,就是调错接口切到录音文件模式的代价。

2.2 关键参数解读:采样率、编码、模型、热词

接口能力只是第一步,参数配错,识别效果直接打六折。第一个让我吃亏的是音频格式:实时语音识别接口接收 16kHz 或 8kHz 采样率的 PCM 音频。我本地的采集链默认是 44.1kHz 立体声,直接送过去识别接口报错,后来被迫在前置加了 audio resample 逻辑,并强制单声道化。务必要记住:会议语音轨迹没那么多高音细节,8kHz 电话音质其实对语音识别够用了,但 16kHz 对气声和尾音的分辨力明显更强,有条件就统一用 16kHz。

第二个关键参数是“引擎模型”。我记得彩排时直接用默认引擎识别,结果产品名“云阁”被它听成“云哥”,第三方的英文缩写词更是全灭。腾讯云语音服务提供了热词功能,本质上是本地词表的修正权重,偏向于把这些词从“低频词”调高到一个明显偏向的状态。把会议涉及的专业名词、产品名、人名提前做成热词表,每季度更新一次,线上字准率的提升幅度是肉眼可见的。

还有个参数容易被忽略,就是“过滤脏词”和“标点符号”。我在字幕场景里是不开标点的,因为实时的中间结果本身没有稳定边界,强行加标点反而导致输出抖动。但在纪要场景下必须开启标点,不然一整段全是空白分词。录音文件识别接口还得指定是否要做智能分段,开了之后它会自动切出语义段落,可以省掉一部分后端文本预处理,这功能建议开。

2.3 权限与安全:密钥管理、子账号、限流

腾讯云语音的调用必须走 SDK 里的 SecretId 和 SecretKey 签发签名。这里有过一个低级错误:为了图快,直接把主账号密钥写在前端 JS 代码里,结果没半天就被安全同事提醒了。云 API 密钥等同于账号的高权限钥匙,务必做到三层防护:一是用子账号密钥代替主账号,只给语音识别服务的权限;二是把密钥放到后端环境变量里,前端永远只接触后端过滤后的数据;三是在服务端做必要的限流,毕竟会议场景一不小心并发量冲上来,账单数字会让人心跳加速。

限流这一块腾讯云控制台有并发数限制配置,我把单账号的 QPS 上限设置成了一个比较保守的数值,同时在后端接口里做了一层简单的令牌桶,避免现场会议有十个人同时连着 WebSocket 时把所有并发额度打满,影响到其他业务的稳定性。

3. 从零实现:核心代码和实操步骤

3.1 环境准备与服务开通

动手写代码前,先把账号相关环境准备好。我的步骤是:先登录腾讯云控制台,在语音识别产品页开通服务;然后创建一个子用户,只授予QcloudASRFullAccess权限策略;再为这个子用户生成一对 SecretId 和 SecretKey,妥善保存到本地配置的.env文件里。

本地开发环境我用的 Python,依赖库只需要tencentcloud-sdk-python以及实时识别通道要用到的websockets。前者负责录音文件识别接口,后者让我能直接使用协议接入实时识别,避免了去封装繁琐的签名过程。

pip install tencentcloud-sdk-python websockets

接下来在项目根目录建.env文件,放入:

TENCENT_SECRET_ID=你的子用户SecretId TENCENT_SECRET_KEY=你的子用户SecretKey

从这步开始,所有代码都从.env里读取密钥,绝不再硬编码。控制台开通之后,我顺手在“资源包管理”里买了一个小额的资源包,因为会议场景的音频分钟数消耗很快,预付费比后付费便宜不少,特别是要做测试跑流量的时候。

3.2 实时识别通道的搭建

实时识别接口基于 WebSocket,官方提供了协议规范,第三方实现的 SDK 都有封装好的签名和连接过程。我建议直接用 SDK 提供的带 WebSocket 能力的客户端,省去自己算签名的麻烦。下面这段代码是我在项目中用于建立实时识别通道的核心抽象,简化掉了重连逻辑和业务回调注入,方便理解主线。

import asyncio import json import os import websockets from tencentcloud.common import credential from tencentcloud.asr.v20190614 import asr_client, models # 通过腾讯云SDK获取临时鉴权信息(此处省略细节,核心是拿到用于WebSocket连接的参数) cred = credential.Credential( os.getenv("TENCENT_SECRET_ID"), os.getenv("TENCENT_SECRET_KEY") ) client = asr_client.AsrClient(cred, "ap-guangzhou") async def realtime_asr(audio_stream_queue): # 1. 创建识别会话,拿到session_id create_req = models.CreateRecTaskRequest() # 此处补充录音文件识别所需参数,会议纪要场景用 ... # 2. 建立WebSocket连接,发送配置并循环推音频 async with websockets.connect("wss://asr.cloud.tencent.com/asr/v1/...") as ws: # 发送初始请求,配置引擎模型、采样率、热词表等 init_payload = {...} await ws.send(json.dumps(init_payload)) while True: chunk = await audio_stream_queue.get() if chunk is None: break await ws.send(bytes(chunk)) # 处理返回结果... res = json.loads(await ws.recv()) if res["final"]: # 这是某句话的最终结果 handle_final_result(res["text"]) else: # 实时临时结果,推送为正在变化的字幕 handle_tmp_result(res["text"])

代码里有个细节值得展开:零散的返回结果有个final字段,实时识别通道只靠它做“这句话说完了”的标志。很多初接触的开发者会拿所有返回都当成完整句,导致字幕一句话反复横跳,越攒越长。我实现的业务逻辑是:临时结果直接覆盖上一条字幕内容,最终结果才进入暂存区并换行展示。

这套流程的实际效果:在正常网速和一般会议室环境下,从人说到字幕出现大约不到一秒,而且整段数据包按 40 毫秒大小切分发送,服务端很流畅。如果是网络状况差的弱网环境,要加上数据缓冲和丢弃策略,反正实时字幕允许丢几个字,后续批次识别能兜底。

3.3 音频流采集切分与本地备份

采集端的核心痛点是“既要切块给实时识别,又要全量留底”。我用pyaudio采集 PCM 数据,单声道、16kHz、16bit 位深,然后按照 3200 字节一组(对应 100 毫秒音频)推给实时识别通道。这个量级是反复测试得到的:切太小,网络包数量太多,加重延迟;切太大,服务端等待首包的时间上升,首字延迟变高。100ms 是延迟和通量相对均衡的点。

备份逻辑就简单了,把同样的 PCM 流以二进制方式追加写入.pcm文件,并按固定时长切割成多个小文件。会议中途断网导致实时识别暂停时,备份文件就是会后补齐转写的底牌。

import pyaudio CHUNK = 3200 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 p = pyaudio.PyAudio() stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) while not stop_flag: data = stream.read(CHUNK) # 推送实时识别通道 asyncio.run_coroutine_threadsafe(queue.put(data), loop) # 写入备份文件 backup_file.write(data)

这里有个容易被忽略的坑:pyaudio采集的 PCM 数据如果不清除 DC 偏移,可能让 WebSocket 通道判定为静音,最终识别结果全空。我在线上遇到过好几次识别一片空白,排查半天才发现是麦克风直流偏移问题,后来在采集回调里加了一个高通滤波才稳定下来。

3.4 录音文件识别:会后精确转写与纪要生成

实时识别的结果虽然好,但受网络和算法策略影响,偶尔还是会吞字、掉词。为了做最终的会议纪要,我默认每场会议结束之后拿备份的音频,重新调一次录音文件识别接口。这个接口是异步的,提交任务后要轮询结果。

def submit_rec_task(file_url): req = models.CreateRecTaskRequest() req.EngineModelType = "16k_zh" # 或带热词的模型 req.ChannelNum = 1 req.ResTextFormat = 1 # 带词级时间戳 req.ConvertNumMode = 1 # 阿拉伯数字 req.SpeakerDiarization = 1 # 开启说话人分离 response = client.CreateRecTask(req) return response.TaskId def poll_rec_result(task_id): while True: req = models.DescribeTaskStatusRequest() req.TaskId = task_id resp = client.DescribeTaskStatus(req) if resp.Status == 2: # 识别完成 return resp.Result time.sleep(3)

识别完成后拿到的Result是一个 JSON 字符串,包含了全部文本、词级时间戳和说话人分离结果。我做纪要的第一步是把原始文本按时间轴分段,再对大段内容做逻辑压缩:去掉口头禅(“这个”“那个”“嗯”),把被动语态改写成动作责任句。这一步最难的其实是“说话人分离”的后期绑定,哪些段落是张三说的、哪些是李四说的,得先拉一下参会人名单,再分配给谁。

3.5 前端字幕和纪要导出

前端的实时字幕我用了简单的 PWA 页面,后端通过 WebSocket 把识别结果推给所有已打开的页面。临时结果和最终结果分开渲染:临时结果是一行浅灰色字,位置固定;一旦收到final结果,就把它规整地追加到正式记录区,灰色行清空。

纪要导出的格式,第一版只支持 Markdown,同事反馈说方便,但要发给客户还是得 PDF。后来我用标准模板套了一层样式,自动生成带发言人姓名、讨论主题、行动列表的 PDF 文件,内容结构固定如下:会议主题、时间、参会名单、讨论结论、行动项(责任人+截止时间)。行动项是从识别文本里用简单规则抽取的,只要句子开头以“我负责”“这个我来跟”“周四前”这类模式出现,就当做一个潜在行动项推荐出来,再由会议助手用户确认最终版本,准确率在可控范围之内。

4. 会议场景的深度适配与避坑记录

4.1 说话人分离与多人混音问题

会议场景里最影响使用体验的问题,是几个人同时开口时,识别结果会把几路声音混成一句话,谁都看不懂。腾讯云语音提供的说话人分离能力默认是开启状态,我在真实测试中发现它对“不同人依次说话”的分辨效果比较好,但如果是抢话严重、多人叠音的片段,分离准确率就会下降。

针对这种局面,我做了两个层面上的缓解:一是配置上把SpeakerDiarization打开,并在后处理中把分离出的说话人轨道与会议名册映射,这一步能让纪要阅读清晰度明显提升;二是在物理采集层面尽量避免全向麦,改用定向麦或者桌面阵列麦克风,让输入源的音频本身就带有空间方向信息。纯靠算法做“鸡尾酒会问题”级别的分离,目前并不是云服务能完全兜底的。

4.2 热词表怎么配才有效

说实话,热词表是我调试过程中见效最快的一项配置。第一版热词表我就无脑把公司官网上的产品全名、组员名字、项目代号都填进去了,结果有些词反而识别得更差。查了文档才发现,热词生效有个权重设置:默认权重是 5,但如果这个词是常见中文词汇,过高的权重反而会把周边语义带偏。比如我的产品名叫“端点星”,权重拉到 100 后,“我们讨论一下端点星”被识别成了“我们讨论一下端点星”倒是正确,但“端点”和“星”在其他语句中出现时也被强制合并了,闹出不少笑话。

后来我按“会议专用词/普通名词”分两张表:会议专用词(项目代号、模块名)权重保持 10 左右,人名和公司名保持 5 左右,效果正常多了。顺带提醒,热词表单次最多支持 200 条,每条短词优先,长句不要填进去,填了也不会按你想的那样生效。

4.3 实时字幕延迟与并发优化

曾有一版测试,我把音频切块大小改成 10 毫秒,以为越小越实时。实际上服务端需要等到足够上下文后才能给出第一个字,切得太碎反而因为网络往返次数暴增,延迟从 0.8 秒涨到了 2 秒以上。调试结论是 100 毫秒切块配合本地缓冲队列,去掉不必要的跨地域网络节点,是我目前网络环境下最稳的组合。

并发方面,实时识别 WebSocket 连接数多了之后,单条 WebSocket 连接在弱网环境会互相争抢带宽,造成字幕乱序。我的做法是把“每场会议一条连接”的设计改成“每条连接独立处理音频,多场会议并行用线程池隔离”,同时在后端给每个 WebSocket 通道开了独立的接收队列,避免一场会议的音频推流阻塞导致其他场次集体发呆。

4.4 常见问题排查速查表

调试过程中我记录了大量翻车场景,这里整理成表格,按优先级排查。

现象可能原因解决思路
鉴权报错(401)密钥配置错误;使用了主账号/子账号无权限检查 .env 是否被正确加载,子账号是否授予语音识别权限
识别返回空文本音频采集静音;采样率格式不对;DC 偏移导致静音先本地写 pcm 文件用播放器试听,再检查配置的采样率与位深
实时字幕掉字弱网下 UDP 丢包或切块过大/过小调整音频块大小为 100ms,重连时自动清空本地临时字幕缓存
热词不生效权重设置不够;词条太长权重不低于 5,长词切成核心短词重新注册
录音文件识别一直 Pending音频时长超过接口限制;调用频率超限压缩音频时长或拆段分别提交,确认没有超过 QPS
会议纪要文本口语化太重没有做号后处理,直接展示原文建议做一次“嗯啊口头禅”清洗和模式化改写,或接文本生成服务润色

4.5 成本控制与资源包策略

会议小帮手长期跑下去,主要成本来自语音服务的按分钟计费和存储备份音频的空间费用。我的实践是:开启了音频自动转写后,实时识别和录音文件识别会重复计费。为了省钱,我在会议进行中会只跑实时识别;会后提交录音文件识别时,选择“更高准确率”模式而非重新跑一遍基础模式,两者结果会互相引用,避免同一段音频交两次基础费用。

资源包按年月购买有折扣,不过用量少时没必要囤大容量包。我团队每周大概十场会议,每场约四十分钟,一个月不超过一千分钟,买一个一千分钟的轻量资源包刚好兜底。

5. 一些真心话和扩展想象力

这套系统从立项到真正稳定使用,花了大约两个星期。期间最大的体会是:语音识别只是基础能力,真正体现工程价值的全在后处理那层——怎么把逗号都标对的原文变成让人敢于直接发给老板的纪要,这才是产品能不能活下来的关键。

建议有同样想法的开发者,第一次跑通“音频流实时识别字幕”这条主线就够了,先解决“开会能看到字”的问题,再迭代准确率和摘要。不要一上来就把说话人分离、智能摘要、PDF 导出全塞进去,每一层都会带来新的调试工作量,贪多嚼不烂。

另一个值得继续扩展的方向,是把字幕与会议日历打通。比如在会议开始前自动拉取日程主题,把热词表按当天会议内容自动生成,会议结束时直接推送纪要到对应日历邀请的评论区。这个想法我目前已经做好了基本原型,整体不复杂,难点反而是业务层的权限打通,而不是语音本身。

最后说一句实践心得:云服务的能力边界一直在扩大,但“把能力落地成顺手工具”这件事永远靠的是产品设计和工程细节。你不需要是一个语音算法专家,只需要熟练调用稳定可靠的在线 API,把手里的会议场景变成一个又一个能被搜索、被复用的文本资产,这套小帮手就已经值回所有开发成本了。

相关新闻

WorkBuddy内容量产实战:从选题到多平台分发的完整工作流

WorkBuddy内容量产实战:从选题到多平台分发的完整工作流

1. 选题荒的根源不是没灵感,而是缺少一套可复用的信息输入管道做自媒体最怕的不是写不出来,而是坐在电脑前盯着空白文档,脑子里翻来覆去就那几个老话题。我见过太多人把"选题荒"归结为"灵感不够",然后拼命刷同…

2026/10/20 18:06:19 阅读更多 →
NLP落地项目避坑指南:数据清洗、模型微调、部署评估全流程解析

NLP落地项目避坑指南:数据清洗、模型微调、部署评估全流程解析

早几年我刚带项目做自然语言处理(NLP)落地的时候,总觉得最难的部分是模型选型和算法创新。真正被现实毒打之后才明白,NLP实战项目里决定成败的往往是那些看起来不起眼的环节:业务问题怎么翻译成任务、脏数据怎么清洗、…

2026/10/20 18:06:19 阅读更多 →
线上订单被定时任务误关:Redis缓存TTL事故排查复盘

线上订单被定时任务误关:Redis缓存TTL事故排查复盘

这篇实习日志是1月9日的。写这些字的时候是晚上十点半,我刚从公司出来,坐在回住处的公交车上,手机备忘录里已经码了满满一屏的草稿。今天一整天几乎没写什么新功能代码,但我觉得是实习三周以来收获最大的一天:上午独立…

2026/10/20 18:06:19 阅读更多 →

最新新闻

pandas动态时间窗口实现多周期销量统计

pandas动态时间窗口实现多周期销量统计

1. 项目概述:为什么“近X天销量统计”是业务分析的起点而非终点在某电商公司做数据支持的那两年,我每天早上八点准时打开BI看板,第一眼不是看总GMV,而是盯着“近7天销量趋势”那个小卡片——它像血压计一样,能快速判断…

2026/10/20 19:20:37 阅读更多 →
YOLOv5/v8/v10离线训练工具:免环境、全链路、一键部署

YOLOv5/v8/v10离线训练工具:免环境、全链路、一键部署

简介:这是一套面向YOLO系列目标检测初学者与工程实践者的免环境训练工具集,专为解决深度学习环境配置复杂、标注效率低、模型版本兼容难等痛点而设计。资源共14个文件,包含4个说明类txt文档(含工具原理与使用引言)、4张…

2026/10/20 19:20:37 阅读更多 →
单片机一阶低通滤波位移法实现:原理、代码与实战优化

单片机一阶低通滤波位移法实现:原理、代码与实战优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 19:20:37 阅读更多 →
ESP32S3入门不踩坑:选型对比、引脚接线到WiFi控制实战

ESP32S3入门不踩坑:选型对比、引脚接线到WiFi控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 19:20:37 阅读更多 →
芯片研发中专家系统与大模型的协同:确定性正确与辅助效率的平衡

芯片研发中专家系统与大模型的协同:确定性正确与辅助效率的平衡

芯片研发圈最近有个话题挺热:大模型这么强了,以后芯片设计会不会被重写一遍?我的判断很明确——芯片研发大概率是专家系统打底,大模型在旁边做辅助。这不是保守,是跑了多个项目之后,被现实约束反复教育出来…

2026/10/20 19:20:37 阅读更多 →
ESP32隐藏射频通路:官方手册未记载的寄存器级调试与风险

ESP32隐藏射频通路:官方手册未记载的寄存器级调试与风险

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 19:19:32 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →