asr_farhang/README.md
2025-11-17 15:53:44 +03:30

1.6 KiB

ASR SERVICE

A FASTAPI client for receieving audio data from font and sending audio to a Triton ASR service using WebSocket streaming. It yields real-time transcription results as JSON-like events.

Test

import asyncio
import websockets
import json

AUDIO_FILE = "./data/khabar_1_5.wav"
WS_URL = "ws://127.0.0.1:7200/asr"

async def send_audio():
    async with websockets.connect(WS_URL) as ws:
        print("Connected to ASR WebSocket")

        # Send audio in chunks
        with open(AUDIO_FILE, "rb") as f:
            chunk_size = 100000
            while chunk := f.read(chunk_size):
                await ws.send(chunk)

        # Tell server no more audio is coming
        await ws.send(json.dumps({"eof": True}))

        # Receive results
        try:
            while True:
                message = await ws.recv()
                data = json.loads(message)
                print("Received:", data)

        except websockets.exceptions.ConnectionClosed:
            print("WebSocket closed by server")

asyncio.run(send_audio())

How to run

SET ENVIRONMENT

1-create a file .env and set TRITON_URL

1-DEVELOPMENT

Run the system : Uvicorn and Fastapi

.venv/bin/uvicorn src.main:app  --host 0.0.0.0 --port 7200

2-DEPLOYMENT

Docker Build

docker build -t asr_farhang:latest .

Docker Run (port = 7200)

docker run -d --network host --restart unless-stopped asr_farhang:latest

there was a problem in installing ast_client package : pip couldnot find a versaion for perf-analyzer==2.59.1 : so i removed it