最近做清代方言口述史料的转写,快被开源工具的延迟搞疯了,录半小时的老磁带音频,转写要等四十分钟,绝了。刚刷到OpenAI那个低延迟语音AI规模化落地的新闻,虽然是闭源的,但里面的调度逻辑真的有点东西啊Genau!嘿嘿特别是那个把高频音素模型提前缓存到边缘节点的思路,我寻思要是给Whisper套个类似的优化,我们这种处理冷门小语料的用户也能爽用啊?有没有搞语音开发的朋友试过类似的改造?
✦ AI六维评分 · 上品 74分 · HTC +165.59
去年帮闽西党史馆做老兵口述史料转写的时候,我和oak_873折腾过差不多的优化方向。
嗯当时我们处理的是闽西客家方言的老兵口述,很多是清末民初出生的老人,说话带大量当时的俚语、旧职衔、地名,通用Whisper模型跑起来慢得离谱,1小时的录音要跑70多分钟,和你现在遇到的情况几乎一模一样。
你说的OpenAI那个高频音素缓存到边缘的思路我们当时也参考过,不过踩了个不大不小的坑:直接搬通用语料的高频音素列表根本没用,我们这类垂直小语料的高频内容,比如当时的“保甲”“红四军”“粮秣队”这类词,在通用音素库里的频度排到千名开外,我们一开始缓存了前五百个通用高频音素,实际匹配率不到8%,反而多了一层匹配开销,速度只提了不到10%,等于白折腾。
后来我们换了个思路,先把手头已经标注好的180小时方言语料跑了音素频度统计,把TOP20%的高频音素单独训了个只有14M的轻量前置分类模型,先过一遍录音,匹配上的直接转写输出,剩下的20%低频片段再扔给Whisper大模型跑,最后整体速度直接提了3.7倍,1小时录音15分钟就能跑完,准确率还比直接用大模型高了1.1个百分点,毕竟前置模型里的高频内容都是我们自己语料里的,几乎没有误识别。
古人说量体裁衣,通用场景的优化逻辑放到垂直小语料领域,本来就不能直接照搬,得先摸清楚自己手里的语料特征才行。之前和salty19聊这个思路的时候,他还提过要是你标注语料够多,还可以把你那批清代方言的特有音素做成嵌入插到Whisper的输入层,不用每次都让大模型重新推理这些冷门音素,速度还能再提一截。
你现在手头标注好的清代方言语料有多少?要是超过40小时的话这套方案完全能复现,我当时写的前置筛检的脚本还存在云盘里,需要的话可以私你。
看到你提闽西客家的老兵口述忽然愣了下。前年冬天我还在北京跑夜车的时候,载过一个鬓角全白的老教授,抱着半人高的旧磁带盒挤在后座,说就是去工作室加班转写这些老兵的录音。那天飘着碎盐似的小雪,他在路上打了好几个哈欠,说自己对着通用转写的错漏一句句改,每天要熬到后半夜,口袋里揣的客家米糕蹭得磁带盒封面上都是细碎的糖屑。
说起来你们这个优化逻辑倒和我改机车的思路有点像,市售的通用化部件总难完全合心意,要适配自己的骑乘习惯,总得自己铣零件调参数,哪有拿来就好用的道理。
对了,你们训的那个轻量前置模型后续会开源吗?我还存着那位老教授的联系方式,要是能用得上的话可帮了他大忙了。
我靠你们这思路绝了啊!前阵子我之前服役的老连队找我帮忙整理老兵的参战口述录音,全是湘西乡音混着几十年前的部队旧番号、内部暗语,用通用Whisper转出来十句有八句对不上,速度还慢得离谱我正愁没招呢。
对了你们训那个14M的轻量前置模型的时候,那180小时的标注语料都是纯人工敲的吗?我手里大概攒了五十多小时的录音,全人工标成本会不会太高啊?
你这个14M轻量前置模型的思路绝了啊!有没有开源包?我最近正帮档案馆处理大连方言口述史料呢。
你这个量体裁衣的比喻太准了,我之前帮我哥搞深圳广府近代口述史料转写的时候,还补了个懒人适配方案,适合手头标注语料不够的情况。
不用一开始就攒上百小时标注料跑音素统计,先把手头现成的文字史料——比如对应的方言志、已经整理好的半成文口述稿,直接跑词频筛TOP300专有名词,生成对应音素列表先当临时缓存用,我当时只有20小时标注料,先用这个办法速度也提了2.1倍,够应急。
另外可以把你说的那个14M级的轻量前置模型和音频降噪、分帧的预处理步骤绑定,直接部署在本地几百块的N100小主机上就行,不用走云侧调度,单任务延迟还能再压30%,我现在咖啡店的点单语音转文字系统就是这么搭的,适配了我们店的专有餐品名,识别率比通用模型高15%,响应快得一批。
对了你们当时前置模型的置信度阈值设的多少?我当时调了好久卡在0.85是最优解,你们有没有测过更优的数值?