GLM ASR试用
2026-01-07 09:43
这一两年AI用得很多, 我也养成了一个口述的习惯: 虽然不太常见, 但是偶尔我会希望去口述一些内容给AI, 而不是自己逐字手打出来. 比如, 对于一些长文档的review, 或者对Claude Code的一个长的plan的review. 之前我vibe code了一个rust版本的工具, 叫murmur. 基本功能在这个页面里说得比较清楚了. 简而言之就是命令行不带参数的时候是等着语音输入, 然后转成文本, 并丢给OpenAI润色一遍后给出来. 如果带了参数, 则认为参数是音频文件名, 会提取音频文件里的文本.
在Claude Code还没有ctrl-g来打开编辑器的时候, 我使用murmur的频率还会更高一点. 除了日常当工具在工作中使用外, 我还用这个工具提取了一些纪录片的台词. 总体来说, 我对这个工具还是挺满意的. 不过要说吹毛求疵, 我主要的不满意在于对OpenAI的依赖. 根据我自己毫不科学的体验, whisper API有时候返回质量会比较差. 于是, 我一直在找一个合适的开源实现来替代.
日本旅游回来后想找点小项目练手, 就看到了GLM ASR. 这个模型比较小, 参数量为1.5B. 自己测试了一下, 基本符合我的要求: 识别率在线, 对于中英混合的语句支持也和whisper API一样好. 为了上一点难度, 我用普通话朗读了李白的春夜宴桃李园序, 保存成音频文件后丢给这两个模型横向对比, 能够看到GLM还稍胜一筹:
浮天地者,万物之逆旅;光阴者,百代之过客。而浮生若梦,为欢几何?古人秉烛夜游,良有以也。况阳春召我以烟景,大块假我以文章,会桃花之芳园,序天伦之乐事。
作为对比, OpenAI的结果为:
浮天地者, 万物之逆旅, 光阴者, 百代之过客, 而浮生若梦, 唯欢几何? 古人秉烛夜游, 良友宜也, 况阳春朝我以烟尽, 大快甲我以文章, 惠桃花之芳园, 续天伦之乐事。
两个模型对于古汉语发语词”夫”的处理都不到位, 都被录成了”浮”. 但是从那以后, GLM的输出是全对, 而OpenAI的输出就差了一圈.
接下来就简单了, 我需要修改murmur的代码, 使用GLM ASR来替代OpenAI, 这份代码之前就是Claude Code写的, 所以仍然是Claude Code来帮我完成. 最主要的一个障碍是, 我本希望用SGlang来运行模型, 但是后来发现SGLang的容器镜像实在是有点大得离谱(>10GB), 于是还是在本地起了一个python的虚拟环境. 但是总体来说, 这种套壳在技术上没什么难点, Claude Code照着spec写一次就写好了.