有把modelscope-funasr和kantts打包到docker的方法吗?

有把modelscope-funasr和kantts打包到docker的方法吗?每次都是在这里报错 50.22 Successfully built sox
50.22 Failed to build pysptk

50.23 ERROR: Could not build wheels for pysptk, which is required to install pyproject.toml-based projects

Dockerfile:84

82 | RUN pip install -U funasr modelscope
83 | RUN pip install ttsfrd -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
84 | >>> RUN pip install kantts -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
85 |

86 | RUN pip install jieba

ERROR: failed to solve: process "/bin/sh -c pip install kantts -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html" did not complete successfully: exit code: 1

展开
收起
三分钟热度的鱼 2024-05-05 14:14:07 141 分享 版权
阿里云 AI 助理回答

要将 modelscope-funasrkantts 打包到 Docker 中,您需要解决两个主要问题:依赖安装失败和 Dockerfile 的正确配置。以下是详细的解决方案:


1. 分析错误原因

根据报错信息:

ERROR: Could not build wheels for pysptk, which is required to install pyproject.toml-based projects

这表明在安装 pysptk 时,构建轮子(wheel)失败了。pysptk 是一个依赖 C++ 编译的 Python 包,通常需要系统中安装编译工具链(如 GCC、Make 等)以及相关的开发库。

此外,Docker 默认的基础镜像可能缺少这些工具链,导致安装失败。


2. 解决方案

步骤 1:选择合适的基础镜像

为了确保能够成功安装 pysptk 和其他依赖项,建议使用包含完整开发工具链的基础镜像。例如,可以选择基于 python:3.9-slimpython:3.9-buster 的镜像,它们提供了更完整的环境支持。

FROM python:3.9-buster

步骤 2:安装系统依赖

在安装 Python 包之前,先安装必要的系统依赖项。pysptk 需要以下依赖: - build-essential:提供 GCC 和 Make 工具。 - libsndfile1-dev:用于音频文件处理。 - libsamplerate0-dev:用于音频采样率转换。

在 Dockerfile 中添加以下命令:

RUN apt-get update && apt-get install -y \
    build-essential \
    libsndfile1-dev \
    libsamplerate0-dev \
    && rm -rf /var/lib/apt/lists/*

步骤 3:安装 Python 依赖

按照正确的顺序安装 Python 包,并确保使用 -f 参数指定 ModelScope 的自定义仓库地址。为了避免多次运行 pip install 命令,可以将所有依赖合并到一个 RUN 指令中,以减少镜像层数。

RUN pip install --upgrade pip && \
    pip install -U funasr modelscope ttsfrd kantts jieba \
    -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

步骤 4:验证安装

在 Dockerfile 中添加一条验证命令,确保所有依赖已正确安装:

RUN python -c "import funasr; import kantts; import ttsfrd; import jieba"

3. 完整的 Dockerfile 示例

以下是完整的 Dockerfile 示例,整合了上述所有步骤:

# 使用官方 Python 基础镜像
FROM python:3.9-buster

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    build-essential \
    libsndfile1-dev \
    libsamplerate0-dev \
    && rm -rf /var/lib/apt/lists/*

# 安装 Python 依赖
RUN pip install --upgrade pip && \
    pip install -U funasr modelscope ttsfrd kantts jieba \
    -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

# 验证安装
RUN python -c "import funasr; import kantts; import ttsfrd; import jieba"

# 设置工作目录
WORKDIR /app

# 复制应用代码到容器中
COPY . /app

# 启动命令(根据实际需求修改)
CMD ["python", "your_script.py"]

4. 构建和测试镜像

步骤 1:构建镜像

在包含 Dockerfile 的目录下运行以下命令:

docker build -t your-image-name:tag .

步骤 2:测试镜像

启动容器并验证是否正常运行:

docker run -it your-image-name:tag bash

进入容器后,运行以下命令检查依赖是否正确安装:

python -c "import funasr; import kantts; import ttsfrd; import jieba"

如果没有任何错误输出,则说明安装成功。


5. 常见问题及解决方法

问题 1:构建时间过长

由于 pysptk 需要从源码编译,可能会导致构建时间较长。可以通过以下方式优化: - 使用预编译的 pysptk 轮子文件(如果有)。 - 在本地构建好镜像后,上传到 Docker Registry,避免重复构建。

问题 2:网络问题导致依赖下载失败

如果在拉取依赖时遇到网络问题,可以配置阿里云的镜像加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hd1esep4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

通过以上步骤,您可以成功将 modelscope-funasrkantts 打包到 Docker 中,并解决 pysptk 构建失败的问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

包含命名实体识别、文本分类、分词、关系抽取、问答、推理、文本摘要、情感分析、机器翻译等多个领域

热门讨论

热门文章

还有其他疑问?
咨询AI助理