你想想看,每天互联网上产生的音视频内容有多少?
B站每天上传几十万条视频,小宇宙上有十几万档播客,腾讯会议每天产生的会议录音更是天文数字。这些声音里藏着知识、决策、创意,但大部分人听完了就忘,收藏了等于学过。
怎么把这些声音变成能搜索、能编辑、能复习的文字?这背后是一套从信号处理到深度学习的完整技术链路。
音频怎么变成数字
声音本质是空气振动。麦克风把振动转成模拟电信号,ADC芯片再把它变成数字采样。这里有个关键参数叫采样率,CD音质是44.1kHz,语音电话是8kHz。采样率越高,高频细节保留越多,但数据量也越大。
拿到数字音频后,第一步是做预处理。降噪、去混响、音量归一化,这些操作直接影响后续识别的准确率。比如一段在咖啡厅录的播客,背景噪音可能把识别率从95%拉到70%。
从声波到特征向量
预处理完的信号还是时域波形,直接扔给神经网络效果不好。需要先做特征提取,把时域信号转成频域表示。
最经典的做法是梅尔频率倒谱系数,也就是MFCC。它模拟人耳的听觉特性,对低频敏感、对高频迟钝。一段音频被切成20-40毫秒的帧,每帧提取13-40维的MFCC特征,最终变成一串特征向量。
现在更流行的做法是直接用原始波形或梅尔频谱图作为输入,让神经网络自己学特征表示。wav2vec 2.0、HuBERT这些模型就是这么干的,效果比手工设计的MFCC好一截。
声学模型,从HMM到Transformer
特征向量怎么变成文字?这靠声学模型。
c
VoskModel* model = vosk_model_new("model_path");
VoskRecognizer* rec = vosk_recognizer_new(model, 16000.0f);
早期的语音识别用隐马尔可夫模型,把语音看作状态序列,每个状态对应一个音素。HMM需要大量人工设计,建模能力有限,在安静环境下还行,一到噪声场景就崩。
2012年深度学习兴起后,DNN-HMM混合系统成了主流。深度神经网络替代了高斯混合模型,负责把特征映射到音素概率,HMM负责时序对齐。
再往后,端到端模型彻底改变了游戏规则。Listen-Attend-Spell、Transformer、Conformer这些架构,直接从音频学到文字,不需要中间音素表示。特别是Conformer,把CNN的局部特征提取和Transformer的全局注意力结合起来,在LibriSpeech上把词错误率干到了2%以下。
c
typedef struct {
double timestamp;
char* text;
unsigned char* frame_data;
} MultimodalChunk;
语言模型,让句子更通顺
声学模型输出的是单个字的概率,但语音识别不是猜字游戏,是猜句子。语言模型的作用就是给通顺的句子打高分,给不通顺的打低分。
c
AVFormatContext* fmt_ctx = NULL;
avformat_open_input(&fmt_ctx, "input.mp4", NULL, NULL);
传统语言模型用n-gram统计,看前面几个字预测下一个。现在大语言模型接棒,GPT、BERT这些预训练模型对上下文理解更深,能纠正声学模型的错误。比如声学模型把「深度学生」听成了「深度学习」,语言模型一看上下文是「神经网络」,就知道应该是「深度学习」。
c
typedef struct {
double timestamp;
char* text;
unsigned char* frame_data;
} MultimodalChunk;
说话人识别,多人场景的关键
会议录音、播客访谈、课堂讨论,这些场景有多个说话人。单纯转文字不够,得知道哪句话是谁说的。
说话人识别分两个层面。一是说话人分割,把音频切成不同说话人的片段。二是说话人聚类,把同一个人的片段归到一起。常用方法有x-vector、ECAPA-TDNN这些嵌入模型,把每个人的声音特征压缩成一个固定维度的向量,再用聚类算法分组。
实际工程中,这个环节最容易出问题。两个人声音相似、有人说话断断续续、背景噪音干扰,都会导致聚类错误。我试过一个三小时的会议录音,最后发现有两个说话人被误判成了一个人,手动修正花了半小时。
从语音到笔记,最后一公里
语音识别把音频变成文字,但用户要的不是文字稿,是笔记。
这需要自然语言处理技术介入。文本摘要提取核心观点,命名实体识别找出关键人名地名,关系抽取梳理逻辑结构。再往上,思维导图生成需要理解文本的层级关系,AI播客需要把文字改写成对话体。
现在的做法是,先用大语言模型做理解和总结,再按需生成不同格式。比如把一段技术演讲转成笔记,模型先提取「问题-方案-实验-结论」的结构,再填充每个部分的关键细节。
实际落地中的坑
说了这么多原理,实际用起来还有不少问题。
长音频的内存和计算是个挑战。一段两小时的视频,如果按10毫秒一帧处理,特征序列长度超过72万。直接扔给Transformer,显存根本扛不住。工程上一般用滑动窗口或层级处理,先切成段落再分别识别。
专业术语的识别也是老大难。医学、法律、金融这些领域有大量专有名词,通用模型没见过,识别出来全是谐音字。解决办法是用领域语料做微调,或者运行时动态注入热词。
多语言混合更麻烦。一段中文演讲里突然冒出几个英文术语,模型经常切换不过来。现在的做法是用语言识别模块先判断语种,再路由到对应的识别模型,但切换点的判断本身就不太准。
这类工具的工程实践
市面上做音视频转笔记的产品,底层架构大同小异。前端负责音视频解析和上传,后端做语音识别、NLP处理、结果生成。
比如我平时用的Ai好记,就是基于这套思路。
它把B站、抖音、小宇宙这些平台的链接直接解析,后端做语音提取和识别,然后生成图文笔记、思维导图、精华速览。

多人对话场景下能区分说话人,带时间戳标记。专业领域比如医学、金融,用专门的语料库训练过,无字幕视频也能识别得比较准。

跟纯语音识别工具比,这类产品多了NLP层和生成层。不是只给文字稿,而是直接给结构化的笔记。对学习效率的提升,我觉得还是挺明显的。
FAQ
Q,语音识别准确率能做到多少? A,安静环境下普通话可以达到95%以上,带口音或噪声场景会下降。专业术语密集的领域需要专门优化。
Q,长视频怎么处理? A,一般分段处理再合并。技术上用滑动窗口或层级注意力,工程上限制单次处理时长。
Q,多语言视频能识别吗? A,可以,但需要语言识别模块先判断语种。中英混合场景切换准确率还在提升。
Q,说话人识别准确率怎么样? A,两人差异明显时不错,声音相似或噪音大时容易出错。目前还是辅助功能,不能完全替代人工核对。