From c2f174cd7811a7a11e6227ecb371887f97fd66d3 Mon Sep 17 00:00:00 2001
From: 夜雨飘零 <yeyupiaoling@foxmail.com>
Date: 星期五, 02 二月 2024 23:06:13 +0800
Subject: [PATCH] Use ffmpeg read data (#1349)
---
runtime/python/http/server.py | 36 +++++++++++++++++++++++++++++++-----
1 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/runtime/python/http/server.py b/runtime/python/http/server.py
index 1aec37d..e4930a2 100644
--- a/runtime/python/http/server.py
+++ b/runtime/python/http/server.py
@@ -104,7 +104,8 @@
app = FastAPI(title="FunASR")
-param_dict = {}
+param_dict = {"sentence_timestamp": True, "batch_size_s": 300}
+
if args.hotword_path is not None and os.path.exists(args.hotword_path):
with open(args.hotword_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
@@ -121,10 +122,35 @@
async with aiofiles.open(audio_path, 'wb') as out_file:
content = await audio.read()
await out_file.write(content)
- rec_result = model.generate(input=audio_path, batch_size_s=300, **param_dict)
- ret = {"result": rec_result[0]['text'], "code": 0}
- logger.info(f'璇嗗埆缁撴灉锛歿ret}')
- return ret
+
+ try:
+ audio_bytes, _ = (
+ ffmpeg.input(audio_path, threads=0)
+ .output("-", format="s16le", acodec="pcm_s16le", ac=1, ar=16000)
+ .run(cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True)
+ )
+ except Exception as e:
+ logger.error(f'璇诲彇闊抽鏂囦欢鍙戠敓閿欒锛岄敊璇俊鎭細{e}')
+ return {"msg": "璇诲彇闊抽鏂囦欢鍙戠敓閿欒", "code": 1}
+ rec_results = model.generate(input=audio_bytes, is_final=True, **param_dict)
+ # 缁撴灉涓虹┖
+ if len(rec_results) == 0:
+ return {"text": "", "sentences": [], "code": 0}
+ elif len(rec_results) == 1:
+ # 瑙f瀽璇嗗埆缁撴灉
+ rec_result = rec_results[0]
+ text = rec_result['text']
+ sentences = []
+ for sentence in rec_result['sentence_info']:
+ # 姣忓彞璇濈殑鏃堕棿鎴�
+ sentences.append({'text': sentence['text'], 'start': sentence['start'], 'end': sentence['start']})
+ ret = {"text": text, "sentences": sentences, "code": 0}
+ logger.info(f'璇嗗埆缁撴灉锛歿ret}')
+ return ret
+ else:
+ logger.info(f'璇嗗埆缁撴灉锛歿rec_results}')
+ return {"msg": "鏈煡閿欒", "code": -1}
+
if __name__ == '__main__':
--
Gitblit v1.9.1