Skip to content

Commit

Permalink
Use ffmpeg read data (#1349)
Browse files Browse the repository at this point in the history
* support funasr 1.0

* update docs

* use ffmpeg, add sentences field

---------

Co-authored-by: zhifu gao <zhifu.gzf@alibaba-inc.com>
  • Loading branch information
yeyupiaoling and LauraGPT authored Feb 2, 2024
1 parent 85c0838 commit c2f174c
Showing 1 changed file with 31 additions and 5 deletions.
36 changes: 31 additions & 5 deletions runtime/python/http/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -121,10 +122,35 @@ async def api_recognition(audio: UploadFile = File(..., description="audio file"
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:
# 解析识别结果
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__':
Expand Down

0 comments on commit c2f174c

Please sign in to comment.