grpc_main_client.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import grpc
  2. import json
  3. import time
  4. import asyncio
  5. import soundfile as sf
  6. import argparse
  7. from grpc_client import transcribe_audio_bytes
  8. from paraformer_pb2_grpc import ASRStub
  9. # send the audio data once
  10. async def grpc_rec(wav_scp, grpc_uri, asr_user, language):
  11. with grpc.insecure_channel(grpc_uri) as channel:
  12. stub = ASRStub(channel)
  13. for line in wav_scp:
  14. wav_file = line.split()[1]
  15. wav, _ = sf.read(wav_file, dtype='int16')
  16. b = time.time()
  17. response = transcribe_audio_bytes(stub, wav.tobytes(), user=asr_user, language=language, speaking=False, isEnd=False)
  18. resp = response.next()
  19. text = ''
  20. if 'decoding' == resp.action:
  21. resp = response.next()
  22. if 'finish' == resp.action:
  23. text = json.loads(resp.sentence)['text']
  24. response = transcribe_audio_bytes(stub, None, user=asr_user, language=language, speaking=False, isEnd=True)
  25. res= {'text': text, 'time': time.time() - b}
  26. print(res)
  27. async def test(args):
  28. wav_scp = open(args.wav_scp, "r").readlines()
  29. uri = '{}:{}'.format(args.host, args.port)
  30. res = await grpc_rec(wav_scp, uri, args.user_allowed, language = 'zh-CN')
  31. if __name__ == '__main__':
  32. parser = argparse.ArgumentParser()
  33. parser.add_argument("--host",
  34. type=str,
  35. default="127.0.0.1",
  36. required=False,
  37. help="grpc server host ip")
  38. parser.add_argument("--port",
  39. type=int,
  40. default=10108,
  41. required=False,
  42. help="grpc server port")
  43. parser.add_argument("--user_allowed",
  44. type=str,
  45. default="project1_user1",
  46. help="allowed user for grpc client")
  47. parser.add_argument("--sample_rate",
  48. type=int,
  49. default=16000,
  50. help="audio sample_rate from client")
  51. parser.add_argument("--wav_scp",
  52. type=str,
  53. required=True,
  54. help="audio wav scp")
  55. args = parser.parse_args()
  56. asyncio.run(test(args))