From 94de39dde2e616a01683c518023d0fab72b4e103 Mon Sep 17 00:00:00 2001
From: 游雁 <zhifu.gzf@alibaba-inc.com>
Date: 星期一, 19 二月 2024 22:21:50 +0800
Subject: [PATCH] aishell example
---
runtime/python/http/server.py | 34 +++++++++++++++++++++++++++++-----
1 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/runtime/python/http/server.py b/runtime/python/http/server.py
index 1aec37d..c97ac63 100644
--- a/runtime/python/http/server.py
+++ b/runtime/python/http/server.py
@@ -4,6 +4,7 @@
import uuid
import aiofiles
+import ffmpeg
import uvicorn
from fastapi import FastAPI, File, UploadFile
from modelscope.utils.logger import get_logger
@@ -104,7 +105,7 @@
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,33 @@
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