zhifu gao
2024-04-24 861147c7308b91068ffa02724fdf74ee623a909e
runtime/python/grpc/grpc_main_client.py
@@ -1,8 +1,8 @@
'''
"""
  Copyright FunASR (https://github.com/alibaba-damo-academy/FunASR). All Rights
  Reserved. MIT License  (https://opensource.org/licenses/MIT)
  2023 by burkliu(刘柏基) liubaiji@xverse.cn
'''
"""
import logging
import argparse
@@ -13,9 +13,10 @@
import paraformer_pb2_grpc
from paraformer_pb2 import Request, WavFormat, DecodeMode
class GrpcClient:
  def __init__(self, wav_path, uri, mode):
    self.wav, self.sampling_rate = sf.read(wav_path, dtype='int16')
        self.wav, self.sampling_rate = sf.read(wav_path, dtype="int16")
    self.wav_format = WavFormat.pcm
    self.audio_chunk_duration = 1000 # ms
    self.audio_chunk_size = int(self.sampling_rate * self.audio_chunk_duration / 1000)
@@ -28,8 +29,11 @@
    
    # start request
    for respond in self.stub.Recognize(self.request_iterator()):
      logging.info("[receive] mode {}, text {}, is final {}".format(
        DecodeMode.Name(respond.mode), respond.text, respond.is_final))
            logging.info(
                "[receive] mode {}, text {}, is final {}".format(
                    DecodeMode.Name(respond.mode), respond.text, respond.is_final
                )
            )
  def request_iterator(self, mode = DecodeMode.two_pass):
    is_first_pack = True
@@ -50,28 +54,23 @@
        is_final = True
      request.is_final = is_final
      request.audio_data = audio_chunk.tobytes()
      logging.info("[request] audio_data len {}, is final {}".format(
        len(request.audio_data), request.is_final)) # int16 = 2bytes
            logging.info(
                "[request] audio_data len {}, is final {}".format(
                    len(request.audio_data), request.is_final
                )
            )  # int16 = 2bytes
      time.sleep(self.send_interval / 1000)
      yield request
if __name__ == '__main__':
if __name__ == "__main__":
  logging.basicConfig(filename="", format="%(asctime)s %(message)s", level=logging.INFO)
  parser = argparse.ArgumentParser()
  parser.add_argument("--host",
                      type=str,
                      default="127.0.0.1",
                      required=False,
                      help="grpc server host ip")
  parser.add_argument("--port",
                      type=int,
                      default=10100,
                      required=False,
                      help="grpc server port")
  parser.add_argument("--wav_path",
                      type=str,
                      required=True,
                      help="audio wav path")
    parser.add_argument(
        "--host", type=str, default="127.0.0.1", required=False, help="grpc server host ip"
    )
    parser.add_argument("--port", type=int, default=10100, required=False, help="grpc server port")
    parser.add_argument("--wav_path", type=str, required=True, help="audio wav path")
  args = parser.parse_args()
  for mode in [DecodeMode.offline, DecodeMode.online, DecodeMode.two_pass]:
@@ -79,6 +78,6 @@
    logging.info("[request] start requesting with mode {}".format(mode_name))
    st = time.time()
    uri = '{}:{}'.format(args.host, args.port)
        uri = "{}:{}".format(args.host, args.port)
    client = GrpcClient(args.wav_path, uri, mode)
    logging.info("mode {}, time pass: {}".format(mode_name, time.time() - st))