From 7e0652f8d5701e5952a1c81770de4e06e0019f9b Mon Sep 17 00:00:00 2001
From: 游雁 <zhifu.gzf@alibaba-inc.com>
Date: 星期四, 27 四月 2023 10:30:13 +0800
Subject: [PATCH] websocket
---
funasr/runtime/python/websocket/ASR_client.py | 38 ++++++++++++++++++++++++++++----------
1 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/funasr/runtime/python/websocket/ASR_client.py b/funasr/runtime/python/websocket/ASR_client.py
index cc0e7b6..b0abfc7 100644
--- a/funasr/runtime/python/websocket/ASR_client.py
+++ b/funasr/runtime/python/websocket/ASR_client.py
@@ -1,5 +1,4 @@
-
-# import websocket #鍖哄埆鏈嶅姟绔繖閲屾槸 websocket-client搴�
+# -*- encoding: utf-8 -*-
import time
import websockets
import asyncio
@@ -50,18 +49,21 @@
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
-
+ is_speaking = True
while True:
data = stream.read(CHUNK)
+ data = data.decode('ISO-8859-1')
+ message = json.dumps({"chunk": args.chunk_size, "is_speaking": is_speaking, "audio": data})
- voices.put(data)
+ voices.put(message)
#print(voices.qsize())
await asyncio.sleep(0.01)
# 鍏朵粬鍑芥暟鍙互閫氳繃璋冪敤send(data)鏉ュ彂閫佹暟鎹紝渚嬪锛�
async def record_from_scp():
+ import wave
global voices
if args.audio_in.endswith(".scp"):
f_scp = open(args.audio_in)
@@ -71,15 +73,31 @@
for wav in wavs:
wav_splits = wav.strip().split()
wav_path = wav_splits[1] if len(wav_splits) > 1 else wav_splits[0]
- bytes = open(wav_path, "rb")
- bytes = bytes.read()
-
+ # bytes_f = open(wav_path, "rb")
+ # bytes_data = bytes_f.read()
+ with wave.open(wav_path, "rb") as wav_file:
+ # 鑾峰彇闊抽鍙傛暟
+ params = wav_file.getparams()
+ # 鑾峰彇澶翠俊鎭殑闀垮害
+ # header_length = wav_file.getheaders()[0][1]
+ # 璇诲彇闊抽甯ф暟鎹紝璺宠繃澶翠俊鎭�
+ # wav_file.setpos(header_length)
+ frames = wav_file.readframes(wav_file.getnframes())
+
+ # 灏嗛煶棰戝抚鏁版嵁杞崲涓哄瓧鑺傜被鍨嬬殑鏁版嵁
+ audio_bytes = bytes(frames)
stride = int(args.chunk_size/1000*16000*2)
- chunk_num = (len(bytes)-1)//stride + 1
+ chunk_num = (len(audio_bytes)-1)//stride + 1
+ print(stride)
+ is_speaking = True
for i in range(chunk_num):
+ if i == chunk_num-1:
+ is_speaking = False
beg = i*stride
- data_chunk = bytes[beg:beg+stride]
- voices.put(data_chunk)
+ data = audio_bytes[beg:beg+stride]
+ data = data.decode('ISO-8859-1')
+ message = json.dumps({"chunk": args.chunk_size, "is_speaking": is_speaking, "audio": data})
+ voices.put(message)
# print("data_chunk: ", len(data_chunk))
# print(voices.qsize())
--
Gitblit v1.9.1