使用 OpenAI 的 Whisper 转录降噪音频时的时序偏移

问题描述 投票:0回答:1

我正在开展一个项目,涉及使用 OpenAI 的 Whisper 转录音频文件。为了提高转录质量,我尝试使用 noisereduce Python 库中的 reduce_noise 函数来减少音频文件中的噪音,然后再将其传递到 Whisper。

我注意到一个问题,即与原始音频文件的转录相比,降噪音频文件的转录在时间上存在偏移。整个音频文件中的偏移量并不是恒定的。

这是我的流程的粗略概述:

  1. 使用 noisereduce 对音频应用降噪。
  2. 使用 Whisper 转录原始音频和降噪音频。
  3. 从whisper_result['text']中选择文本长度较长的转录结果。
  4. 使用 Whisper 结果中的段键进行计时,因为它为每个单词提供计时,我将其用于字幕。

当我使用原始音频转录结果中的片段时,时序正确对齐。但是,当我使用降噪音频转录结果中的片段时,时间上存在偏移。我还必须使用原始音频而不是降噪后的音频。

这是我的代码示例:

# Assume 'orig_audio_data' is my original audio file data
# Apply noise reduction
clean_audio = noisereduce.reduce_noise(orig_audio_data, rate)

# Transcribe both original and cleaned audio using Whisper
# (assume 'transcribe' is a function to do this)

original_transcription = model_medium.transcribe(orig_audio)
clean_transcription = model_medium.transcribe(clean_audio)

# Choose the longer transcription
if len(original_transcription['text']) > len(clean_transcription['text']):
    chosen_transcription = original_transcription
else:
    chosen_transcription = clean_transcription

# Use 'segments' for timing

segments = chosen_transcription['segments']

我尝试了以下操作,但得到了相同的输出 -

  1. 其他降噪库。
  2. 降噪步骤后重新标准化音频。
  3. 固定时间。偏移在音频过程中发生变化,使其修复非常困难。
  4. 保存清理后的音频并再次加载。 (使用 librosasoundfile 加载和导出)
  5. 从音频创建片段,对每个片段应用 reduce_noise 并组合结果 - Whisper 结果不太准确。

还有其他人遇到过这个问题或者对可能导致此问题的原因以及如何解决它有建议吗?

python speech-to-text audio-processing noise-reduction openai-whisper
1个回答
0
投票

您应该使用VAD(语音活动检测器)。 Whisper 已经接受了从各种环境收集的实时数据的训练(paper)。噪音也是一项有助于 Whisper 预测单词的功能。然而,它是一个生成的模型,当用户发送一个空包时,它会为每个音频包生成转录,这会导致不准确,尝试以良好的采样率发送音频,这可以提高您的准确性。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.