48 lines
1.2 KiB
Python
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)
|