做了个小工具,专门解救开会时手忙脚乱的人。
事情起因很简单:我们团队每周固定三四个会,有周会、方案评审、跨部门对齐,每个会动辄一小时。会开完了,信息基本靠记忆碎片拼凑,谁拍板了什么、谁答应跟进什么,过两天就说不清了。之前试过人工做纪要,记录的人一忙着记笔记就没法参与讨论;也试过用手机录音,但录完也从来没有回头整理过,一整段音频躺在网盘里,跟没有差不多。
后来我想明白一件事:会议记录这件事,核心价值不在“录下来”,而在“转成文字、提炼结论、拆出待办”。而这几步,现在完全可以用AI语音识别来分担。于是我用国内某云平台提供的AI语音识别能力,做了一个“会议小帮手”,把录音文件自动转成带说话人和时间戳的文本,再经过一轮后处理变成可直接分发的会议纪要。
这篇文章就是把这个项目的完整思路、选型过程、参数配置、实操步骤和踩坑记录全部摊开。如果你也是经常被会议记录困扰的团队负责人、开发或者运营,又恰好不想从头训练语音模型,那这篇应该能帮你省下不少时间。
1. 整体设计:为什么我选择云平台AI语音识别来改造会议记录
先说结论:做这个工具,真正花时间的不是写代码,而是想清楚“到底要解决什么问题”,以及“用什么方案解决性价比最高”。
1.1 会议记录的真实痛点
先看一个典型会议场景:时长大约50分钟,参与人5到8个,讨论内容包括项目进度、技术难点、资源协调、下一步计划。这类会议有几个非常具体的特点:
第一,信息密度高但结构松散。大家围绕议题聊,但经常跑题、插话、重复,关键词散落在整个对话流里,人工整理很容易遗漏。
第二,多人对话难以区分。谁说的这句话很关键,尤其是涉及责任分工的时候。没有说话人信息,转写出来就是一锅粥,没法追责也没法跟进。
第三,录音文件本身不可检索。声音是非结构化数据,你只能从头听到尾。而文字可以搜索、可以跳转、可以用工具批量处理。
第四,记录的时效性要求很高。通常会后一小时内就有人来问“刚才那个结论是啥”,等不了你整理好几天。
所以“会议小帮手”要解决的,就是把这四点一次性打掉。语音识别负责把声音转成文字,说话人分离负责区分发言者,时间戳负责定位上下文,后处理脚本负责把毛坯文本加工成纪要。这四层缺一不可。
1.2 云端识别API与本地模型方案对比
你可能第一反应是:开源的语音识别模型不是也有吗?确实有,而且效果不错。我自己也在本地部署过开源语音识别模型,但那是在有GPU的开发机上,而我和同事的日常工作设备并不满足这个条件。
把方案摊开比较一下就清楚了:
| 对比维度 | 云平台AI语音识别API | 本地部署开源语音模型 |
|---|---|---|
| 硬件投入 | 无,按量付费 | 需要GPU服务器,显存越大越流畅 |
| 部署维护 | 基本为零,接口更新迭代快 | 需要自己管环境和版本,模型升级要手动 |
| 中文效果 | 针对电话、会议、直播等场景做了专项优化 | 通用模型中文效果不错,但会议场景需要微调 |
| 说话人分离 | 接口直接返回说话人标签 | 本地做声纹聚类,复杂度高 |
| 长音频支持 | 原生支持,几小时文件也能处理 | 要看显存和工程方案,通常要切片处理 |
| 成本 | 按小时或按次计费,有免费额度 | 电费和服务器成本,规模小时反而更贵 |
对个人或者中小团队来说,云API几乎是碾压式胜出。本地方案还有一个暗坑:你以为省了接口费,但其实GPU服务器一小时的电费、维护模型的时间、处理长音频切片的复杂度,都已经远远超过调用API的钱。只有当你对数据隐私极度敏感、或者音频量达到每天几百上千小时时,私有化部署才值得认真考虑。
所以我最终选定云平台的录音文件识别接口作为核心引擎。
1.3 三类识别接口到底怎么选
云平台的AI语音识别产品通常分成三类:一句话识别、实时语音识别、录音文件识别。很多人一开始搞不清楚该用哪个,我的建议是看场景对“时效性”和“音频长度”的要求。
一句话识别适合那种很短、需要立即返回结果的场景,比如语音搜索、语音输入法、口令指令。你说话,马上回文字,响应快但音频不能太长。
实时语音识别适合会中字幕、直播字幕这种边说话边出字的场景。它的特点是低延迟,流式返回,你可以拿来做现场大屏投屏,让与会者直接看到当前发言转成的文字。缺点是受网络和麦克风质量影响比较大,会后要拿到完整规整的记录还得另做处理。
录音文件识别,也就是我这个项目的主选接口,适合音频已经录制好了、事后处理的情况。它支持一次性提交几十分钟甚至几小时的音频,返回的是完整转写文本,还带说话人分离、时间戳、智能标点等附加能力。会议记录天然就是“先录完再处理”的模式,所以用录音文件识别最合适。
如果你想把实时字幕和会后纪要打通,也可以两条腿走路:会中用实时语音识别投屏,会后用录音文件识别出正式纪要。但第一版别贪多,先做录音文件识别,链路短、效果好、容易跑通。
2. 影响识别效果的核心配置
语音识别的效果,很大程度上在你调用接口“之前”就已经决定了。同样一段录音,音频格式不同、参数配置不同,出来的识别准确率可能差出一截。这一部分把几个最重要的配置项讲透。
2.1 音频格式和采样率:容易被忽略的地基
这是最常见的坑。很多人拿手机录音下来直接传上去,传完发现识别结果惨不忍睹,第一反应是“AI不行”。其实大概率是音频本身就不达标。
先说采样率。语音识别模型训练的数据,一般是16kHz采样率,也就是每秒钟取16000个采样点。如果你的音频是微信语音那种低码率格式,或者是从电话线路录下来的8kHz音频,高频信息已经丢失,识别效果自然打折。我在实测中明显感觉到,同一句话,16kHz的WAV和8kHz的电话录音相比,准确率差距可能是几个甚至十几个百分点。
所以我的建议是:录音设备能选择“高音质”“WAV”或“无损”模式就选上;如果已经是压缩过的MP3或M4A,也能识别,但别期待达到最佳效果。云平台的接口通常支持mp3、wav、m4a、ogg、opus等常见格式,这点倒不用太担心。只有那种奇奇怪怪的私有格式,比如某些会议终端导出的加密音频,才需要先用工具转成标准格式。格式转换工具很多,像ffmpeg一条命令就能解决:
ffmpeg -i input.amr -ar 16000 -ac 1 output.wav这条命令把任意音频转成16kHz单声道WAV,是参会录音最常见的预处理方式。重点就在-ar 16000和-ac 1这两个参数,前者定采样率,后者定声道数。
2.2 声道分离与说话人分离:多人讨论不再“串味”
多人会议有一个其他场景不太会遇到的需求:这句话是谁说的。
早期的语音识别只能返回一串文字,谁知道这句话是产品说的还是开发说的?所以现在的云接口一般提供两种区分说话人的机制,分别是声道分离和说话人分离,它们的原理和适用场景不一样。
声道分离的前提是你的录音本身就是双声道的,比如用某款视频会议软件录制时,经常会把左侧说话人的声音录到左声道、右侧说话人的声音录到右声道,或者两个不同的参会麦克风分别落到两个声道。这时候设置声道数为2,接口可以分别识别两个声道的内容,互不干扰。好处是准确率高,因为两个人同时说话也能通过声道天然分开。
说话人分离不依赖声道信息,它是在单声道音频里通过声纹特征把不同人的语音聚类,自动标出“说话人1”“说话人2”“说话人3”。好处是任何录音都能用,缺点是如果两个人同时开口,或者某个发言人声音特别小,聚类可能不准。
实际项目中,我两个机制同时开。双声道录音优先用声道分离,单声道录音退回到说话人分离。推荐的配置是按音频实际情况传参数,接口支持的话返回结果里会给出speaker_id字段,每个句子都会带上身份标签。
2.3 热词表与专有名词:让AI听明白你们的“黑话”
这是第二个非常影响体验的配置。每个团队都有一些内部词汇、产品名、人名、英文缩写,比如“大促”“主链路”“SLA”“复盘”“OKR”。通用模型很可能把“OKR”听成“欧克啊而”,把“SLA”听成“斯拉”。这种错误在后期整理时特别头疼,因为你得靠上下文猜它本来想说什么。
解决方案是使用热词表,也叫自定义词汇。把那些专有名词、产品名、人名、项目代号都提前维护到一个词表里,提交任务时把这些词传给接口,模型在识别时会偏向于输出这些候选词。效果立竿见影,错词率能明显下降。
使用热词的几个心得:
- 词条不要太长,通常是两个字到五个字效果最好,太长反而可能影响模型判断。
- 权重可以给,关键的业务词适当调高权重,但不要所有词都最高权重,否则会干扰正常的语言模型。
- 热词生效可能需要一点时间,有的平台是提交后立刻生效,有的需要预编译,所以别刚加完就测,等个几分钟再验证。
- 词表数量有限制,一般几百条到几千条不等。把最高频、最关键的几十条维护好,比堆上千条低频词汇更有价值。
拿我自己的项目举例,我维护了一个大概50条的团队热词,包括项目代号、产品名称、几个关键同事的姓名、常用英文缩写。加了热词之后,“某某系统二期”这种句子再也不会被识别成“某某系统2起”了。
2.4 标点、时间戳与数字转换:后处理省一大半力气
识别接口返回的不只是汉字,还包含一堆辅助信息,很多人没注意,但这些信息直接决定了你已经做完了多少“整理工作”。
第一是智能标点。通用的语音转文字返回的可能是“今天的会议主要讨论三个议题第一个是进度第二个是风险第三个是排期”这种没有断句的文本,阅读体验非常差。开启智能标点后,模型会根据语义自动加上逗号、句号、问号、感叹号,整段文字的可读性会提高很多。从后处理的角度看,这一步省掉了大量人工断句的时间。
第二是时间戳。接口会返回每个字或每个词在音频中的起止时间,单位通常是毫秒。别小看这个能力,它让“文字和音频对齐”成为可能。之后你在纪要里看到某句话,点一下就能跳到录音对应的位置重新听一遍。这个功能在核对关键数据、争论敏感话题时非常好用。
第三是数字转换。有些场景希望把“一百二十三”写成“123”,有些场景则希望保留中文数字。语音模型通常会提供数字转换选项,你可以根据团队习惯设置。技术团队更喜欢阿拉伯数字加单位,比如“3点5版本”“99.9%”,把这些配置好,后处理就不用再正则匹配替换了。
2.5 关键参数速查表
平时被问到最多的问题就是“该传什么参数”,这里直接给一张当年调通的配置表。不同云平台字段名会略有差异,但逻辑通用:
| 参数项 | 推荐配置 | 作用说明 |
|---|---|---|
| EngineModel | 16k_zh_call或会议专用模型 | 选适合会议电话场景的中文模型 |
| ChannelNum | 1或2,取决于源音频 | 2用于双声道分离,1单声道 |
| EnableSpeakerSeparate | True | 开启说话人分离 |
| HotwordList | 团队词表 | 提升专有名词准确率 |
| EnablePunctuation | True | 自动添加标点 |
| EnableTimestamp | True | 返回字级/词级时间戳 |
| ConvertNumber | True | 中文数字转阿拉伯数字 |
| FilterDirty | False | 会议记录不建议过滤脏词,保留原话 |
你可能会问,为什么不开启所有能开的功能?因为部分功能会互相影响。比如FilterDirty在某些平台会把原始发言做替换,虽然是好意,但会议记录需要还原真实讨论过程,所以我宁可保留原样,后续人工判断。再比如说话人分离和声道分离同时开启时,不同平台的返回逻辑不一样,最好先用一小段测试音频确认结果结构,再批量处理历史录音。
3. 手把手把会议录音变成结构化文本
配置讲清楚了,下面进入实际编码环节。我用Python为例,把这套流程跑通。不需要复杂的框架,一个脚本加几个依赖就能跑。
3.1 账号准备与最小权限配置
第一步是开通云平台的语音识别服务,拿到调用凭证。一般流程是:注册账号、完成实名认证、在控制台找到语音识别产品并开通、创建API密钥。
这里有个安全经验:不要直接用主账号的密钥。主账号权限太大,万一密钥泄露,整个账号的资源都可能被操作。正确做法是创建一个子账号,只授权语音识别相关的读写权限,然后给这个子账号单独生成密钥。如果平台支持“临时密钥”,优先用临时密钥,因为有效期短,泄露了影响也可控。
我自己的密钥是放在一个独立的配置文件里,不上传到代码仓库,也不写在脚本里。这在个人项目里看着有点繁琐,但对后面扩展成团队工具很有必要,尽早养成好习惯。
3.2 准备音频文件并生成临时访问地址
云平台的录音文件识别接口,通常不直接接收本地文件上传,而是要求你提供一个“可公网访问的音频地址”。这就需要一个中转:先把音频传到对象存储,再生成一个带签名的临时访问链接,最后把这个链接传给语音识别服务。
很多人卡在这一步,觉得“公网访问”不安全。其实云平台的通用做法是生成“预签名URL”,也就是一串带有过期时间的下载链接,过期后自动失效,不需要把存储桶设置成公共读。这样文件本身是私有的,只有拿到有效链接的人才能在有效期内访问。
我在项目里是先调对象存储的去上传文件,然后生成一个有效期设为24小时的预签名URL,再把这个URL作为音频地址传下去。具体代码每个平台不一样,但流程都差不多:
# 以对象存储SDK上传文件并生成临时链接为例 import cloud_sdk bucket = cloud_sdk.ObjectStorageBucket("your_bucket", "your_region") def upload_and_get_url(local_path, key): bucket.upload_file(local_path, key) url = bucket.generate_presigned_url( key, expires_in=24 * 3600 ) return url如果你已经有自己的服务器,也可以用Nginx把某个目录临时暴露出去,配一个IP白名单或者简单的Token鉴权,同样能跑通。但维护成本和安全性都不如对象存储省心,所以我建议直接用对象存储。
3.3 提交录音文件识别任务
音频地址准备好之后,就可以调用录音文件识别接口了。这个接口是异步的,你提交一个任务,它返回一个任务ID,然后你需要拿着这个ID去查结果。代码大致长这样:
import json import cloud_sdk credential = cloud_sdk.Credential("your_secret_id", "your_secret_key") client = cloud_sdk.ASRClient(credential, "ap-guangzhou") def submit_recognition_task(audio_url): # 这里的参数结构以实际官方SDK为准 params = { "EngineModel": "16k_zh_call", "ChannelNum": 1, "EnableSpeakerSeparate": True, "EnablePunctuation": True, "EnableTimestamp": True, "ConvertNumber": True, "SourceType": 0, # 0表示音频链接,1表示本地文件 "Url": audio_url, "HotwordList": load_hotwords("hotwords.txt"), } resp = client.create_recognition_task(params) task_id = resp["TaskId"] return task_id需要注意几个细节:
HotwordList的格式,有的平台是JSON数组字符串,有的是直接传string列表,先看文档确认。- 任务提交成功后,不代表识别已经完成,它只是进入队列。长音频在后端处理需要时间,所以紧接着要轮询。
- 有些平台支持回调地址,任务完成会主动通知你。但我个人更喜欢轮询,因为回调还需要额外暴露一个公网服务,调试麻烦。
如果你用的是别的语言,比如Go、Java、Node.js,思路完全一样,官方都提供了对应SDK,照着文档把参数填上就行。
3.4 轮询任务状态与结果拉取
提交任务后就进入了“等待”阶段。我的经验是不要死循环高频查询,合理设置轮询间隔。几十秒的音频可能几秒就好,一个小时的会议音频可能需要一两分钟甚至更久。轮询太频繁只会白白消耗请求配额,轮询太慢则浪费时间。
参考代码如下:
import time def wait_for_task_result(task_id, interval=10, max_wait=1200): waited = 0 while waited < max_wait: resp = client.describe_recognition_task(task_id) status = resp["Status"] if status == "success": return resp["Result"] elif status == "failed": raise RuntimeError(resp.get("ErrorMsg")) # status == "processing" 或 "queued" time.sleep(interval) waited += interval raise TimeoutError("识别任务超时")我一般把间隔设在10秒,最长等20分钟。超过20分钟还没成功,多半是音频过大或者服务端异常,再查日志定位。
拿到成功结果后,返回体里通常包含几个层级:
- 全文本:整段音频的完整转写,适合快速浏览。
- 句子级列表:每句话的文本、起止时间、说话人ID。
- 词级列表:更细粒度的时间信息,用于做点击定位或字幕。
- 说话人数量及对应结果:如果开启了说话人分离,会有每个说话人的独立转写。
3.5 把接口返回结果整理成可读纪要
接口返回的是结构化的JSON,但直接看JSON不方便。我写了一个简单的转换脚本,把句子列表拼成“时间+说话人+内容”的文本:
def format_result(result): lines = [] for sentence in result["SentenceList"]: speaker = sentence.get("SpeakerId", "unknown") start = sentence["StartTime"] / 1000.0 end = sentence["EndTime"] / 1000.0 text = sentence["Text"] lines.append( f"[{start:0>8.1f} - {end:0>8.1f}] " f"说话人{speaker}: {text}" ) return "\n".join(lines)这是整个项目最“朴素”但也最实用的部分。经过这一步,录音就变成了一份带角色和时间轴的对话记录。拿这份记录再去提炼会议纪要,就轻松多了。
如果你需要的是字幕文件,也可以走类似逻辑,把句子列表按起止时间输出成SRT格式。这个功能我后来加上了,开会录屏的时候可以直接挂字幕。
4. 从纯文本到会议纪要:后处理与自动化
语音识别完成之后,只是拿到了“逐字稿”,离真正的会议纪要还有一段距离。逐字稿里的口语词、重复表达、闲聊内容,直接发出去没人想看。所以我又加了两层后处理。
4.1 文本清洗
清洗是为了去掉语音转文字的一些常见“杂质”。比如:
- 语气词:“嗯”“呃”“那个”“就是说”这类填充词,可以批量删除或保留少量。
- 重复表达:说话人紧张或中断后重启句子,比如“这个这个这个方案”,需要合并。
- 附和性内容:多人会议里经常有“对对对”“好的好的”这种响应,在逐字稿里会占据大量行,但通常没有独立的信息价值。
- 停顿导致的残句:比如一句话说到一半被打断,后面没接上,这类残句至少标记出来,别让纪要里出现一堆半截话。
我用一个简单的识别规则做初步清洗,但不做硬性删除。凡是删除前先判断这句话是否包含关键词或数字,防止误删有效信息。多说一句:会议记录最好保留一份“原始逐字稿”存档,清洗后的版本只作为对外纪要。一旦后续有人对结论有争议,随时能回到逐字稿核对。
4.2 用文本模型提取结论与待办
清洗完之后,下一步就是把文本改写成真正可执行的会议纪要。这里我接入了一个支持长文本处理的对话模型,把逐字稿“喂”给它,让它提取三样东西:
- 本次会议的核心讨论主题和结论
- 明确的待办事项(负责人 + 事项 + 时间节点)
- 遗留争议和需要额外确认的问题
关键在提示词的设计。我自己用的是一段比较明确的指令:
你是一名会议纪要整理助手。下面是我给的一段会议逐字稿。 请提取: 1. 会议结论:用不超过5句话概括本次会议达成的共识。 2. 待办事项:列出行动项,尽量保留负责人、截止时间等关键信息。 3. 待确认问题:列出没有形成共识、需要后续确认的问题。 要求:只基于原文信息,不要编造;用中文简体输出。这段指令看着简单,但实际效果比“帮我总结一下”好很多,因为我对输出结构做了明确约束,模型不容易自由发挥。
不过有一个前提必须提醒:会议逐字稿可能很长,大模型有上下文长度限制。如果一个小时的会议逐字稿超过模型的输入上限,就要先分段处理,提取各段结论后再合并生成总纪要。我一开始直接塞进去,结果后半段内容被截断,漏了一条重要待办,后来改成“分段摘要再合并”就很稳定了。
4.3 推送到协作工具
有了纪要文本,最后一步是把内容分发到团队协作工具。这一步可以选择的方式很多,比如:
- 生成Markdown文件,提交到文档平台。
- 通过群机器人API自动发到团队群里。
- 定时任务每天检查新生成的纪要,自动归档到知识库。
我自己的做法是输出两种东西:一份完整的Markdown归档到知识库,供后续检索;一份精简版发送到团队群,让大家快速知道本场会议的关键结论和待办。
这里要注意授权问题。用于推送的机器人Token、文档平台账号密码,都不要写死在脚本里。我会用一个环境变量文件统一管理,并且确保该文件不会被git提交。
4.4 后续扩展:实时字幕、关键词预警
第一版跑通之后,再往后扩展其实很顺。比如:
- 把录音文件识别换成实时语音识别,就能做会中字幕。
- 在实时字幕流上做关键词匹配,当有人提到项目名、风险词、时间节点时,自动在屏幕上高亮。适合远程评审会。
- 对每段音频做声纹归档,后续能根据说话人特征检索历史发言。
- 把纪要里的待办自动创建成任务卡片,关联到项目管理工具。
这些不是空想,而是语音识别接口本身都支持的能力,只是一步步叠加而已。我目前已经把前两条做了,效果都还不错。
5. 实战避坑:常见问题与排查清单
做这个项目的过程中,我踩了不少坑。有些坑是文档里写了但容易忽略的,有些是实际跑数据才暴露出来的。下面整理成一份排查清单,希望对你有用。
5.1 识别结果质量差
先判断是哪些句子出错。如果是关键词汇错,多半是热词没配好,优先补充热词表。如果是大量句子都错,那就要看音频源了。我的一个同事拿手机放在会议室角落里录的音,声音稍远,加上会议室有回声,识别结果就很糟糕。后来改用指向性麦克风或直接采集会议软件的双声道音轨,准确率立刻上来了。
还有个小细节:音频不要经过二次压缩。比如微信语音转发、钉钉语音缓存这种,都会损失音质。尽量拿原始录音文件处理。
5.2 长音频排队与超时
一个小时以上的音频,后台处理时间明显变长。有一次我提交了一个三个小时培训录音,等了将近十分钟才出来。这不是接口出问题,而是后端音频分段计算耗时。应对策略是:把超时时间设长一点,轮询间隔设大一点,别过早放弃。
另一个容易忽略的是URL有效期。对象存储生成的预签名链接如果只给了10分钟有效期,而音频处理要5分钟,那很可能在中途就过期了,任务直接失败。我把有效期设置为24小时,基本不会出问题。
还有单次音频大小限制,不同平台从几百MB到几GB不等,超了就先切分再上传。切分的时候要注意重叠一点上下文,避免把一句话切成两半。
5.3 说话人分离不准
说话人分离不是100%准的。实测下来,几人轮流发言时效果很好,一旦出现两人同时说话,接口会倾向于把整句判给其中一个说话人。另外,开会时有人手机外放、有人用变声器,都会干扰声纹聚类。
解决方法是优先录制双声道音频。其实很多会议软件的录制设置里都有“每个发言人单独音轨”选项,打开它就是最佳方案。如果只能用单声道,那就在会后别指望分离结果100%可靠,至少要人工抽查关键段落。
5.4 费用控制与配额
费用是很多人关心的问题。语音识别一般按音频时长计费,比如每小时几块钱,具体看套餐和活动。对一个每周开几小时会的团队来说,成本完全可以接受。
但有三点要注意:
- 免费额度通常只给新用户一段时间,过期后就要付费,别等月底看账单才发现。
- 录音文件识别和实时识别是两种计费,别混着调用。有的平台实时识别按秒计费且单价更高,开会全程开着实时识别,费用会比会后处理高一截。
- 重复测试会产生多次费用。调试阶段尽量用一小段音频,比如30秒,验证逻辑跑通后再处理完整会议录音。
我一开始反复测试一个1小时音频,因为程序bug提交了五六次,白白多花了几倍的钱。后来我写了个小逻辑,所有测试请求都自动截取音频前30秒,确认没问题再放开全量处理。
5.5 数据隐私注意事项
会议录音里经常有敏感信息,所以隐私处理必须到位。我整理了几条自己一直在执行的原则:
- 对象存储桶保持私有,所有访问都走临时签名链接。
- 识别完成后及时删除存储桶里的音频文件,文本结果如果需要留存,尽量放在内部文档系统而不是公网服务。
- 如果音频涉及客户信息或者公司机密,先评估是否适合使用公有云接口处理。云平台会提供加密传输,但“数据不出本地”和“数据脱敏”永远是两回事。
- 打日志的时候不要打印完整音频URL和返回内容,只记录任务ID和状态,防止日志泄露转写内容。
这些操作看起来琐碎,但一旦出事,代价远大于省下来的那点便利。
把整个链路跑通之后,我最大的体会是:这个工具的价值不在技术难度,而在流程的重组。以前开会是“会中记录、会后整理”,现在是“会中放飞、会后自动生成、人工只做关键校验”。我每周至少省下一两个小时,而且会议结论的追溯变简单了。
如果你也打算做类似的东西,我的建议很直接:先拿一小段真实会议音频跑通全流程,确认识别效果可以接受,再逐步加入说话人分离、纪要提炼和自动推送。别一开始就想做得太全,语音识别这种技术,跑通第一个端到端Demo的成就感,比什么都重要。