modelscope-funasr报错,如何解决?omegaconf.errors.UnsupportedValueType: FunASRPipeline: GenericFunASR: Value 'CharTokenizer' is not a supported primitive type
full_key: tokenizer
object_type=dict
根据您提供的报错信息 omegaconf.errors.UnsupportedValueType: FunASRPipeline: GenericFunASR: Value 'CharTokenizer' is not a supported primitive type
,这表明在使用 ModelScope-FunASR 时,配置文件中可能存在不兼容的类型定义,特别是与 tokenizer
相关的部分。以下是解决该问题的详细步骤和建议:
确保您安装的 modelscope
和 funasr
版本是最新的,并且与代码库的要求一致。可以通过以下命令升级相关依赖:
pip install -U modelscope funasr
如果问题仍然存在,请检查是否需要特定版本的 omegaconf
,因为 omegaconf
是用于解析配置的核心库。可以尝试固定版本:
pip install omegaconf==2.3.0
报错信息中提到 tokenizer
的值为 CharTokenizer
,但其类型不被支持。这可能是由于配置文件中的 tokenizer
定义不符合预期格式。请按照以下步骤检查和修复配置文件:
通常,ModelScope-FunASR 的配置文件位于代码仓库的 config
或 examples
文件夹中。找到与您当前任务相关的配置文件(例如 config.yaml
)。
tokenizer
定义打开配置文件,找到 tokenizer
的定义部分。确保其格式符合以下要求:
tokenizer:
type: CharTokenizer
params:
vocab_file: "path/to/vocab.txt"
type
应为字符串类型,表示分词器的类型。params
是一个字典,包含分词器所需的参数(如词汇表路径)。如果 tokenizer
被直接定义为 CharTokenizer
,请将其改为上述嵌套结构。
如果您是通过代码动态加载模型,请确保在代码中正确传递了配置参数。例如:
from modelscope.pipelines import pipeline
# 加载 FunASR 管道
pipeline = pipeline(
task="auto-speech-recognition",
model="damo/speech_funasr_model", # 替换为实际模型 ID
config_file="path/to/config.yaml" # 指定配置文件路径
)
确保 config_file
参数指向正确的配置文件路径。
如果上述方法无效,可能是代码仓库中的某些文件损坏或未更新。建议重新克隆代码仓库并重新安装依赖:
# 删除旧仓库
rm -rf FunASR
# 克隆最新代码
git clone https://github.com/alibaba-damo-academy/FunASR.git
cd FunASR
# 安装依赖
pip install -r requirements.txt
pip install funasr[clip]
根据知识库资料,FunASR 需要 Python 3.7 或更高版本,并且依赖 PyTorch 等库。请确保您的环境满足以下要求: - Python 版本:python --version
输出应为 3.7 或更高。 - PyTorch 版本:建议安装最新稳定版:
pip install torch torchvision torchaudio
如果以上方法均无法解决问题,建议将完整的错误日志和配置文件提交至 ModelScope 社区或钉钉用户群(钉钉群号:64970014484)寻求帮助。
通过上述步骤,您可以逐步排查并解决 omegaconf.errors.UnsupportedValueType
报错问题。重点在于: 1. 升级依赖版本,确保兼容性。 2. 修正配置文件,确保 tokenizer
定义符合预期格式。 3. 验证环境配置,确保 Python 和 PyTorch 版本满足要求。
希望这些方法能够帮助您解决问题!您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。