From 28ccfbfc51068a663a80764e14074df5edf2b5ba Mon Sep 17 00:00:00 2001
From: kongdeqiang <kongdeqiang960204@163.com>
Date: 星期五, 13 三月 2026 17:41:41 +0800
Subject: [PATCH] 提交

---
 runtime/python/grpc/grpc_main_client.py |  125 ++++++++++++++++++++---------------------
 1 files changed, 62 insertions(+), 63 deletions(-)

diff --git a/runtime/python/grpc/grpc_main_client.py b/runtime/python/grpc/grpc_main_client.py
index 5c462a7..4606214 100644
--- a/runtime/python/grpc/grpc_main_client.py
+++ b/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,72 +13,71 @@
 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_format = WavFormat.pcm
-    self.audio_chunk_duration = 1000 # ms
-    self.audio_chunk_size = int(self.sampling_rate * self.audio_chunk_duration / 1000)
-    self.send_interval = 100 # ms
-    self.mode = mode
+    def __init__(self, wav_path, uri, mode):
+        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)
+        self.send_interval = 100  # ms
+        self.mode = mode
 
-    # connect to grpc server
-    channel = grpc.insecure_channel(uri)
-    self.stub = paraformer_pb2_grpc.ASRStub(channel)
-    
-    # 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))
+        # connect to grpc server
+        channel = grpc.insecure_channel(uri)
+        self.stub = paraformer_pb2_grpc.ASRStub(channel)
 
-  def request_iterator(self, mode = DecodeMode.two_pass):
-    is_first_pack = True
-    is_final = False
-    for start in range(0, len(self.wav), self.audio_chunk_size):
-      request = Request()
-      audio_chunk = self.wav[start : start + self.audio_chunk_size]
+        # 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
+                )
+            )
 
-      if is_first_pack:
-        is_first_pack = False
-        request.sampling_rate = self.sampling_rate
-        request.mode = self.mode
-        request.wav_format = self.wav_format
-        if request.mode == DecodeMode.two_pass or request.mode == DecodeMode.online:
-          request.chunk_size.extend([5, 10, 5])
+    def request_iterator(self, mode=DecodeMode.two_pass):
+        is_first_pack = True
+        is_final = False
+        for start in range(0, len(self.wav), self.audio_chunk_size):
+            request = Request()
+            audio_chunk = self.wav[start : start + self.audio_chunk_size]
 
-      if start + self.audio_chunk_size >= len(self.wav):
-        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
-      time.sleep(self.send_interval / 1000)
-      yield request
+            if is_first_pack:
+                is_first_pack = False
+                request.sampling_rate = self.sampling_rate
+                request.mode = self.mode
+                request.wav_format = self.wav_format
+                if request.mode == DecodeMode.two_pass or request.mode == DecodeMode.online:
+                    request.chunk_size.extend([5, 10, 5])
 
-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")
-  args = parser.parse_args()
+            if start + self.audio_chunk_size >= len(self.wav):
+                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
+            time.sleep(self.send_interval / 1000)
+            yield request
 
-  for mode in [DecodeMode.offline, DecodeMode.online, DecodeMode.two_pass]:
-    mode_name = DecodeMode.Name(mode)
-    logging.info("[request] start requesting with mode {}".format(mode_name))
 
-    st = time.time()
-    uri = '{}:{}'.format(args.host, args.port)
-    client = GrpcClient(args.wav_path, uri, mode)
-    logging.info("mode {}, time pass: {}".format(mode_name, time.time() - st))
+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")
+    args = parser.parse_args()
+
+    for mode in [DecodeMode.offline, DecodeMode.online, DecodeMode.two_pass]:
+        mode_name = DecodeMode.Name(mode)
+        logging.info("[request] start requesting with mode {}".format(mode_name))
+
+        st = time.time()
+        uri = "{}:{}".format(args.host, args.port)
+        client = GrpcClient(args.wav_path, uri, mode)
+        logging.info("mode {}, time pass: {}".format(mode_name, time.time() - st))

--
Gitblit v1.9.1