| | |
| | | import logging |
| | | import tracemalloc |
| | | import numpy as np |
| | | |
| | | import ssl |
| | | from parse_args import args |
| | | from modelscope.pipelines import pipeline |
| | | from modelscope.utils.constant import Tasks |
| | |
| | | if "is_speaking" in messagejson: |
| | | websocket.is_speaking = messagejson["is_speaking"] |
| | | websocket.param_dict_asr_online["is_final"] = not websocket.is_speaking |
| | | # need to fire engine manually if no data received any more |
| | | if not websocket.is_speaking: |
| | | await async_asr_online(websocket,b"") |
| | | if "chunk_interval" in messagejson: |
| | | websocket.chunk_interval=messagejson["chunk_interval"] |
| | | if "wav_name" in messagejson: |
| | |
| | | |
| | | |
| | | async def async_asr_online(websocket,audio_in): |
| | | if len(audio_in) > 0: |
| | | if len(audio_in) >=0: |
| | | audio_in = load_bytes(audio_in) |
| | | rec_result = inference_pipeline_asr_online(audio_in=audio_in, |
| | | param_dict=websocket.param_dict_asr_online) |
| | |
| | | await websocket.send(message) |
| | | |
| | | |
| | | if len(args.certfile)>0: |
| | | ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) |
| | | |
| | | start_server = websockets.serve(ws_serve, args.host, args.port, subprotocols=["binary"], ping_interval=None) |
| | | # Generate with Lets Encrypt, copied to this location, chown to current user and 400 permissions |
| | | ssl_cert = args.certfile |
| | | ssl_key = args.keyfile |
| | | |
| | | ssl_context.load_cert_chain(ssl_cert, keyfile=ssl_key) |
| | | start_server = websockets.serve(ws_serve, args.host, args.port, subprotocols=["binary"], ping_interval=None,ssl=ssl_context) |
| | | else: |
| | | start_server = websockets.serve(ws_serve, args.host, args.port, subprotocols=["binary"], ping_interval=None) |
| | | asyncio.get_event_loop().run_until_complete(start_server) |
| | | asyncio.get_event_loop().run_forever() |