You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python语音助手模块路径问题:model.pt文件找不到

问题描述

使用Python 3.11.6开发语音助手,项目结构包含:

  • Synthesizer包:内部有main.py和model.pt文件,main.py中Synthesizer类的download_model方法通过self.local_file="model.pt"指定模型文件路径
  • Core包:通过from Synthesizer.main import Synthesizer导入类,但运行Core时无法找到model.pt,将model.pt放入Core目录可正常运行,希望将所有资源归类到对应包内,同时需处理语音识别模型等其他外部文件的归类问题。
解决方案

核心是修改资源文件的路径引用方式,让程序始终从对应包的目录中查找资源,而非依赖运行时的工作目录:

1. 修改Synthesizer包内的路径逻辑

在Synthesizer/main.py中,替换硬编码的相对路径,改为基于当前脚本目录的绝对路径:

方法1:使用os.path模块

import os
import torch

class Synthesizer:
    def __init__(self):
        # 获取当前main.py所在目录,拼接model.pt路径
        self.local_file = os.path.join(os.path.dirname(__file__), "model.pt")

    def download_model(self, url="https://models.silero.ai/models/tts/ru/v4_ru.pt"):
        """
        Function for downloading voice model
        :param url: address for downloading voice model
        """
        if not os.path.isfile(self.local_file):
            torch.hub.download_url_to_file(url, self.local_file)

方法2:使用pathlib模块(Python 3.4+推荐)

from pathlib import Path
import torch

class Synthesizer:
    def __init__(self):
        # 获取当前main.py所在目录,拼接model.pt路径
        self.local_file = str(Path(__file__).parent / "model.pt")

    def download_model(self, url="https://models.silero.ai/models/tts/ru/v4_ru.pt"):
        """
        Function for downloading voice model
        :param url: address for downloading voice model
        """
        if not Path(self.local_file).exists():
            torch.hub.download_url_to_file(url, self.local_file)

2. 其他资源文件的统一处理逻辑

对于语音识别模型等其他包内资源,采用完全相同的方式:

  • 将资源文件放在对应功能的包目录下(比如语音识别模型放入ASR包内)
  • 在包内的代码中,通过__file__属性获取当前脚本所在目录,再拼接资源文件名,确保路径指向包内的资源文件

3. 优化包结构(可选)

为每个包添加__init__.py文件(即使Python 3.3+支持无文件包),明确包的结构,同时可以在__init__.py中导出核心类,简化导入语句:
比如在Synthesizer/__init__.py中添加:

from .main import Synthesizer

这样Core包中可以直接用from Synthesizer import Synthesizer导入,更简洁。

内容的提问来源于stack exchange,提问作者Илья Мирошниченко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 22:12:27