开发阶段
- 拉取容器,对于国内用户,可以换南京大学镜像。
docker pull ghcr.io/ggerganov/whisper.cpp:main
# 国内镜像
docker pull ghcr.nju.edu.cn/ggerganov/whisper.cpp:main
docker tag ghcr.nju.edu.cn/ggerganov/whisper.cpp:main ghcr.io/ggerganov/whisper.cpp:main
- 创建一个模型路径,用于后面将模型放到此处
mkdir model_files
- 创建一个开发容器
docker run -it -d \
-p 9080:8080 \
-v ./model_files:/app/model_files \
--name whisper_cpp_dev \
ghcr.io/ggerganov/whisper.cpp:main \
/bin/bash
- 进入容器
docker exec -it whisper_cpp_dev /bin/bash
- 下载官方转换好的ggml模型,得给文件换个源
cd /app/models
sed -i 's#https://huggingface.co#https://hf-mirror.com#g' ./download-ggml-model.sh
./download-ggml-model.sh base
- 关于支持的文件,可以从这里查看。huggingface链接
- 下载好的文件在当前/app/models目录下,咱们可以将其放到我们刚刚映射的目录
mv /app/models/ggml-base.bin /app/model_files/ggml-base.bin
- 进入二进制执行目录
cd /app/build/bin
- 执行
whisper-server
./whisper-server -m /app/model_files/ggml-base.bin --host 0.0.0.0 --language auto --convert
-m
选择模型路径--language auto
即自动选择语言--convert
将所有音频都转成WAV格式,这样的话,你就可以将一些视频文件也传输上去了。- 打开你的http://[你的IP]:9080,然后上传文件,输出格式选择text,你就可以看到输出的内容了。不过默认输出结果是英文。
- 拿CPU部署(服务默认是4线程),测试了一下哆啦A梦第一集(视频长度:429秒)
类型 | 模型磁盘占用 | 推理时间(秒) | 识别比 | 大概准确率 | 备注 |
---|
base | 142 MiB | 29.62 | 1:14 | 85% | |
small | 466 MiB | 84 | 1:5 | 86% | |
large-v3-turbo-q5_0 | 547 MiB | 636 | 1:0.67 | 90% | 识别结果是繁体中文 |
GPU容器-开发阶段
- 拉取容器
docker pull ghcr.io/ggerganov/whisper.cpp:main-cuda
# 国内镜像
docker pull ghcr.nju.edu.cn/ggerganov/whisper.cpp:main-cuda
docker tag ghcr.nju.edu.cn/ggerganov/whisper.cpp:main-cuda ghcr.io/ggerganov/whisper.cpp:main-cuda
- 运行容器
docker run --gpus 'all' \
-d \
-it \
-p 8080:8080 \
--ipc=host \
--ulimit memlock=-1 \
--restart=always \
--ulimit stack=67108864 \
-e TZ=Asia/Shanghai \
-e LD_LIBRARY_PATH="" \
--restart=always \
-v ./model_files:/app/model_files \
--name whisper_cpp_dev \
ghcr.io/ggerganov/whisper.cpp:main-cuda /bin/bash
- 进入容器
docker exec -it whisper_cpp_dev /bin/bash
- 执行server
./server -m /app/model_files/ggml-large-v2-q5_0.bin --host 0.0.0.0 --language auto --convert
- 报错,提示:`ggml_cuda_init: failed to initialize CUDA: system has unsupported display driver / cuda driver combination
` - 查看issue,目测是dockerfile中
LD_LIBRARY_PATH
定义导致异常,回到第二步,我们加上一个-e LD_LIBRARY_PATH=""
- 测试结果(Nvidia RTX 4080),测试了一下哆啦A梦第一集(视频长度:429秒)
类型 | 模型磁盘占用 | 推理时间(秒) | 识别比 | 大概准确率 | 备注 |
---|
large-v2-q5_0 | 1.1 GiB | 14.39 | 1: 30 | 91% | 歌曲部分貌似被识别成了繁体 |
large-v2-q8_0 | 1.5 GiB | 13.18 | 1: 32.5 | 91% | 歌曲部分貌似被识别成了繁体 |
large-v2 | 2.9 GiB | 17.5 | 1: 24.5 | 91% | 歌曲部分貌似被识别成了繁体 |
large-v3-turbo-q5_0 | 547 MiB | 6.69 | 1: 64 | 85% | 歌曲部分貌似被识别成了繁体,小概率幻觉重复 |
large-v3-turbo-q8_0 | 834 MiB | 7.56 | 1: 57 | 85% | 歌曲部分貌似被识别成了繁体,小概率幻觉重复 |
large-v3-turbo | 1.5 GiB | 7.32 | 1: 58.6 | 91% | 全变成了繁体了,部分乱码 |
large-v3-q5_0 | 1.1 GiB | / | | 70% | 出现了幻觉,较多重复输出 |
large-v3 | 2.9 GiB | / | | 50% | 出现了幻觉,超多重复输出 |
- 综合来看,目前用
large-v2-q8_0
性价比更高一些。