From 566eacad03a87fe14f25a3de81273f117509cbff Mon Sep 17 00:00:00 2001
From: 雾聪 <wucong.lyb@alibaba-inc.com>
Date: 星期三, 05 七月 2023 17:04:14 +0800
Subject: [PATCH] Merge branch 'main' of https://github.com/alibaba-damo-academy/FunASR into main
---
funasr/runtime/python/websocket/funasr_wss_client.py | 37 ++++++++----------
funasr/runtime/python/websocket/funasr_wss_server.py | 8 +---
funasr/runtime/docs/SDK_tutorial.md | 6 +-
funasr/runtime/docs/SDK_tutorial_zh.md | 20 +++++++--
funasr/runtime/docs/SDK_advanced_guide_offline.md | 2
funasr/runtime/docs/SDK_advanced_guide_offline_zh.md | 2
funasr/bin/asr_inference_launch.py | 3 +
7 files changed, 41 insertions(+), 37 deletions(-)
diff --git a/funasr/bin/asr_inference_launch.py b/funasr/bin/asr_inference_launch.py
index 8310791..c32357e 100644
--- a/funasr/bin/asr_inference_launch.py
+++ b/funasr/bin/asr_inference_launch.py
@@ -255,9 +255,10 @@
if param_dict is not None:
hotword_list_or_file = param_dict.get('hotword')
export_mode = param_dict.get("export_mode", False)
+ clas_scale = param_dict.get('clas_scale', 1.0)
else:
hotword_list_or_file = None
- clas_scale = param_dict.get('clas_scale', 1.0)
+ clas_scale = 1.0
if kwargs.get("device", None) == "cpu":
ngpu = 0
diff --git a/funasr/runtime/docs/SDK_advanced_guide_offline.md b/funasr/runtime/docs/SDK_advanced_guide_offline.md
index 6dd468d..4bbc69c 100644
--- a/funasr/runtime/docs/SDK_advanced_guide_offline.md
+++ b/funasr/runtime/docs/SDK_advanced_guide_offline.md
@@ -169,7 +169,7 @@
### python-client
```shell
-python wss_client_asr.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "./data/wav.scp" --send_without_sleep --output_dir "./results"
+python funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "./data/wav.scp" --send_without_sleep --output_dir "./results"
```
Introduction to command parameters:
diff --git a/funasr/runtime/docs/SDK_advanced_guide_offline_zh.md b/funasr/runtime/docs/SDK_advanced_guide_offline_zh.md
index 98b07cd..b32df1f 100644
--- a/funasr/runtime/docs/SDK_advanced_guide_offline_zh.md
+++ b/funasr/runtime/docs/SDK_advanced_guide_offline_zh.md
@@ -285,4 +285,4 @@
FUNASR_RESULT result=CTTransformerInfer(punc_hanlde, txt_str.c_str(), RASR_NONE, NULL);
// 鍏朵腑锛歱unc_hanlde涓篊TTransformerInit杩斿洖鍊硷紝txt_str涓烘枃鏈�
```
-浣跨敤绀轰緥璇﹁锛歨ttps://github.com/alibaba-damo-academy/FunASR/blob/main/funasr/runtime/onnxruntime/bin/funasr-onnx-offline-punc.cpp
+浣跨敤绀轰緥璇﹁锛歨ttps://github.com/alibaba-damo-academy/FunASR/blob/main/funasr/runtime/onnxruntime/bin/funasr-onnx-offline-punc.cpp
\ No newline at end of file
diff --git a/funasr/runtime/docs/SDK_tutorial.md b/funasr/runtime/docs/SDK_tutorial.md
index 0943466..c8f9971 100644
--- a/funasr/runtime/docs/SDK_tutorial.md
+++ b/funasr/runtime/docs/SDK_tutorial.md
@@ -275,7 +275,7 @@
Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
Requirement already satisfied: websockets in /usr/local/lib/python3.8/dist-packages (from -r /root/funasr_samples/python/requirements_client.txt (line 1)) (11.0.3)
- Run python3 /root/funasr_samples/python/wss_client_asr.py --host 127.0.0.1 --port 10095 --mode offline --audio_in /root/funasr_samples/audio/asr_example.wav --send_without_sleep --output_dir ./funasr_samples/python
+ Run python3 /root/funasr_samples/python/funasr_wss_client.py --host 127.0.0.1 --port 10095 --mode offline --audio_in /root/funasr_samples/audio/asr_example.wav --send_without_sleep --output_dir ./funasr_samples/python
...
...
@@ -284,7 +284,7 @@
Exception: sent 1000 (OK); then received 1000 (OK)
end
- If failed, you can try (python3 /root/funasr_samples/python/wss_client_asr.py --host 127.0.0.1 --port 10095 --mode offline --audio_in /root/funasr_samples/audio/asr_example.wav --send_without_sleep --output_dir ./funasr_samples/python) in your Shell.
+ If failed, you can try (python3 /root/funasr_samples/python/funasr_wss_client.py --host 127.0.0.1 --port 10095 --mode offline --audio_in /root/funasr_samples/audio/asr_example.wav --send_without_sleep --output_dir ./funasr_samples/python) in your Shell.
```
@@ -292,7 +292,7 @@
If you want to directly run the client for testing, you can refer to the following simple instructions, taking the Python version as an example:
```shell
-python3 wss_client_asr.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav" --send_without_sleep --output_dir "./results"
+python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav" --send_without_sleep --output_dir "./results"
```
Command parameter instructions:
diff --git a/funasr/runtime/docs/SDK_tutorial_zh.md b/funasr/runtime/docs/SDK_tutorial_zh.md
index d7638cc..9532326 100644
--- a/funasr/runtime/docs/SDK_tutorial_zh.md
+++ b/funasr/runtime/docs/SDK_tutorial_zh.md
@@ -37,7 +37,7 @@
鎴戜滑浠ython璇█瀹㈡埛绔负渚嬶紝杩涜璇存槑锛屾敮鎸佸绉嶉煶棰戞牸寮忚緭鍏ワ紙.wav, .pcm, .mp3绛夛級锛屼篃鏀寔瑙嗛杈撳叆(.mp4绛�)锛屼互鍙婂鏂囦欢鍒楄〃wav.scp杈撳叆锛屽叾浠栫増鏈鎴风璇峰弬鑰冩枃妗o紙[鐐瑰嚮姝ゅ](#瀹㈡埛绔敤娉曡瑙�)锛�
```shell
-python3 wss_client_asr.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav" --output_dir "./results"
+python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav"
```
## 瀹㈡埛绔敤娉曡瑙�
@@ -56,7 +56,7 @@
鑻ユ兂鐩存帴杩愯client杩涜娴嬭瘯锛屽彲鍙傝�冨涓嬬畝鏄撹鏄庯紝浠ython鐗堟湰涓轰緥锛�
```shell
-python3 wss_client_asr.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav" --output_dir "./results"
+python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav"
```
鍛戒护鍙傛暟璇存槑锛�
@@ -65,7 +65,8 @@
--port 10095 閮ㄧ讲绔彛鍙�
--mode offline琛ㄧず绂荤嚎鏂囦欢杞啓
--audio_in 闇�瑕佽繘琛岃浆鍐欑殑闊抽鏂囦欢锛屾敮鎸佹枃浠惰矾寰勶紝鏂囦欢鍒楄〃wav.scp
---output_dir 璇嗗埆缁撴灉淇濆瓨璺緞
+--thread_num 璁剧疆骞跺彂鍙戦�佺嚎绋嬫暟锛岄粯璁や负1
+--ssl 璁剧疆鏄惁寮�鍚痵sl璇佷功鏍¢獙锛岄粯璁�1寮�鍚紝璁剧疆涓�0鍏抽棴
```
### cpp-client
@@ -80,6 +81,8 @@
--server-ip 涓篎unASR runtime-SDK鏈嶅姟閮ㄧ讲鏈哄櫒ip锛岄粯璁や负鏈満ip锛�127.0.0.1锛夛紝濡傛灉client涓庢湇鍔′笉鍦ㄥ悓涓�鍙版湇鍔″櫒锛岄渶瑕佹敼涓洪儴缃叉満鍣╥p
--port 10095 閮ㄧ讲绔彛鍙�
--wav-path 闇�瑕佽繘琛岃浆鍐欑殑闊抽鏂囦欢锛屾敮鎸佹枃浠惰矾寰�
+--thread_num 璁剧疆骞跺彂鍙戦�佺嚎绋嬫暟锛岄粯璁や负1
+--ssl 璁剧疆鏄惁寮�鍚痵sl璇佷功鏍¢獙锛岄粯璁�1寮�鍚紝璁剧疆涓�0鍏抽棴
```
### Html缃戦〉鐗�
@@ -153,7 +156,7 @@
## 鏈嶅姟绔惎鍔ㄨ繃绋嬮厤缃瑙�
-##### 閫夋嫨FunASR Docker闀滃儚
+### 閫夋嫨FunASR Docker闀滃儚
鎺ㄨ崘閫夋嫨1)浣跨敤鎴戜滑鐨勬渶鏂板彂甯冪増闀滃儚锛屼篃鍙�夋嫨鍘嗗彶鐗堟湰銆�
```text
[1/5]
@@ -167,7 +170,7 @@
```
-##### 璁剧疆瀹夸富鏈烘彁渚涚粰FunASR鐨勭鍙�
+### 璁剧疆瀹夸富鏈烘彁渚涚粰FunASR鐨勭鍙�
璁剧疆鎻愪緵缁橠ocker鐨勫涓绘満绔彛锛岄粯璁や负10095銆傝淇濊瘉姝ょ鍙e彲鐢ㄣ��
```text
[2/5]
@@ -177,6 +180,13 @@
The port in Docker for FunASR server is 10095
```
+### 璁剧疆SSL
+
+榛樿寮�鍚疭SL鏍¢獙锛屽鏋滈渶瑕佸叧闂紝鍙互鍦ㄥ惎鍔ㄦ椂璁剧疆
+```shell
+sudo bash funasr-runtime-deploy-offline-cpu-zh.sh --ssl 0
+```
+
## 鑱旂郴鎴戜滑
鍦ㄦ偍浣跨敤杩囩▼涓紝濡傛灉閬囧埌闂锛屾杩庡姞鍏ョ敤鎴风兢杩涜鍙嶉
diff --git a/funasr/runtime/python/websocket/funasr_wss_client.py b/funasr/runtime/python/websocket/funasr_wss_client.py
index fc4d516..a3f5405 100644
--- a/funasr/runtime/python/websocket/funasr_wss_client.py
+++ b/funasr/runtime/python/websocket/funasr_wss_client.py
@@ -8,7 +8,7 @@
import json
import traceback
from multiprocessing import Process
-from funasr.fileio.datadir_writer import DatadirWriter
+# from funasr.fileio.datadir_writer import DatadirWriter
import logging
@@ -72,11 +72,13 @@
voices = Queue()
offline_msg_done=False
-
-ibest_writer = None
+
if args.output_dir is not None:
- writer = DatadirWriter(args.output_dir)
- ibest_writer = writer[f"1best_recog"]
+ # if os.path.exists(args.output_dir):
+ # os.remove(args.output_dir)
+
+ if not os.path.exists(args.output_dir):
+ os.makedirs(args.output_dir)
async def record_microphone():
@@ -186,6 +188,10 @@
text_print = ""
text_print_2pass_online = ""
text_print_2pass_offline = ""
+ if args.output_dir is not None:
+ ibest_writer = open(os.path.join(args.output_dir, "text.{}".format(id)), "w+", encoding="utf-8")
+ else:
+ ibest_writer = None
try:
while True:
@@ -193,13 +199,15 @@
meg = json.loads(meg)
wav_name = meg.get("wav_name", "demo")
text = meg["text"]
- if ibest_writer is not None:
- ibest_writer["text"][wav_name] = text
+ if ibest_writer is not None:
+ text_write_line = "{}\t{}\n".format(wav_name, text)
+ ibest_writer.write(text_write_line)
+
if meg["mode"] == "online":
text_print += "{}".format(text)
text_print = text_print[-args.words_max_print:]
- # os.system('clear')
+ os.system('clear')
print("\rpid" + str(id) + ": " + text_print)
elif meg["mode"] == "offline":
text_print += "{}".format(text)
@@ -216,7 +224,7 @@
text_print = text_print_2pass_offline + "{}".format(text)
text_print_2pass_offline += "{}".format(text)
text_print = text_print[-args.words_max_print:]
- # os.system('clear')
+ os.system('clear')
print("\rpid" + str(id) + ": " + text_print)
offline_msg_done=True
@@ -227,17 +235,6 @@
-async def print_messge():
- global websocket
- while True:
- try:
- meg = await websocket.recv()
- meg = json.loads(meg)
- print(meg)
- except Exception as e:
- print("Exception:", e)
- #traceback.print_exc()
- exit(0)
async def ws_client(id, chunk_begin, chunk_size):
if args.audio_in is None:
diff --git a/funasr/runtime/python/websocket/funasr_wss_server.py b/funasr/runtime/python/websocket/funasr_wss_server.py
index fd039ae..4929090 100644
--- a/funasr/runtime/python/websocket/funasr_wss_server.py
+++ b/funasr/runtime/python/websocket/funasr_wss_server.py
@@ -10,7 +10,6 @@
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.utils.logger import get_logger
-from funasr.runtime.python.onnxruntime.funasr_onnx.utils.frontend import load_bytes
tracemalloc.start()
@@ -233,8 +232,6 @@
async def async_asr(websocket, audio_in):
if len(audio_in) > 0:
# print(len(audio_in))
- audio_in = load_bytes(audio_in)
-
rec_result = inference_pipeline_asr(audio_in=audio_in,
param_dict=websocket.param_dict_asr)
# print(rec_result)
@@ -243,13 +240,12 @@
param_dict=websocket.param_dict_punc)
# print("offline", rec_result)
if 'text' in rec_result:
- message = json.dumps({"mode": "2pass-offline", "text": rec_result["text"], "wav_name": websocket.wav_name})
+ message = json.dumps({"mode": websocket.mode, "text": rec_result["text"], "wav_name": websocket.wav_name})
await websocket.send(message)
async def async_asr_online(websocket, audio_in):
if len(audio_in) > 0:
- audio_in = load_bytes(audio_in)
# print(websocket.param_dict_asr_online.get("is_final", False))
rec_result = inference_pipeline_asr_online(audio_in=audio_in,
param_dict=websocket.param_dict_asr_online)
@@ -260,7 +256,7 @@
if "text" in rec_result:
if rec_result["text"] != "sil" and rec_result["text"] != "waiting_for_more_voice":
# print("online", rec_result)
- message = json.dumps({"mode": "2pass-online", "text": rec_result["text"], "wav_name": websocket.wav_name})
+ message = json.dumps({"mode": websocket.mode, "text": rec_result["text"], "wav_name": websocket.wav_name})
await websocket.send(message)
if len(args.certfile)>0:
--
Gitblit v1.9.1