我如何为语音转录模型实现ASR偏置 [开源]
摘要
本文讲解了如何为语音转录模型实现ASR偏置(ASR biasing),并借助Groq和本地模型的示例进行说明,同时介绍了集成该功能的开源项目Freestyle。
过去几周,我一直在构建一个开源的 Wispr Flow 克隆项目。简单来说,这是一款语音听写应用,让你通过说话而不是打字来加快输入速度。第一周我主要搭建基础的语音转文字(STT)功能。Wispr Flow 最酷的功能之一就是 ASR 偏置(ASR biasing),他们称之为“词典”。我成功找到了在项目中实现该功能的方法,现在想分享一下具体做法。
**什么是 ASR 偏置?**
ASR 偏置是一种转录技术,通过向模型提供单词拼写提示或常见短语提示来引导模型。例如视频中我给出的引导是:我想谈论“Knicks”和“OG Anunoby”。设置偏置后,当你说出发音相近的短语时,你预设的单词更有可能出现在转录结果中。
**代码实现方式**
实现 ASR 偏置其实非常简单。每个模型提供商的处理方式不同,叫法也各异。例如 OpenAI 和 Groq 将提示(prompt)作为其偏置机制,类似于大语言模型(LLM)的系统提示。本地模型如 whisper.cpp 和 MLX 的 Mac 本地模型也使用相同的提示系统。而 Deepgram 和 Eleven Labs 等提供商则将其称为“关键术语”(key terms),通过搜索参数进行配置。下图展示了在 Groq 中的实现方式:只需将词典单词注入模型的“系统提示”即可。
```javascript
const transcription = await groq.audio.transcriptions.create({
file: fs.createReadStream("YOUR_AUDIO.wav"),
model: "whisper-large-v3-turbo",
prompt: "vocabulary: Knicks, OG Anonuby", // 可选
response_format: "verbose_json",
timestamp_granularities: ["word", "segment"],
language: "en",
temperature: 0.0,
});
```
在 Freestyle 项目中,我们实现了 ASR 偏置,并将其命名为“词汇表”(Vocabulary)功能。创建词汇表后,它会保存在 Freestyle 本地。每次运行推理时,保存的词汇表都会重新注入到模型的系统提示或关键术语中。
**Freestyle 开源项目**
我们在 ASR 偏置方面所做的所有工作都已开源,并托管在 GitHub 仓库中。如果你对这个项目感兴趣,不妨给个星标!我们也在积极寻找对开源语音听写感兴趣的朋友,一起建立社区。
https://github.com/freestyle-voice/freestyle
相似文章
@MaxForAI: 如果你在做语音Agent,你应该试一下这个项目 来自南洋理工、新国立和上海 AI Lab的团队发布了:Mega-ASR 这个完全开源的ASR基于 Qwen3-ASR构建,目的是打破长期困扰ASR的在嘈杂、混响或其他受损现实环境中表现的瓶颈…
南洋理工、新国立和上海 AI Lab 联合发布 Mega-ASR,一个基于 Qwen3-ASR 构建的完全开源 ASR 模型,通过 Voices-in-the-Wild-2M 数据集和渐进式声学到语义优化,在真实世界嘈杂环境中实现最高 30% 的相对词错误率下降,且仅 1.7B 参数可在消费级硬件高效推理。
基于音素的自动语音识别系统中的偏见评估:对IPA转录模型的分析
本文使用音素错误率和新的Soft PER指标,评估了基于音素的自动语音识别系统(特别是WhisperIPA和ZIPA)中的人口统计和口音偏见,揭示了跨语言和群体的持续差异。
SamaVaani:印度语言多语言临床ASR的审计与去偏
本文对印度语言的精神病学访谈中的多语言临床ASR系统进行了系统性审计,并提出了SamaVaani,一种统一的去偏技术,旨在提升跨人口群体的性能与公平性。
使用滚动缓冲区和单语模型的实时多语言ASR [P]
一种基于路由的实时多语言ASR方法,使用较小的单语模型并配备回滚机制来处理语言切换,在跨语句代码切换上实现了约13%的词错误率,并将系统开源。
在API中引入下一代音频模型
OpenAI 为 API 引入了下一代音频模型,包括改进的语音转文本(gpt-4o-transcribe、gpt-4o-mini-transcribe)和可自定义的文本转语音模型,使开发者能够构建更智能、更具表现力的语音代理,在具有挑战性的场景中提升准确性。