test/app/api/v1/websocket_asr.py

48 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
"""WebSocket ASR API routes."""
import logging
import time
import uuid
from typing import Optional
from fastapi import APIRouter, WebSocket
from ...services.qwen3_websocket_asr import Qwen3ASRService
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/ws/v1/asr", tags=["WebSocket ASR"])
@router.websocket("/funasr")
async def funasr_websocket(websocket: WebSocket) -> None:
await websocket.accept()
task_id = f"deprecated_funasr_ws_{int(time.time())}_{id(websocket)}"
try:
await websocket.send_json(
{
"type": "error",
"task_id": task_id,
"code": "FUNASR_REALTIME_REMOVED",
"message": "FunASR/Paraformer realtime websocket has been removed. Use /ws/v1/asr/qwen instead.",
}
)
except Exception:
pass
finally:
await websocket.close(code=1008, reason="Use /ws/v1/asr/qwen")
_qwen3_service = Qwen3ASRService()
@router.websocket("")
@router.websocket("/qwen")
async def qwen_asr_websocket(
websocket: WebSocket,
task_id: Optional[str] = None,
) -> None:
if task_id is None:
task_id = str(uuid.uuid4())[:8]
await _qwen3_service.handle_connection(websocket, task_id)