funasr_server_http.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import argparse
  2. import base64
  3. import io
  4. import soundfile as sf
  5. import uvicorn
  6. from fastapi import FastAPI, Body
  7. app = FastAPI()
  8. from funasr_onnx import Paraformer
  9. model_dir = "damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx"
  10. model = Paraformer(model_dir, batch_size=1, quantize=True)
  11. async def recognition_onnx(waveform):
  12. result=model(waveform)[0]["preds"][0]
  13. return result
  14. @app.post("/api/asr")
  15. async def asr(item: dict = Body(...)):
  16. try:
  17. audio_bytes= base64.b64decode(bytes(item['wav_base64'], 'utf-8'))
  18. waveform, _ = sf.read(io.BytesIO(audio_bytes))
  19. result=await recognition_onnx(waveform)
  20. ret = {"results": result, "code": 0}
  21. except:
  22. print('请求出错,这里是处理出错的')
  23. ret = {"results": '', "code": 1}
  24. return ret
  25. if __name__ == '__main__':
  26. parser = argparse.ArgumentParser(description='API Service')
  27. parser.add_argument('--listen', default='0.0.0.0', type=str, help='the network to listen')
  28. parser.add_argument('--port', default=8888, type=int, help='the port to listen')
  29. args = parser.parse_args()
  30. print('start...')
  31. print('server on:',args)
  32. uvicorn.run(app, host=args.listen, port=args.port)