安装whisper
一、国产系统部署(麒麟)
1.先确认 Python 环境:
bash
# 查看 Python 版本(需要 3.8+) python3 --version # 查看 pip3 是否已安装 pip3 --version如果显示 -bash: pip3: command not found,先安装 pip3:
bash
sudo yum install -y python3-pip2 升级 Python 3.8+
1.检查系统架构(重要)
首先确认你的系统架构,这会影响后续下载哪个源码包:
bash
uname -m
输出可能是:
x86_64:Intel/AMD 64位架构aarch64:ARM 64位架构(飞腾、鲲鹏处理器)
本系统是x86_64
2.安装编译依赖下载 Python 3.8 源码解压并编译安装
# 1. 安装编译依赖-说明:这些依赖确保 Python 编译后能正常使用 pip、SSL、压缩等功能。 sudo yum install -y gcc make zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel xz-devel wget # 2. 下载源码 cd /usr/local/src sudo wget https://www.python.org/ftp/python/3.8.18/Python-3.8.18.tgz # 3. 解压并编译 sudo tar -xzf Python-3.8.18.tgz cd Python-3.8.18 sudo ./configure --prefix=/usr/local/python3.8 --enable-optimizations sudo make -j$(nproc) sudo make altinstall # 4. 创建软链接 sudo ln -sf /usr/local/python3.8/bin/python3.8 /usr/bin/python3.8 sudo ln -sf /usr/local/python3.8/bin/pip3.8 /usr/bin/pip3.8 # 5. 验证 python3.8 --version为什么用altinstall? 这样安装后,Python 3.8 的可执行文件是/usr/local/python3.8/bin/python3.8,不会覆盖系统自带的python3(可能是 3.7),避免破坏系统工具。
⚠️ 注意:切换默认 python3 可能会影响依赖 Python 3.7 的系统工具(如 yum)。建议保留系统默认,使用 python3.8 命令专门运行 FunASR。3. 安装依赖
安装 ffmpeg(解决音频处理问题)
# 安装 ffmpeg(解决音频处理问题) yum install ffmpeg -y # 使用 python3.8 对应的 pip 配置清华源 pip3.8 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 安装依赖。执行以下命令:
bash
# 安装基础依赖 pip3.8 install numpy # 安装 PyTorch(Whisper 依赖) pip3.8 install torch # 安装 Whisper pip3.8 install openai-whisper # 安装繁简转换工具(可选) pip3.8 install opencc-python-reimplemented如果你希望快速安装所有依赖,可以一次性安装:
bash
pip3.8 install numpy torch openai-whisper opencc-python-reimplemented注意:
- Whisper medium 模型大约需要 1.5GB 磁盘空间,首次运行时会自动下载
建议使用虚拟环境避免包冲突:bash
python3.8 -m venv whisper-env source whisper-env/bin/activate # 激活虚拟环境 pip3.8 install numpy torch openai-whisper opencc-python-reimplemented 完成后退出环境 deactivate4.安装 whisper
# 使用 python3.8 安装 python3.8 -m pip install openai-whisperbash

5. 创建服务
# 创建服务目录
mkdir -p ~/whisper-server
cd ~/whisper-server
bash
cat > whisper_https.py << 'EOF' #!/usr/bin/env python3 import json import tempfile import os from http.server import HTTPServer, BaseHTTPRequestHandler import cgi import sys print("正在加载 Whisper...") sys.stdout.flush() try: import whisper print("Whisper 导入成功") print("正在加载模型...") model = whisper.load_model("base") print("模型加载完成!") except Exception as e: print(f"加载失败: {e}") sys.exit(1) class Handler(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/health': self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(json.dumps({"status": "ok"}).encode()) else: self.send_response(404) self.end_headers() def do_POST(self): if self.path == '/recognition': try: form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD': 'POST'} ) if 'audio' not in form: self.send_error(400, "No audio file") return file_item = form['audio'] with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp: tmp.write(file_item.file.read()) tmp_path = tmp.name # 识别 result = model.transcribe(tmp_path, language="zh") os.unlink(tmp_path) self.send_response(200) self.send_header('Content-type', 'application/json') self.end_headers() response = json.dumps({"code": 0, "text": result["text"]}) self.wfile.write(response.encode()) except Exception as e: self.send_response(500) self.end_headers() self.wfile.write(json.dumps({"code": 1, "msg": str(e)}).encode()) else: self.send_response(404) self.end_headers() if __name__ == "__main__": port = 8000 server = HTTPServer(('0.0.0.0', port), Handler) print(f"✅ HTTP 服务启动成功!") print(f"📍 地址: http://0.0.0.0:{port}") print(f"✅ 健康检查: http://localhost:{port}/health") print(f"✅ 识别接口: POST http://localhost:{port}/recognition") print("\n按 Ctrl+C 停止服务") sys.stdout.flush() server.serve_forever() EOF python3 whisper_https.py