我的配置:WSL2 CentOS7.9

一,准备工作:

CentOS7.9系统

1)配置yum阿里云镜像

#下载阿里云基础源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

#下载阿里云EPEL源
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

#清理并重建yum缓存
yum clean all
yum makecache

二,更新Python

如果你使用anaconda等虚拟环境,可以跳过这一步

# 安装依赖
yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
# 创建目录
mkdir -p /usr/local/python3
#下载新版Python
wget -c https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz
# 解压
xz -d Python-3.9.9.tar.xz
tar -xvf Python-3.9.9.tar.xz
# 进入 Python-3.9.9 目录
cd Python-3.9.9
# 编译并安装
./configure --prefix=/usr/local/python3 && make && make install

三,更新gcc

gcc是linux常用的编译器工具,我们在后续安装FFmpeg时需要用到。实际上,系统可能自带gcc,但是版本过旧了,所以我们需要升级gcc。

1)安装SCL仓库

cat > /etc/yum.repos.d/CentOS-SCLo-scl.repo 

2)安装gcc11

yum -y install devtoolset-11

3)添加到环境变量

echo "scl enable devtoolset-11 bash" >> /etc/profile

4)检查gcc版本

mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-11/root/bin/g++ /usr/bin/g++
gcc --version
g++ --version

你也可以参考 这篇博客

四,安装新版nasm

yasm会更好,所以我们用nasm。

1)删除旧版nasm(如果有)

# 查看版本(未安装会提示 command not found)
nasm -v
# 若已装旧版,先卸载(避免冲突)
yum remove -y nasm

2)从官网下载新版nasm

wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.xz

3)解压并切换到nasm目录

# 解压源码包
tar -xvf nasm-2.16.01.tar.xz
# 进入解压后的目录
cd nasm-2.16.01

4)编译安装

./configure --prefix=/usr/local/nasm && make && make install

5)写入系统路径

# 将NASM路径写入系统全局配置文件
echo "export PATH=/usr/local/nasm/bin:\$PATH" >> /etc/profile
source /etc/profile

6)查看安装版本

nasm -v

五,安装FFmpeg

1)安装git,我们需要从仓库克隆

yum install git

2)克隆源码

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

3)切换到ffmpeg目录

cd ffmpeg

4)配置编译并安装

./configure && make && make install

编译或者安装不成功就是之前的前置有问题,检查一下下载的是不是新版,新版有没有启用。

六,安装whisper

1)利用pip安装whisper

pip install -U openai-whisper

2)检查安装

whisper -h

3)准备一个音频文件,我们来测试一下

#识别test_audio.mp3文件的文字,利用base模型,输出txt文件,识别语言为中文。
whisper test_audio.mp3 --model base --output_format txt --language chinese

因为我客户的设备没有显卡,所以这里没有配置GPU加速,识别会非常慢。如果你的设备有显卡,你可以参考网上的cuda安装教学利用GPU加速。你可以参考这篇博客

七,模型优化

当前这个模型还是太难用了,主要有以下几个问题需要解决才能用于生产环境:

①不宜用,我们需要图形化界面方便上传下载文件和调节参数

②该模型无法识别100m以上的音频文件(大概是20min时长的音频)

③识别效果差,方言适配度低

但是我们可以通过一个python程序解决这个问题。

1)图形化界面

首先是图形化界面的问题

我们可以利用Streamlit或者Flask利用网页实现图形化,也可以使用tkinter,但是tkinter不适用于纯命令行的系统。

Streamlit比Flask更好上手更易读,所以我们这里使用Flask

2)音频预处理和大文件识别

利用FFmpeg可以预处理音频让模型更好识别

分割大文件为若干个小文件,再将输出的文件黏结

我将在下一篇关于离线部署的博客上传这个文件

部分内容参考了 这篇博客