简介:本文详细解析FunASR语音转文字工具的本地部署与API接口搭建流程,涵盖环境准备、模型加载、接口开发及优化策略,助力开发者快速构建高效语音识别服务。
随着人工智能技术的快速发展,语音转文字(ASR)已成为智能交互、会议记录、内容创作等领域的核心需求。FunASR作为一款开源的语音识别工具包,凭借其高精度、低延迟和灵活部署的特点,受到开发者广泛关注。本文将围绕FunASR语音转文字本地部署与API接口开发展开,提供从环境搭建到服务上线的全流程指南,帮助开发者快速构建高效、稳定的语音识别服务。
FunASR支持Linux和Windows系统,推荐使用Ubuntu 20.04+或Windows 10/11,需配备NVIDIA GPU(CUDA 11.x及以上)以加速推理。内存建议不低于16GB,硬盘空间需预留50GB以上用于模型和数据存储。
conda create -n funasr_env python=3.8conda activate funasr_env
pip install funasr torch torchvision torchaudiopip install onnxruntime-gpu # 若使用CPU推理
FunASR提供预训练模型(如Paraformer、Conformer),可通过以下步骤加载:
paraformer-zh-cn-16k-common.onnx)。funasr/conf/model.yaml,指定模型路径和参数:
model_dir: ./models/paraformer-zh-cn-16k-commondevice: cuda # 或cpu
from funasr import AutoModelmodel = AutoModel.from_pretrained("./models/paraformer-zh-cn-16k-common", device="cuda")
使用funasr/bin/inference_asr.py进行单文件测试:
python inference_asr.py \--model_path ./models/paraformer-zh-cn-16k-common \--audio_path ./test.wav \--output_path ./result.txt
输出结果包含时间戳和识别文本,验证模型准确性。
创建Flask应用:
from flask import Flask, request, jsonifyfrom funasr import AutoModelapp = Flask(__name__)model = AutoModel.from_pretrained("./models/paraformer-zh-cn-16k-common", device="cuda")@app.route('/asr', methods=['POST'])def asr():if 'file' not in request.files:return jsonify({"error": "No audio file"}), 400file = request.files['file']audio_path = "./temp.wav"file.save(audio_path)result = model.transcribe(audio_path)return jsonify({"text": result})
export FLASK_APP=app.pyflask run --host=0.0.0.0 --port=5000
对于高并发场景,推荐使用FastAPI:
pip install fastapi uvicorn
定义API路由:
from fastapi import FastAPI, UploadFile, Filefrom funasr import AutoModelapp = FastAPI()model = AutoModel.from_pretrained("./models/paraformer-zh-cn-16k-common", device="cuda")@app.post("/asr")async def asr(file: UploadFile = File(...)):contents = await file.read()with open("./temp.wav", "wb") as f:f.write(contents)result = model.transcribe("./temp.wav")return {"text": result}
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
FROM python:3.8-slimWORKDIR /appCOPY requirements.txt .RUN pip install -r requirements.txtCOPY . .CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
docker build -t funasr-api .docker run -d -p 8000:8000 --gpus all funasr-api
使用ONNX Runtime的量化功能减少模型体积:
import onnxruntimefrom onnxruntime.quantization import QuantType, quantize_dynamicquantize_dynamic(model_input="./models/paraformer.onnx",model_output="./models/paraformer_quant.onnx",weight_type=QuantType.QUINT8)
batch_size或使用torch.cuda.empty_cache()释放内存。FunASR的本地部署与API接口开发为开发者提供了灵活、高效的语音识别解决方案。通过本文的指南,读者可快速完成环境搭建、模型加载和接口开发,并结合性能优化策略构建生产级服务。未来,随着模型轻量化和边缘计算的普及,FunASR有望在物联网、移动端等场景发挥更大价值。
附录:完整代码与模型下载链接见官方GitHub仓库(https://github.com/alibaba-damo-academy/FunASR)。