如何在Elixir Bumblebee中检测或切换Whisper的语言
Bumblebee中Whisper模型的语言检测与切换方案
手动指定输入语言
Whisper多语言模型支持通过参数直接指定目标语言,只需在初始化语音转写服务时添加:language选项,传入对应ISO 639-1语言代码即可:
serving = Bumblebee.Audio.speech_to_text(model_info, featurizer, tokenizer, generation_config, compile: [batch_size: 10], defn_options: [compiler: EXLA], # 指定中文,英文用"en",西班牙语用"es"等 language: "zh" )
自动检测输入语言
你当前使用的openai/whisper-medium是多语言模型,支持自动检测输入音频的语言。只需调整生成配置,将language设为nil,模型会自动完成语言检测并转写:
# 修改生成配置,开启自动语言检测 generation_config = Bumblebee.configure(generation_config, language: nil, task: :transcribe) serving = Bumblebee.Audio.speech_to_text(model_info, featurizer, tokenizer, generation_config, compile: [batch_size: 10], defn_options: [compiler: EXLA] )
补充注意事项
- 确认使用的是多语言模型:OpenAI Whisper模型中,后缀带
.en的是英文专属模型(如openai/whisper-medium.en),不带后缀的才是多语言模型,你当前的选型符合要求。 - 若需获取检测到的语言标识,
Bumblebee.Audio.speech_to_text的高层封装未直接返回该信息。如果需要细粒度控制,可手动构建模型前向传播逻辑,提取语言检测分支的输出。
你的原始代码(格式化后)
# Very basic example {:ok, model_info} = Bumblebee.load_model({:hf, "openai/whisper-medium"}) {:ok, featurizer} = Bumblebee.load_featurizer({:hf, "openai/whisper-medium"}) {:ok, tokenizer} = Bumblebee.load_tokenizer({:hf, "openai/whisper-medium"}) {:ok, generation_config} = Bumblebee.load_generation_config({:hf, "openai/whisper-medium"}) serving = Bumblebee.Audio.speech_to_text(model_info, featurizer, tokenizer, generation_config, compile: [batch_size: 10], defn_options: [compiler: EXLA] ) # And then audio = Nx.from_binary(binary, :f32) task = Task.async(fn -> Nx.Serving.batched_run(WonderJournalPlayground.WhisperTask, audio) end)
内容的提问来源于stack exchange,提问作者Ole Spaarmann
相关产品推荐
相关产品推荐

