Chuẩn bị Môi Trường và Yêu Cầu Hệ Thống
Trước khi cài đặt dịch vụ nhận diện giọng nói Qwen3-ASR-0.6B, cần đảm bảo hệ thống đáp ứng các yêu cầu cơ bản.
- Hệ điều hành: Ubuntu 22.04 LTS
- NVIDIA GPU (tối thiểu 8GB VRAM)
- Bộ nhớ hệ thống: 16GB
- Dung lượng ổ cứng: 50GB
- Kết nối mạng ổn định
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip python3-venv git wget curl nvidia-cuda-toolkit
Cài Đặt NVIDIA Driver
Đảm bảo driver NVIDIA được cài đặt đúng cách để sử dụng tính năng tăng tốc GPU.
lspci | grep -i nvidia
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
sudo ubuntu-drivers autoinstall
sudo reboot
nvidia-smi
Cấu Hình CUDA và cuDNN
Qwen3-ASR-0.6B yêu cầu cấu hình môi trường CUDA chính xác.
wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
sudo sh cuda_12.2.2_535.104.05_linux.run
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
nvcc --version
Cài Đặt Dịch Vụ Qwen3-ASR-0.6B
Tạo thư mục dự án và thiết lập môi trường Python.
mkdir -p ~/qwen_service
cd ~/qwen_service
python3 -m venv env
source env/bin/activate
cat > requirements.txt << EOF
torch==2.1.0
torchaudio==2.1.0
fastapi==0.104.1
uvicorn==0.24.0
pydantic==2.5.0
aiofiles==23.2.1
python-multipart==0.0.6
requests==2.31.0
numpy==1.24.3
librosa==0.10.1
soundfile==0.12.1
EOF
pip install -r requirements.txt
Cấu Hình FastAPI và WebUI
Tạo ứng dụng FastAPI và giao diện WebUI.
mkdir -p app webui logs
# Tạo app/main.py
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import torch
import torchaudio
from pathlib import Path
import tempfile
import logging
from typing import Optional
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('logs/app.log'),
logging.StreamHandler()
]
)
app = FastAPI(title="Qwen3-ASR-0.6B Nhận Diện Giọng Nói")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/api/health")
async def health_check():
return {
"status": "healthy",
"model_loaded": True,
"gpu_available": torch.cuda.is_available(),
"gpu_memory": {
"allocated": round(torch.cuda.memory_allocated() / 1024**3, 2),
"cached": round(torch.cuda.memory_reserved() / 1024**3, 2)
}
}
@app.post("/api/transcribe")
async def transcribe_audio(audio_file: UploadFile = File(...), language: Optional[str] = None):
try:
return {
"text": "Nội dung văn bản đã nhận diện",
"language": language or "auto",
"status": "success"
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.post("/api/transcribe_url")
async def transcribe_from_url(audio_url: str, language: Optional[str] = None):
try:
return {
"text": "Nội dung văn bản từ URL",
"language": language or "auto",
"status": "success"
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
# Tạo webui/server.py
import http.server
import socketserver
import threading
class UiHandler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory='webui', **kwargs)
def start_ui_server():
PORT = 9090
with socketserver.TCPServer(("", PORT), UiHandler) as httpd:
print(f"WebUI server started on port {PORT}")
httpd.serve_forever()
if __name__ == "__main__":
start_ui_server()
Quản Lý Dịch Vụ với Supervisor
Cài đặt và cấu hình Supervisor để quản lý dịch vụ.
sudo apt install -y supervisor
sudo tee /etc/supervisor/conf.d/qwen_service.conf << EOF
[program:qwen_service]
command=/root/qwen_service/env/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000
directory=/root/qwen_service
autostart=true
autorestart=true
stderr_logfile=/root/qwen_service/logs/stderr.log
stdout_logfile=/root/qwen_service/logs/stdout.log
environment=PYTHONPATH="/root/qwen_service"
EOF
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start qwen_service
Thử nghiệm và Xác minh Dịch Vụ
Kiểm tra trạng thái và thử nghiệm chức năng của dịch vụ.
sudo supervisorctl status qwen_service
curl http://localhost:8000/api/health
Cấu Hình Firewall và Truy Cập Từ Bên Ngoài
Cấu hình firewall để cho phép truy cập vào dịch vụ.
sudo ufw allow 9090/tcp
sudo ufw allow 8000/tcp
sudo ufw reload