🎧 Listen to this article: हिंदी · English · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
🌍 Read this in your language: हिंदी · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
Whisper 作为 OpenAI 的自动语音识别(ASR)模型,最近引起了广泛关注。近日,一位用户分享的经历凸显了该技术的一个显著问题:他们收到的反馈显示自己说了“Thanks for watching”,而他们实际上从未说过这句话。这种偏差正是所谓的 Whisper 幻觉(Whisper hallucinations),即模型会在音频录音的静音片段生成文本。
什么是 Whisper 幻觉?
Whisper 幻觉发生在模型用其从训练数据中学到的短语来填充静音时。在本例中,该用户在结束回答前停顿了大约四秒钟。然而,Whisper 将这段静音误当作生成文本的机会,从而导致了不准确的反馈。
在对 2,000 个语音片段的分析中,发现有 9.2% 包含幻觉文本。这意味着近十一分之一的片段出现了实际并未说出的短语。该问题在尾随静音超过三秒的片段中尤为明显,其幻觉发生率飙升至 23%。
为什么会产生这些幻觉?
其底层机制与 Whisper 解码器的工作原理密切相关。它在海量网络音频数据上进行过训练,在视频片尾等安静片段中,“Thanks for watching”之类的短语非常普遍。当模型遇到静音时,它会默认生成这些熟悉的短语,从而导致不准确。
该模型以 30 秒为窗口运行,这意味着它会在音频中寻找模式。当它遇到长段静音时,即使并不准确,也可能会生成符合上下文的文本。大多数情况下,它不会输出任何内容或输出一个 no-speech token,但有时它会自信地生成一段听起来合情合理的短语。
内置阈值的局限性
人们可能会认为 no_speech_threshold 参数有助于检测静音并防止幻觉。然而,这并不总是有效。即使模型对静音没有充分的把握,它仍然可能生成文本。事实上,分析表明,尽管 no-speech 概率很高,许多幻觉依然会发生。
如何解决这一问题
为了解决幻觉问题,可以进行一些调整。关键在于彻底停止向模型发送静音。一个名为 Silero VAD(语音活动检测,Voice Activity Detection)的内置过滤器可以帮助在解码前去除无语音区域。以下是一个可以使用的简单配置:
from faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
def transcribe_answer(path: str) -> str:
segments, _ = model.transcribe(
path,
vad_filter=True,
vad_parameters=dict(min_silence_duration_ms=500),
condition_on_previous_text=False,
)
kept = []
for seg in segments:
if seg.no_speech_prob > 0.5:
continue # Skip confident ghosts
kept.append(seg.text.strip())
return " ".join(kept)
该配置可以显著减少幻觉的数量,同时仍能捕捉真实语音。
结论
对于依赖高准确度转录的用户而言,Whisper 的幻觉问题是一个显著的挑战。通过了解这些幻觉产生的原因并采取策略加以缓解,我们可以提高自动语音识别系统的可靠性。
优点
- 通过减少幻觉来提高转录准确率。
- 改善依赖语音识别的应用的用户体验。
- 更深入地了解 ASR 模型的局限性。
缺点
- 实施修复措施需要一定的技术知识。
- 在极度安静的音频中可能仍会遇到一些限制。
- 如果配置不够仔细,调整可能会导致丢失部分真实语音。
注意事项
本文仅供学习交流之用。代码示例中的任何占位符值在实际应用时都必须替换为真实数据。读者在采纳文中的观点之前,应先核对原始出处。
常见问题解答
- 什么是 Whisper 幻觉? — 指的是 Whisper 模型在音频录音的静音片段生成文本的情况。
- 这些幻觉出现的频率有多高? — 在最近的一项分析中,9.2% 的音频片段出现了幻觉文本。
- 导致这些幻觉的原因是什么? — 它们之所以产生,是因为模型用训练期间学到的常用短语来填充静音。
- 幻觉问题可以解决吗? — 可以,通过在处理前使用语音活动检测(Voice Activity Detection)过滤器去除静音。
- 什么是 no_speech_threshold? — 这是一个用于检测静音的参数,但它可能无法有效防止幻觉。
- 如何提高转录准确率? — 采用过滤器并调整模型配置有助于减少错误。
标签
#ai #machinelearning #whisper #speechrecognition #hallucinations #transcription #technology #OpenAI #ASR #VAD
Kubernetes Security Checklist
Harden cluster access, workload identity, pod security, network boundaries, software supply chain, secrets, and operational monitoring.
Free. No spam — unsubscribe in one click.


Responses
Sign in to leave a response.