PaddleSpeech适配昇腾开源验证任务心得
一、背景介绍
PaddleSpeech是飞桨推出的一个开源语音处理工具包,提供了完整的端到端语音处理解决方案,包括语音识别(ASR)、语音合成(TTS)、语音增强和语音翻译等功能。本文将介绍在华为的Ascend NPU上配置PaddleSpeech 项目的过程中遇到的问题和解决方案,以及心得总结。
二、资源清单
Kunpeng CPU:
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
弹性云服务器 |
鲲鹏计算 |
鲲鹏通用计算增强型kc1.large.4 |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0 64bit for kAi2p with HDK 23.0.1 and CANN 7.0.0.1 RC |
Ascend NPU:
产品名称 |
芯片类型 |
CANN版本 |
驱动版本 |
操作系统 |
堡垒机 |
昇腾910B3 |
CANN 7.0.1.5 |
23.0.6 |
Huawei Cloud EulerOS 2.0 |
三、遇到的问题和解决方案
具体步骤详见:https://blog.csdn.net/qq_54958500/article/details/143891770
验证DEMO地址:https://gitcode.com/can_glan/opensource-demo-PaddleSpeech-241207/overview
问题1:依赖包版本失效
在尝试按照README和setup.py文件中给出的指导进行环境配置时,遇到了多个依赖包版本失效或不再可用的问题。例如,PaddlePaddle版本2.5.1已无法使用,opencc==1.1.6也找不到匹配的发行版。
解决方案:
更换为支持的PaddlePaddle版本(如3.0.0b2以适配昇腾NPU)。
对于setup.py中的依赖,移除具体的版本号限制,改为不指定版本来避免版本冲突。
问题2:sox包无法通过conda渠道安装
在创建环境时,sox无法从当前conda渠道找到合适的版本。
解决方案:
使用pip安装sox:pip install sox
问题3:编译过程中出现的Python版本要求错误
某些依赖项要求Python版本>=3.10,但环境中使用的是Python 3.9。
解决方案:
修改setup.py文件内的依赖声明,移除或调整版本要求。
问题4:缺少ccache导致警告
编译过程中提示没有找到ccache工具。
解决方案:
安装ccache以提高编译速度:conda install -c conda-forge ccache
问题5:setuptools替换distutils的警告
当编译项目时,出现了关于setuptools正在替换distutils的警告信息。
解决方案:
更新setuptools到最新版本:python -m pip install --upgrade setuptools
问题6:paddlespeech_ctcdecoders找不到匹配的版本
尝试安装特定版本的paddlespeech_ctcdecoders时,pip无法找到合适的版本。
解决方案:
根据反馈,该包并非必须,可以通过手动编译third_party/ctc_decoders目录下的代码来解决问题。
问题7:部署至昇腾NPU时遇到的pad模式不支持问题
运行OCR代码时,因昇腾NPU仅支持constant模式的pad操作而报错。
解决方案
修改源码,在检测到设备是NPU时,将pad操作的mode参数设置为constant。
四、验证结果
- DEMO内容:使用下载或自己创建的音频文件作为输入音频,对输入音频进行语音识别,并通过gradio构建一个简单的Web应用界面展示DEMO效果。
Kunpeng CPU:
前端链接: http://113.44.138.39:7863/
Ascend NPU:
五、心得总结
在整个PaddleSpeech的环境配置过程中,最大的挑战在于依赖管理以及版本兼容性。由于官方文档存在滞后性,实际操作中需要根据Issues反馈和自身遇到的具体问题灵活调整。面对依赖项版本冲突或缺失的情况,移除版本限制、查找替代方案或直接修改源代码都是有效的解决策略。此外,对于昇腾NPU的支持,可能还需要对框架本身做出一定修改以确保兼容性和性能优化。通过这些实践,不仅加深了对PaddleSpeech项目的理解,也积累了处理类似开源项目安装配置难题的经验。
- 点赞
- 收藏
- 关注作者
评论(0)