使用Hugging Face Whisper微调模型无法完整转录长音频求助
解决Whisper微调模型无法完整转录长音频的问题
针对你遇到的仅能转录音频开头几秒的问题,核心原因是默认管道设置会截断长音频,或生成参数限制了输出长度。以下是可直接运行的完整解决方案:
步骤1:安装必要依赖(Colab中执行)
!pip install transformers librosa
步骤2:完整转录代码
from transformers import pipeline # 初始化音频转录管道,配置长音频处理参数 asr_pipe = pipeline( task="automatic-speech-recognition", model="thennal/whisper-medium-ml", chunk_length_s=30, # 将长音频拆分为30秒的片段处理 batch_size=8, # 批量处理片段提升效率,可根据GPU内存调整 generate_kwargs={"max_length": 448}, # Whisper默认最大生成token数,适配片段转录 language="ml" # 指定目标语言为Malayalam,按需调整 ) # 处理本地音频文件,获取完整转录结果 transcription_result = asr_pipe("/content/audio.mp3") print("完整转录文本:") print(transcription_result["text"])
关键参数说明
chunk_length_s:处理长音频的核心设置,将音频拆分为指定时长的片段逐个转录后拼接,完全避免截断问题。可根据需求调整为60秒(平衡速度与准确性)。generate_kwargs={"max_length": 448}:Whisper模型默认的最大生成token数,适配单个片段的转录需求,不要使用max_new_tokens,该参数会强制限制生成长度导致输出更短。language:明确指定目标语言可跳过自动检测步骤,提升印度本地语言的转录准确性。
备选方案(若直接传文件路径报错)
如果管道无法直接读取音频文件,可先通过librosa加载音频数组后传递:
import librosa from transformers import pipeline # 加载音频(Whisper要求采样率为16000) audio_data, sample_rate = librosa.load("/content/audio.mp3", sr=16000) asr_pipe = pipeline( task="automatic-speech-recognition", model="thennal/whisper-medium-ml", chunk_length_s=30, batch_size=8, generate_kwargs={"max_length": 448}, language="ml" ) transcription_result = asr_pipe(audio_data) print(transcription_result["text"])
内容的提问来源于stack exchange,提问作者user22347502
相关产品推荐
相关产品推荐

