
改对 Whisper 音频预处理 3 个参数转写准确率不再看天吃饭【免费下载链接】whisperRobust Speech Recognition via Large-Scale Weak Supervision项目地址: https://gitcode.com/GitHub_Trending/whisp/whisper一段 5 秒的客服录音丢给 Whisper转出来全是乱码——多半不是模型不行是预处理没做好。log-Mel 频谱图就是原始波形和模型之间的那层加工参数改错语音转文字准确率会跟着一起垮。全景一张图图Whisper 从 log-Mel 频谱图到 token 输出的完整链路预处理只占左上角那一段25ms 窗口背后STFT 参数调优的取舍 整条流水线就是三道工序STFT短时傅里叶变换把波形切成频域的小片梅尔滤波器组照人耳的听感重新分组对数压缩把能量压进模型舒服的数值区间。每个数字都不是拍脑袋定的。16kHz 采样率保多少砍多少按奈奎斯特定理16kHz 能保住 8kHz 以下的全部频率信息而人声能量几乎都集中在这段里。再高的采样率只多收环境底噪模型却要白付一倍计算量。Whisper 用 ffmpeg 在解码时顺手完成重采样和转单声道一步到位。400 点 FFT 与 160 点 HOP频率准还是时间准N_FFT400 在 16kHz 下是 25ms 的 Hann 窗窗越长频率估得越准但辅音这种几十毫秒的瞬态会被糊掉。HOP_LENGTH160 对应 10ms 步长每秒产 100 帧相邻窗重叠 60%瞬态不容易丢。再经过卷积层 stride-2100 帧折成每秒 50 个 token正好是解码器消费的粒度。80 还是 128梅尔滤波器组的维度默认 80 维因为预训练编码器的输入宽度就是 80改 n_mels 等于换特征维度编码器得跟着改。滤波器形状是离线算好存进 .npz 的运行时直接读省了现场构造的开销。人耳在低频能分出 200Hz 和 300Hz到 8kHz 附近就分不出差 100Hz 了梅尔Mel尺度就是照这个非线性感知排的间距80 个均匀线性滤波器反而浪费分辨率。最小可运行路径从文件到频谱import whisper from whisper.audio import pad_or_trim, log_mel_spectrogram audio whisper.load_audio(meeting.wav) # ffmpeg 解码 重采样到 16kHz 单声道 audio pad_or_trim(audio) # 不足 30s 补零超长裁断 mel log_mel_spectrogram(audio, n_mels80) # STFT - 梅尔 - 对数得 (80, 3000) 张量 model whisper.load_model(base) # 加载预训练模型 result model.transcribe(mel) # 送入编码器开始解码 print(result[text])来源whisper/audio.pylog_mel_spectrogram 默认 n_mels80参数旋钮表动之前先看影响参数默认值调大效果调小效果何时该动N_FFT40025ms频率分辨率变细低音更准辅音这类瞬态更跟手分析型任务重频率、实时任务重时间再定HOP_LENGTH16010ms/帧帧变稀、算力省时间变糊更跟手帧数翻倍算力翻倍和 N_FFT 成对调单独改必翻车n_mels80频率描述更细128 是上限更省显存低于 80 无预训练权重想上 128 时编码器输入维必须同步改一句话总结前两个旋钮成对调n_mels 必须和模型输入维对齐。新手三坑踩之前先绕开️采样率没统一到 16kHz症状音调整体偏移啊转出哦 解法加载时就走 ffmpeg 强制重采样别信源文件标称。音频不足 30 秒没 pad症状shape 不匹配encoder 直接报错 解法pad_or_trim 补零对齐 480000 点一步到位。n_mels 改 128 没改模型配置症状矩阵乘维度对不上一跑就炸 解法特征维度和编码器宽度必须同步改缺一不可。Large-v3 动了哪里预处理管线在 large-v3 里基本冻结升级主要发生在编码器侧。n_mels128 就是给更宽编码器预留的档位架构变了才需要动它。【免费下载链接】whisperRobust Speech Recognition via Large-Scale Weak Supervision项目地址: https://gitcode.com/GitHub_Trending/whisp/whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考