使用tensorflow、transformer及whisper-base模型遇输入无效错误求助
解决Whisper音频转写的输入无效问题
核心错误分析
你的代码存在两个关键问题:
- 直接将音频二进制数据传入
tokenizer.encode():Tokenizer的作用是处理文本,不是音频,Whisper模型需要的是预处理后的音频特征(梅尔频谱),而非原始音频二进制。 - 使用
TFWhisperModel基础模型但未遵循序列到序列模型的推理流程:基础模型需要手动处理音频特征输入和解码器的文本启动输入,无法直接传入token值进行推理。
方案1:用Pipeline快速实现(推荐新手)
Hugging Face的pipeline已经封装了音频处理、模型推理、结果解码的全流程,无需手动处理细节:
from transformers import pipeline # 加载Whisper自动语音识别pipeline,指定TensorFlow后端 transcriber = pipeline( "automatic-speech-recognition", model="openai/whisper-base", framework="tf" ) # 直接传入音频文件路径即可完成转写 audio_file = "data/preamble.wav" result = transcriber(audio_file) # 保存转写结果 with open("something.txt", "w") as f: f.write(result["text"].strip())
方案2:手动实现完整流程(理解底层逻辑)
如果需要手动控制每一步,必须使用WhisperFeatureExtractor处理音频,再配合模型完成推理:
import tensorflow as tf from transformers import TFWhisperModel, WhisperTokenizer, WhisperFeatureExtractor import librosa # 加载模型、Tokenizer和音频特征提取器 model = TFWhisperModel.from_pretrained('openai/whisper-base') tokenizer = WhisperTokenizer.from_pretrained('openai/whisper-base') feature_extractor = WhisperFeatureExtractor.from_pretrained('openai/whisper-base') # 1. 加载并预处理音频:将原始音频转为16kHz单声道,提取梅尔频谱 audio_file = "data/preamble.wav" audio_array, sampling_rate = librosa.load(audio_file, sr=16000) inputs = feature_extractor( audio_array, sampling_rate=sampling_rate, return_tensors="tf" ) # 2. 准备解码器启动输入:Whisper需要以<|startoftranscript|>作为解码起始标识 decoder_input_ids = tf.constant(tokenizer.encode("<|startoftranscript|>", return_tensors="tf")) # 3. 模型推理 outputs = model( input_features=inputs.input_features, decoder_input_ids=decoder_input_ids ) # 4. 解码获取转写文本 predicted_ids = tf.argmax(outputs.logits, axis=-1) transcription = tokenizer.decode(predicted_ids[0], skip_special_tokens=True) # 保存结果 with open("something.txt", "w") as f: f.write(transcription.strip())
关键注意事项
- 确保音频是16kHz单声道:Whisper模型默认要求此格式,
librosa.load中指定sr=16000会自动采样转换。 - 区分
Tokenizer和FeatureExtractor:前者处理文本,后者处理音频,两者不能混用输入类型。 - 如果使用基础模型(如
TFWhisperModel),必须同时提供音频特征和解码器的启动文本输入,不能仅传入单一输入。
内容的提问来源于stack exchange,提问作者Rendo Hugh Mann Sama
相关产品推荐
相关产品推荐

