File size: 1,061 Bytes
b295d06
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from pathlib import Path
import numpy as np
from lib.utils import Timer
from s2ts import S2TS
from s2ts import TaskExecInfo as CTaskExecInfo

MODEL_DIR = Path(r"D:\yujuan\yoyo-translator-win\models\funasr")

class FunAsrOv:
    def __init__(self, model_dir=MODEL_DIR):
        with Timer("load FunASR"):
            self.instance = S2TS()
            ret = self.instance.start_fun_asr(f'{model_dir}/model_files', f'{model_dir}/punc', f"{model_dir}/hotword.bin")
            print(f"model load {'success' if ret else 'failed'}")
        self._warm_up()
    def _warm_up(self):
        fake_audio = np.random.randn(16000).astype(np.float32)
        self.transcribe(fake_audio)

    def transcribe(self, audio: np.ndarray):
        task_info = CTaskExecInfo()
        task_info.audio_data = audio.tolist()
        task_info.audio_language = "zh"
        with Timer("FunASR inference") as t:
            self.instance.put_asr(task_info)
            res: CTaskExecInfo = self.instance.get_asr(0)
        return "".join(word.text for word in res.words), t.duration