我正在开展一个项目,涉及使用 OpenAI 的 Whisper 转录音频文件。为了提高转录质量,我尝试使用 noisereduce Python 库中的 reduce_noise 函数来减少音频文件中的噪音,然后再将其传递到 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']
我尝试了以下操作,但得到了相同的输出 -
还有其他人遇到过这个问题或者对可能导致此问题的原因以及如何解决它有建议吗?
您应该使用VAD(语音活动检测器)。 Whisper 已经接受了从各种环境收集的实时数据的训练(paper)。噪音也是一项有助于 Whisper 预测单词的功能。然而,它是一个生成的模型,当用户发送一个空包时,它会为每个音频包生成转录,这会导致不准确,尝试以良好的采样率发送音频,这可以提高您的准确性。