iTest 音频转录器调试与解决复盘

用户脚本 iTest 音频转录器 调试与解决复盘 1. 初始问题描述 用户创建了一个 Tampermonkey 脚本,旨在 iTest 网站上,利用 vosk-browser 库对听力音频进行离线语音识别。脚本在运行时抛出 TypeError: Vosk.Recognizer is not a constructor 的错误,导致转录功能完全失败。 2. 问题分析与调试历程 整个调试过程可以分为几个关键阶段,每个阶段都基于上一个阶段的错误信息进行了新的假设和尝试。 阶段一:初步诊断 - 错误的 API 调用对象 错误信息: TypeError: Vosk.Recognizer is not a constructor 原始代码: new Vosk.Recognizer({ sampleRate: ... }); 分析与假设: 这个错误表明 Vosk.Recognizer 不是一个有效的构造函数。根据许多现代JS库的设计模式(例如 Chart.js),通常会从一个父实例(如模型实例)上创建子组件(如识别器)。因此,我们假设 Recognizer 构造函数应该在 model 实例上。 尝试的解决方案: 将代码修改为 new model.Recognizer({ sampleRate: ... }); 结果: 失败。新的错误信息出现。 阶段二:二次诊断 - API 签名错误 错误信息: TypeError: model.Recognizer is not a constructor 分析与假设: 这个新错误否定了阶段一的假设。这说明 Recognizer 构造函数既不在全局的 Vosk 对象上,也不在 model 实例上。此时,我们重新审视了 vosk-browser 较新版本的文档,发现一个可能的正确用法:构造函数是 Vosk....

2025-08-05 · 2 min