import argparse import base64 import io import soundfile as sf import uvicorn from fastapi import FastAPI, Body app = FastAPI() from funasr_onnx import Paraformer model_dir = "damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx" model = Paraformer(model_dir, batch_size=1, quantize=True) async def recognition_onnx(waveform): result=model(waveform)[0]["preds"][0] return result @app.post("/api/asr") async def asr(item: dict = Body(...)): try: audio_bytes= base64.b64decode(bytes(item['wav_base64'], 'utf-8')) waveform, _ = sf.read(io.BytesIO(audio_bytes)) result=await recognition_onnx(waveform) ret = {"results": result, "code": 0} except: print('请求出错,这里是处理出错的') ret = {"results": '', "code": 1} return ret if __name__ == '__main__': parser = argparse.ArgumentParser(description='API Service') parser.add_argument('--listen', default='0.0.0.0', type=str, help='the network to listen') parser.add_argument('--port', default=8888, type=int, help='the port to listen') args = parser.parse_args() print('start...') print('server on:',args) uvicorn.run(app, host=args.listen, port=args.port)