| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import grpc
- import json
- import time
- import asyncio
- import soundfile as sf
- import argparse
- from grpc_client import transcribe_audio_bytes
- from paraformer_pb2_grpc import ASRStub
- # send the audio data once
- async def grpc_rec(wav_scp, grpc_uri, asr_user, language):
- with grpc.insecure_channel(grpc_uri) as channel:
- stub = ASRStub(channel)
- for line in wav_scp:
- wav_file = line.split()[1]
- wav, _ = sf.read(wav_file, dtype='int16')
-
- b = time.time()
- response = transcribe_audio_bytes(stub, wav.tobytes(), user=asr_user, language=language, speaking=False, isEnd=False)
- resp = response.next()
- text = ''
- if 'decoding' == resp.action:
- resp = response.next()
- if 'finish' == resp.action:
- text = json.loads(resp.sentence)['text']
- response = transcribe_audio_bytes(stub, None, user=asr_user, language=language, speaking=False, isEnd=True)
- res= {'text': text, 'time': time.time() - b}
- print(res)
- async def test(args):
- wav_scp = open(args.wav_scp, "r").readlines()
- uri = '{}:{}'.format(args.host, args.port)
- res = await grpc_rec(wav_scp, uri, args.user_allowed, language = 'zh-CN')
- if __name__ == '__main__':
- 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=10108,
- required=False,
- help="grpc server port")
- parser.add_argument("--user_allowed",
- type=str,
- default="project1_user1",
- help="allowed user for grpc client")
- parser.add_argument("--sample_rate",
- type=int,
- default=16000,
- help="audio sample_rate from client")
- parser.add_argument("--wav_scp",
- type=str,
- required=True,
- help="audio wav scp")
- args = parser.parse_args()
-
- asyncio.run(test(args))
|