ctcdecode代码较早,安装非常费劲。安装只适合Linux安装不适合Windows。本文章为ctcdecode安装总结的一些经验,可能存在不适用的情况,欢迎大家补充。
方式一:使用pip安装
pip install ctcdecode
安装失败!!!!天坑
方式二:源码安装
step1:下载ctcdecode 的master分支的源码
# 此命令是官方推荐的克隆方式,可以递归地把需要的第三方源码包同时下载下来。但是因国内网络原因
# 该命令无法成功下载第三方源码包。第三包的源码的准备方式见下文。
git clone --recursive https://github.com/parlance/ctcdecode.git
# 下载master分支的源码使用如下命令
git clone https://github.com/parlance/ctcdecode.git
# 下载tag是1.0.2的源码,使用如下命令:
git clone --branch 1.0.2 https://github.com/parlance/ctcdecode.git
step2:下载第三方包的源码
(1)第三方包的源码的位置:在ctcdecode源码的third_party文件夹中。
(2)下载目录可见的第三方源码
①说明:这里目录可见是指在源码的third_party中可以发现的第三方包的名称。如下图的ThreadPool和kenlm(utf8不用专门另外下载)。
②下载ThreadPool和kenlm。(以ThreadPool为例)
a、根据上图的git链接,进入ThreadPool的git仓库
b、使用git clone将ThreadPool的源码下载至本地ctcdecode的third_party文件夹中。
# 示例
cd ctcdeocode/third_party
git clone https://github.com/progschj/ThreadPool.git
git clone https://github.com/kpu/kenlm.git
(3)下载目录不可见的第三方包
①说明:这里的目录不可见对应(2)中的目录可见。这些包会在编译ctcdecode源码的过程中以错误提示的形式给出,因此要认真阅读编译的报错信息。这些包大多被声明在源码中的build.py文件中。因此在错误提示中,build.py字符串之后,很快就是缺少的第三方包。这些包需要下载的位置,也是源码中的third_party。
Step3、编译源码并安装ctcdecode,在那个虚拟环境中使用,就在哪个虚拟环境中安装
cd ctcdecode
python -m pip install .
说明:源码编译和目录不可见的第三方包的安装可能要反复进行
错误一:安装成功后,使用会报错:ModuleNotFoundError: No module named 'ctcdecode._ext'
解决方法:不要再ctcdecode目录下使用,要在其他目录下使用